Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Добавляй наш канал в друзья и следи за новостями!
Vladimir Karputov
Модератор
45424
Vladimir Karputov 2016.10.11 12:38 
В эту тему были перенесены комментарии, не относящиеся к "Ошибки, баги, вопросы".
fxsaber
4398
fxsaber 2016.10.11 12:29  
fxsaber:

OnChartEvent может не срабатывать в индикаторе. К сожалению, воспроизвести это любой желающий не может пока, т.к. кодобаза еще не опубликовала индикатор. Если после этого индикатора запустить еще другой (например, этот), то у второго OnChartEvent срабатывать будет в редких случаях.

Предполагаю, что если в OnChartEvent у одного индикатора идет тяжелый расчет (несколько мс.), то у второго индикатора, когда до него доходит очередь, то ChartEvent-событие игнорируется. Хотя, это все равно не объясняет проблему.

Проблема проявляется только на бирже. На форекс все срабатывает. 

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

А чисто теоретически, как такое может быть? 

Vladimir Karputov
Модератор
45424
Vladimir Karputov 2016.10.11 12:39  

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2016.10.11 09:11

2016.10.10 16:27:45.066 Terminal        C:\Program Files\BCS Broker MetaTrader 5 Terminal
2016.10.10 16:27:45.066 Terminal        Windows 7 Ultimate (x64 based PC), IE 09.00, Intel Core i7-2700K  @ 3.50GHz, RAM: 11432 / 16301 Mb, HDD: 5856 / 30000 Mb, GMT+02:00
2016.10.10 16:27:45.066 Terminal        BCS Broker MetaTrader 5 Terminal x64 build 1445 started (BCS Broker)

OnChartEvent может не срабатывать в индикаторе. К сожалению, воспроизвести это любой желающий не может пока, т.к. кодобаза еще не опубликовала индикатор. Если после этого индикатора запустить еще другой (например, этот), то у второго OnChartEvent срабатывать будет в редких случаях.

Предполагаю, что если в OnChartEvent у одного индикатора идет тяжелый расчет (несколько мс.), то у второго индикатора, когда до него доходит очередь, то ChartEvent-событие игнорируется. Хотя, это все равно не объясняет проблему.

Проблема проявляется только на бирже. На форекс все срабатывает. 


fxsaber
4398
fxsaber 2016.10.11 13:47  
fxsaber:

А чисто теоретически, как такое может быть?

Приоритет выполнения тиковой очереди выше, чем приоритет индикаторной очереди. Это значит, что если за время выполнения On-функции пришел тик, то будет вызван еще один OnCalculate, а не произойдет возврат на другой индикатор в очереди.

Такая особенность "зацикливает" индикаторы (не передает управление другим индикаторам), которые выполняются медленней, чем приходят тики. Такие "зацикленные" индикаторы не производят впечатления зависших у пользователя.

Примерно оценить длину тиковой очереди по выходу из On-функции позволяет CopyTicks, поток выполнения которого не синхронизирован с индикаторным. За счет такого контроля возможно "расцикливание" тяжелых индикаторов.

fxsaber
4398
fxsaber 2016.10.11 15:34  
fxsaber:

Приоритет выполнения тиковой очереди выше, чем приоритет индикаторной очереди. Это значит, что если за время выполнения On-функции пришел тик, то будет вызван еще один OnCalculate, а не произойдет возврат на другой индикатор в очереди.

Такая особенность "зацикливает" индикаторы (не передает управление другим индикаторам), которые выполняются медленней, чем приходят тики. Такие "зацикленные" индикаторы не производят впечатления зависших у пользователя.

Примерно оценить длину тиковой очереди по выходу из On-функции позволяет CopyTicks, поток выполнения которого не синхронизирован с индикаторным. За счет такого контроля возможно "расцикливание" тяжелых индикаторов.

Это ошибочный вывод. Вот ответ из Сервисдеск

Апплай тиков имеет приоритет. Т.е. сначала процессинг тиков и только потом процессинг очереди.

Т.е. если индикатор безнадежно не успевает процессить поток тиков, то до процессинга очереди событий дело может не дойти.

Когда идет возврат после тяжелого индикатора, запускается следующий индикатор. Во время выполнения тяжелого образуется тиковая очередь, которую должен полностью отработать следующий индикатор. И если эта очередь велика, то до очереди событий (ChartEvent и т.д.) дело может не дойти. Т.е можно столкнуться с ситуацией, когда легкий индикатор не принимает ChartEvent-события из-за тяжелого индикатора.

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий