Nikolay (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 19 След.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Да, DS - это таблица (класс) (в LUA всё таблицы), но там только методы и недокументированные переменные. Сами данные получаются через эти методы.

Что касается организации замыкания, то я никогда не понимал зачем в учебных примерах, предоставляемых ARQA, настройки и DS передаются в метод расчета на каждой итерации. Когда более логично их передать один раз при вызове конструктора экземпляра. Они будут запомнены через upvalue и никуда не денутся. Сам метод расчета требует только индекс бара (и что еще, если алгоритм требует), и не более.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Зачем здесь очередь? Какую задачу надо решить, что нужна именно очередь? Нужен простой массив или кольцевой буфер (что тоже массив). И как сам DS влияет на занимаемую память? DS ничего не хранит - это интерфейс к данным, а не сами данные, и поэтому один тот же DS, одного и того же инструмента, можно использовать в различных расчетах.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Я, кажется, уже писал Вам, что почти все индикаторы не требую хранения данных более чем период расчета. А у еще большего числа индикаторов таки вообще достаточно хранения данных на прошлой итерации, как, например, у EMA.
Поэтому, для начала, просто произведите оптимизацию расчетов. Большинство примеров из просторов глобальной помойки, совершенно не заботятся о том, что баров может быть под 60 тыс, и экземпляров расчета от 100 и более.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Какое-то странное обсуждение. Если это оперативные данные, то, чаще всего, их не так и много, если, конечно, это не данные модели, которые лучше в памяти держать.
Думаю, что здесь задача тривиальная - хранить какие-то простые данные для работы скрипта. И уж как организовать их хранение не столь важно, важно, чтобы они было доступны, просто получаемые, без лишних поисков.

А обезличенные сделки - зачем их держать в памяти? Прочитал партию - записал в файл, базу данных, передал в socket. Все, забыли. Либо произвели агрегацию, вычисления и храним только данные расчета, сами-то ВСЕ сделки зачем хранить.
Тормоз подключения тиков
 
Думается, что это проблема выбора реляционной базы для хранения данных (правда мой опыт обработки всех сделок, всех акций за 2016 год на MsSQL не вызывал каких-то проблем, кроме объема, но это год). Хотя организовать порционную подачу данных вполне можно. Заказали - начинают поступать данные. Если же сделано, что сначала все данные подготавливаются, кешируются и только потом выдаются всем объемом, то, наверно, это и приводит к таким задержкам. Плюс, видимо, у таких данных очень низкий приоритет, так что не во все пакеты попадают.  
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:

Вы очереди перебираете в цикле, цикл идет с какой то определенной задержкой на исполнение.
Корутины имеют накладные расходы. Внимательно посмотрите на код решения, что Вы используете, и Вы увидите там точно такой же цикл опрашивающий корутины.
Что касается быстрых и медленных задач, то они реализуются одинаково. У них разное время выполнения, поэтому одна завершится быстро, другая будет долго выполняться, а какая-то будет вообще всегда работать. Техническая же реализация - это в одном случае Вы их заворачиваете в корутину через wrap, а в другом реализуете более сложный объект, точно так же хранящий свое состояние. А уже какая будет скорость работы самого этого объекта, корутины - сами и определяете. Я не вижу никакого смысла добавлять какие-то задержки в исполнение, что в одном случае, что в другом. Также как и нет никакого смысла перебирать объекты, корутины с задержкой. Единственная задержка добавляется в бесконечный цикл в main, и то, потому что иначе Квик зависнет.
Вот и вся разница. Используйте, никто не мешает. Но не надо говорить о многопоточности, многозадачности и т.д.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Нет нельзя, это две задачи исполняемые с разными скоростями.
В моем примере функция Trade() имеет свой внутренний цикл без всяких ограничений.
Скорости здесь ни причем. Раз сделано так в этом решении, не значит что так нельзя сделать. Я вместо корутин использую очереди задач и переход от одной к другой, управляя этим. Надо в одной задаче подождать дольше - идем дальше. Можно было бы сделать через корутины - да. Но в моем случае проще сделать иначе. Корутины же хороши в качестве генераторов для итераторов, да.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Странное обсуждение. Корутины в lua - это синхронные вытесняющие сопрограммы. Т.е. никакой многопоточности здесь нет. Если бы была, то пришлось бы в язык вводить многие другие элементы, отвечающие за синхронизацию.
А так - это просто такая методика замыкания состояния окружения функции. И все это можно воспроизвести на обычном цикле, опрашивая методы-объекты: готово - выполни это, нет - ждем дальше.
Они удобны - да, но сказать, что без них нельзя - нет.
Баг документации - нет актуальных названий параметров param_name в getParamEx
 
Подниму тему. Необходимо получить данные по календарным спредам. Набор параметров для них хоть и близок, но другой. Для примера, две даты эксприации.
Но вот незадача - у меня нет Excel и нет желания его устанавливать. Тем более, что он платный. Украсть просьба не предлагать. А получить иначе набор параметров Вы не предлагаете. Собственно вопрос:  как быть?
Я воспользуюсь, конечно, библиотеками, соберу DDE сервер. Но это не решение вопроса. Неужели так сложно обновлять информацию в документации? У Вас теперь релизы терминала выходят чаще, чем этот набор параметров изменяется.
И я банально не понимаю причины, почему это не делается.
Грядущие изменения на срочном рынке МБ: поддержка работы с 19-значными номерами заявок и сделок
 
Раз уже здесь писали об ошибках потоков...
Поймал ошибку, видимо ошибка потоков. Версия 11.0.0.92, lua 5.4

Обрыв связи, восстановление. Заново приходят все коллбеки с начала сессии до момента разрыва связи (здесь сразу вопрос - как бы это отключить?). В этот момент алгоритм находиться в цикле, перебирая некую таблицу.
По логу вижу, что есть сообщение колбека, есть сообщения из цикла. И в какой-то момент цикл разрушается - получает данные из другой области памяти. Итеративная переменная 10, а получены данные по индексу 20, например.
Или еще хуже - получены данные из совсем другой таблицы.

Воспроизвести не могу, но явно что-то случилось с стеком, при работе двух потоков.
Друзья, как полностью очистить массив в LUA ? Команда my_array={} не помогает
 
Это одновременно и простой и сложный вопрос. Таблицы в луа это ссылочный объект.
Т.е. запись my_array ={} создает новый объект - объявляет и инициализирует. В переменной будет новая ссылка, а старая безвозвратно утеряна, и очищена сборщиком мусора, если на нее не было больше ссылок.

Поэтому, если вопрос: как очистить существующий объект, то ответ - пройтись циклом и присвоить nil для ключей, индексов.А запись my_array ={} "как бы" очищает, да. Но при этом будет новая ссылка и если есть блоки кода, хранящие ссылку на my_array, то они не увидят новую, без повторного присвоения.
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
Проверьте все задаваемые параметры в документации или здесь https://luaq.ru/AddLabel.html
Например, нет такого параметра datetime. Также имена параметров регистрозависимые.
Учусь работать с метками, Помощь в написании кода для выставлении меток на графике
 
Сигнатура вызова NUMBER AddLabel(STRING chart_tag, TABLE label_params)

Первый параметр - это строка.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Как показывает история, программисты сами себе не делают Продукт, а делают костыли. Чтобы сделать продукт одних программистом мало. А капитализация не имеет никакого отношения к этому. Есть компании с огромной капитализацией, но польза от них ничтожна.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
luac54.exe -s -o "*.luac" "*.lua"

Это убирает debug информацию.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Поставил уже на верно лет 20 назад (когда там 5.1 вышло), накидал разного сервиса и забыл как лезть в него.
Ну это дело такое - когда-то turbo pascal был чудесен. Или, для примера, Emacs, как среда  разработки, - великолепна. И до сих пор великолепна. Так что SciTE - это такой же новодел как VSCode.

Цитата
luac54.exe -o "*.luac" "*.lua"

А лучше добавить параметр -s. Правда если цель - писать скрипты для себя и только для себя, то зачем вообще компилировать. Квик это сам сделает перед запуском.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Кошек надо просто уметь готовить. VSCode - это просто среда. Все компилируется в терминале скриптами, самим же lua (или любым другим bash). Зачем для этого редактор - не ясно.
SciTE хорош, но, для примера, ZeroBrane Studio (по моему мнению) - лучше. Но она не умеет win1251.
Также советую проверить какую команду выдает SciTE для компиляции.  Скорее всего без -s, что оставит отладочную информацию и позволит декомпилировать код, если он компилировался в чистом виде.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
SciTE не использую, так что не знаю. После VSCode - особого желания нет.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Добрый день!

Хотя не знаю может в lua 5.4 не уже ограничения по количеству локальных переменных, но решил Вам оставить сообщение, сам не разбирался.
В lua 5.1 в исходном файле luaconf.h переменная LUAI_MAXUPVALUES = 60. Хотя можно увеличить до 250 и скомпилировать свою dll. Хотя Квик и не даст с ней работать. В lua 5.3 кажется увеличили это число.
Было бы конечно хорошо, если бы OnCalculate давал возможность работать с таблицей, а не конкретными значениями, или как-то иначе задавать значения линий. Иначе большое число линий вызывает проблемы.
SetUpdateCallback и обнудение стека Lua
 
Цитата
Quikos_1 написал:

Видимо Вы просто не разу не пытались заказывать данные по инстурменту, который у Вас не открыт в Квике.
Нормальный терминал - это тот, где нет ни одного графика, может только таблицы, для оценки взглядом цифр. Все делает сам скрипт. Так что это нормальная практика - заказать данные, рассчитать все данные, принять решения.
SetUpdateCallback - очень неудобный колбек с точки зрения использования.

Во-первых, он вызывается на каждое изменение цены, даже внутри одного и того же бара. Если это необходимо отслеживать, то есть более удобные способы.
А если не надо, то проще самому обрабатывать данные, реагировать только если Size потока изменился.
Во-вторых, после заказа данных, он будет вызван для всех баров, начиная от 1. И опять - это проще сделать самому, перебрав данные в цикле.
Ну и, наконец, - он медленный.

Впрочем, дело вкуса, конечно.
Данные параметров BID, OFFER
 
Цитата
Anton Belonogov написал:
Для получения информации о наличии спроса или предложения по инструменту рекомендуем проверять значения параметров "Суммарный спрос" (biddeptht) / "Суммарное предложение" (offerdeptht).
Да, спасибо, как-то я про них не подумал.
SetUpdateCallback Опять косячит ?
 
В теории да. Но меня прямо коробит (без обид) такая запись. Переменная ds глобальная, объявляется где-то там.
В первом варианте анонимная функция хотя бы видит ее как up-value, а во втором - вся надежда на то, что она объявлена и инициализирована.

Хотя бы объявите переменную в самом начале кода.
Кодировка в таблицах Квика
 
Цитата
Станислав написал:
Больше двух лет не запускал своего робота и возникла в нем необходимость. При отображении таблиц робота вместо русских блов отображаются непонятные символы (СКИРН). Как исправить проблему?
Ничего с начала времен не изменилось - кодировка до сих пор ANSI win1251
Данные параметров BID, OFFER
 
Цитата
Kolossi написал:
Полагаю что при получении нуля по одному из двух параметров просто проверяется второй и его ненулевое значение однозначно говорит о том, что данные получены.
Да, но хотелось бы без бубна. Раз нулевые цены есть, значит значение 0, везде где это допустимо, должно быть таким же значимым. Это, кстати, также относится к параметру LAST, который после клиринга очень часто принимает значение 0.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Такая запись установит nil по индексу, а значит сборщик мусора освободит память. Но такая запись не позволит использовать типовой метод #.
Так что, если # необходимо, то либо использовать другие методы оптимизации, либо переопределить метаметод __len.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
На примере массива Price, т.к. я вижу где он используется.
Значения дальше P-1 уже не нужны. Поэтому вполне можно написать Price[index - P - 1] = nil.
Хотя алгоритм поиска экстремума за период иногда проще делать иначе, через unpack. (Правда для малых P - это не существенно).

Иногда проще не создавать массивы, а просто ввести переменные, постоянно изменяя значения. На примере той же EMA, если не надо иметь данные дальше чем прошлое значение, то достаточно ввести переменную, отвечающую за прошлое значение EMA, вместо массива.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Очередь - это просто такой массив, абстракция, не более. Вопрос применения. Где-то они необходимы, а где-то не нужны.
И так для каждой сущности, для каждой задачи выбирается оптимальное решение.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Мы один раз продумали структуру данных, а дальше через присвоение пользуемся - "по образу и подобию",
не задумываясь почему там таблица не обновилась, где ты там забыл переменную локализовать, + "синтаксический сахар".
Это просто удобно при использовании портфеля из бумаг.
Это, конечно, так. В теории. Если объект действительно детерминирован. Но, как обычно, примеры ООП из кошек, собак, животных - это просто примеры.
Но это также не отменяет простого подхода через вызов метода, возвращающего готовую структуру. Тоже вызвал, получил экземпляр нового объекта.
Данные параметров BID, OFFER
 
Есть два параметра таблицы текущих торгов - BID, OFFER.
Вопрос разработчикам - правильно ли я понимаю, что при отсутствии с одной из сторон данных (планка) будет возвращен 0 в качестве значения?  Либо result будет "0", сообщающий, что данные не получены?
Если просто 0, то как тогда это соотносится с возможностью нулевых цен для части инструментов. Не хотелось бы опрашивать стакан для такой простой задачи
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Как я сказал выше - я не использую Дзен. Да и зачем, когда есть GitHub, GitHub Pages.
Как выставить заявка на РЕПО 1 день ??
 
https://public.arqa.ru/forum10/topic2630/
https://forum.quik.ru/forum10/topic476/?ysclid=lpmej3s3a3473964999
Как выставить заявка на РЕПО 1 день ??
 
У транзакции есть параметр:
EXECUTION_CONDITIONУсловие исполнения заявки, необязательный параметр. Возможные значения:

«PUT_IN_QUEUE» – поставить в очередь (по умолчанию),

«FILL_OR_KILL» – немедленно или отклонить,

«KILL_BALANCE» – снять остаток

Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Область видимости это как минимум 3 блока, если записать так

Причем здесь три блока, и почему три? Область видимости - это конкретное определение. Это может быть весь контекст файла, может быть функция, может область do end, цикл и др. Каждый раз - это конкретный пример, и нет магического значения числа блоков. В книге автора языка есть целый раздел посвященный локальным переменным.
Цитата

Код
   do  
     local  a =  1 
 end 
  
то она не очистится, получается так?

Очиститься, а точнее, цитируя: "локальная переменная перестает существовать, как только заканчивается ее область видимости, позволяя сборщику мусора освободить память, занимаемую ее значением". Блок же закончился. И в вышеупомянутой книге - это описывается.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Nikolay, Спасибо, Вы как всегда лаконичны!

Посмотрел Вас на дзене, кое что интересного нашел для себя, переделаю работу со временем.

Касаемо памяти, выше я привел пример индикатора, это основной мой подход,
он написан так чтоб можно было использовать и торговом алгоритме без переделок, так  я и делаю.
Нет я конечно понимаю что там есть область констант которые будут накапливаться,
да еще передача целого массива данных, она хоть и локальна но все равно растет, особенно на малых тайм фреймах.

Можете здесь что то посоветовать, в организации переменных и их очистке?
Я собственно начинал эту веточку с организации очередей, но Вы и Владимир не советовали с этим связываться?
Я не использую Дзен, так что, видимо, это не про меня.

Что касается примера, основной вопрос - зачем? Какую задачу это решает. Создавать объект ради объекта - это тупиковый путь, хоть и популярный лет 20 назад. А во многих языках даже обязательный.
Но это не относится к Lua. Да, здесь многое завязано на таблицы, если не почти все, если считать _G. Но это не значит, что нет других объектов first class citizen.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Но все это лирика,
а вот организация структуры данных в программе, оказывается не простым делом в луа.
В очередной раз поймал утечку памяти в скрипте. 1000кВ на старте до 30000кВ на конец дня  
Такое поведение, раньше замечалось при наличии ошибки в программе, которую луа по какой то причине пропускает.

Прислушался к автору, "Таблицы в Lua — это не одна из структур данных, — это единственная структура данных.",
перевожу все переменные в формат таблицы луа,
не знаю поможет?
Нет особой проблемы с утечками. Основные утечки могут быть с неконтролируемым ростом массивов (таблиц), которые являются глобальными или захваченными в замыканиях.
Локальные переменные по выходу из области видимости (функции, например) уничтожаются сборщиком мусора.

Чаще всего я встречаю проблемы расчета алгоритмов на всем диапазоне баров. Создаются таблицы для хранения конечных данных, так и вспомогательных. Но при этом не учитывают, что они не все нужны. Например, для расчета EMA, нужно одно прошлое значение. Но чаще всего хранят все данные. Они, конечно, может и нужны, но чаще всего не на всем диапазоне. А в более сложных алгоритмах таких массивов будет много, и если баров, скажем 60 тыс, то все это остается в памяти.

Цитата
Другая проблема локальная переменная внутри блока не обновляется, помнит свое первое значение,
в формате таблицы обновляется в качестве локальной нет? Кто то знаком с такой проблемой?
Без примера, сложно что-то ответить. Любая переменная доступна для изменения в своей области видимости.
Индикатор по двум инструментам., Возможность создания индикатора в расчете которого используются значение цены с двух инструментов.
 
Квик не дает выводить линии в виде свечей, баров во внешних индикаторах, хотя, как ни странно, такой тип линии есть.
Была идея выводить точки, разной толщины через небольшой шаг, тем самым имитируя свечку - но это если очень-очень надо.
Обезличенные сделки. Подписка/отписка
 
После смены даты много чего происходит - теперь индексы установленных меток еще изменяются. Такое ощущение, что какой-то колбек, например OnCleanUp, теперь приводит к такому-же эффекту как старт с нуля терминала.
Цитата
Close() из меню подписку не убирает

Т.к. подписка на тиковые данные добавляет, то закрытие должно удалять. Иначе это надо рассматривать как ошибку утечки памяти.
Обезличенные сделки. Подписка/отписка
 
В теории да, я так тоже делаю. Правда не советую так ждать прихода данных. Тиковые данные могут приходить долго, очень долго.
В прошлых версиях данные приходили и без открытой таблицы обезличенных сделок. В текущих - уже нет, по крайней мере, по моим наблюдениям.
Отписаться как и от обычного потока данных - закрыть. Собственно Вы это и делаете OnStop. Хотя, если говорите, что не убирается (как я понял), то, возможно, что-то опять изменилось между версиями. В последнее время мажорные релизы выходят как кролики.
Не работает скомпилированный cURL для QUIK (Lua-cURLv3), но работает в простом lua-интерпретаторе
 
Цитата
funduk написал:
Всё, что в luarocks компилится для квика, должно линковаться с квиковской же lua54.dll
Я бы не сказал, что все. По крайней мере, когда я собирал аналогичный комплект под lua 5.1, то все это делалось под чистым lua и работало в терминале без проблем.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
И тут не все благополучно, поджидают  подводные камни, так как время открытия бара разное на разных тф. на клиринге расходится. Уже молчу про выпадающее бары.
А это здесь уже не важно. Время открытия бара это данность. Если бар есть, то и время есть. Если бара нет, то это пустой бар и надо просто взять ближайший. Все зависит от необходимой методики определения.
Если надо определить индексы баров для времени 10:13, то для минутки это будет точное совпадение. Для 2-ух минут - бар 10:12. Для трех, четырех тоже  - 10:12. Для 5-и 10-и минут 10:10. Для 30 минут часа 10:00. Для двух часов зависит от кратности часа. И т.д. Всегда можно найти ближайшей бар к искомой точке.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Алгоритм мне понравился, нужно привыкнуть и погонять, пока смущает сложность,
Вы сами в самом начале писали про надежность.
Я несколько скриптов бросал с хорошими идеями из-за сложности, поиск ошибок занимает значительное время, теперь все упрощаю, что бы было понятно с первого взгляда.
Да, надежность важна. Но она тоже не должна быть избыточной. Как я написал выше - самый надежный, и самый простой вариант - это циклом пройтись от первого или последнего бара, проверяя время каждого бара. Как только оно пересечется с искомым - вот он ваш индекс. Но сложность этого алгоритма линейна. Впрочем, для данных Квика, наверно, этого достаточно. Очень редко когда число бар больше 10 тыс. Вот если их существенно больше и надо часто искать, то надо думать о снижении сложности.


Отлаживать не так и сложно, если в необходимых местах осуществлять проверки на тип данных, сами данные. Выводит отладочную информацию в лог. Сразу будет видно, где что не так.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Понятно, написал и забыл не получится покрупней мере у меня  

А что делать с ценной открытия, это даже не техническая ошибка.
Не хочется таких слов произносить, но другие не находятся - это выглядит как "прямая манипуляция рынком".
Но это уже вопрос к разработчикам?
Как такое возможно?
Ну так все зависит от задачи. Алгоритм простой. Можно все еще проще сделать. Просто циклом бежать от последнего к первому бару и найти тот, где время входит в бар.
Уж проще некуда. Если бар есть, а его может не быть, то у него есть данные.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Я же написал, что это упрощенный вариант. Выше писал, что надо учитывать ситуации когда искомая точка находится внутри бара. В данном случае время 09:00 будет внутри бара 08:00-10:00.
Т.е. надо добавлять еще проверку на границы, останавливаться когда одна из границ это начало искомого бара.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Не чего себе простейшая? Прокомментируйте пожалуйста ф. обратного вызова. Не понимаю откуда возникают gthtvtyyst bi, ei ?
Это элементарная рекурсия. Есть первый вызов с 1 и ds:Size(). А потом каждый раз делится пополам интервал.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:Nikolay написал:
Цитата
Двоичный поиск вполне быстро найдет его, надо просто перейти на числовое представление времени (unix time).
А можно пример.

Вот простейшая реализация

Код
local function is_date(val)
    if type(val) ~= "table" then return false end
    local status = pcall(function() return os.time(val); end)
    return status
end

local function get_time_index(ds, time)
    local bs
    function bs(bi, ei)
        local i2 = math.ceil((ei-bi)/2) + bi
        while not is_date(ds:T(i2)) and i2 < ei do
            i2 = i2+1
        end
        if not is_date(ds:T(i2)) then return end
        local t = os.time(ds:T(i2))
        if ei - bi == 1 then return ei, ds:T(ei) end
        if t > time then return bs(bi, i2) end
        if t < time then return bs(i2, ei) end
        return i2, ds:T(i2)
    end
    return bs(1, ds:Size())
end

local ti = get_time_index(ds, os.time({hour = 9, min = 33, sec = 0, day = 1, month = 11, year = 2023})

Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
nikolz написал:

В этой статье есть много ошибочных утверждений.
---------------------------
Основное из которых то, что на фондовом рынке действует нормальный закон плотности вероятности цены.
-------------------------
Более того, еще в прошлом веке доказали, что нормальный закон редко встречается в природе, т е в реальности.
-------------------------------
В результате этого появилась теория и методы робастного оценивания.
С этим не поспоришь. Но статья, кажется, не о будущей цене актива и вероятности этого события, а о статистическом анализе последовательности совершенных сделок.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Цитата
Nikolay написал:
Ну ее нет, так что надо её написать и забыть.
Например?
Не очень понятна проблема. Есть точка времени, есть массив времен. Все это натуральные числа os.time(ds:T(index)).
Т.е. все сводится к простой задаче - найти индекс в массиве с нужным числом. Как выше написал - двоичный поиск быстро найдет. Правда, конечно, функция сравнения должна быть не на равенство, а на вхождение искомой точки в диапазон бара. Например для 10 минутных баров, точка времени 10:03.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Ну если еще обобщить вопрос,
если можно найти параметры свечей по индексу, то должна быть и обратная функция поиска индекса по времени и дате?
Ну ее нет, так что надо её написать и забыть.

Что касается математической оценки серии сделок, то это тоже давно все формализовано. Вот, для примера, https://www.mql5.com/ru/articles/1492
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Ну это, видимо, современная деформация, когда слово самообучение воспринимается как AI. Хотя та же кластеризация ( которой уж сколько лет) тоже накапливает данные и "как бы" учится.
Очереди и двойные очереди в луа, Пример из книги Р.Е.
 
Цитата
VPM написал:
Nikolay,  Собственно поэтому я и пытаюсь более детально описать подход и загвозки связанные с ним.

Вы не поняли, нет никакого обучения не какого AI даже не четкую не применяю, все максимально упрощено. сам алгоритм описан выше.
Подход "система нескольких окон" заключается беру дневную свечу и внутри дня прогоняю меньшие таймфреймы,
к примеру 1 час как цена распределялась за день, таймфрейм к примеру 1 минута внутри одного часа и т.д.

Стратегия входов и выходов это преодоление пороговых значений. Какая здесь может быть подгонка прогоняю 5 дней.
Статистику считаю по сделкам.

Касаемо стационарности я имел ввиду привидение к нормальному распределению входных данных (цены).
Описывать не чего все давно описано. Я лишь говорю про подход.
Нормальное распределение является стационарным?
Я и не советую никакой AI. Если задача просто посмотреть что получилось и ничего с этим не делать, то и нет проблем. Задача простая.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 19 След.
Наверх