Если в эксперте присутствуют обе функции и во время обработки очередного тика генерируется событие таймера или наоборот во время работы OnTimer() приходит очередной тик, то что происходит ?:
- событие или тик пропускается и не обрабатывается
- обрабатывается после завершения текущей функции
- существует приоритет функций (одна может прерывать другую)
Можно, конечно, написать тестовый эксперт для проверки, но лучше услышать пояснения разработчиков.
До сегодняшнего дня (пока вопрос не был задан) с полной уверенностью полагал что работать будет по одному из первых двух вариантов.
Есть смутные сомнения что по первому, но надеюсь что поток событий последовательно обрабатывает все события (по крайней мере я надеюсь что события обрабатываются в очереди по схеме "Первый вошел, первый вышел")...
PS
Третий вариант, на мой взгляд, это что-то из научной фантастики - На основании чего одна функция должна прервать выполнение другой?
До сегодняшнего дня (пока вопрос не был задан) с полной уверенностью полагал что работать будет по одному из первых двух вариантов.
Есть смутные сомнения что по первому, но надеюсь что поток событий последовательно обрабатывает все события (по крайней мере я надеюсь что события обрабатываются в очереди по схеме "Первый вошел, первый вышел")...
PS
Третий вариант, на мой взгляд, это что-то из научной фантастики - На основании чего одна функция должна прервать выполнение другой?
Мы знаем, что пока не обработан очередной тик, вновь пришедшие тики игнорируются. Скорее всего, так же обстоит дело и с другими событиями. Но возможны варианты, как то очередь событий ...
По крайней мере с таймером обстоят дела именно так (пока код в OnTimer не выполнится новый вызов игнорируется)....
Логично предположить что выполнение обработка событий должно быть минимально короткой по времени.
При этом я склонен полагать, что в случае в случае выполнения рада событий длительность выполнения обработки OnTick должно быть минимальной и касаться только обработки "рабочего символа". Обработка OnTrade тоже должна быть не очень длинной, тут на мой взгляд нужно обрабатывать события связанные с действиями трейдера, а также те торговые события которые происходят на сервере (например: срабатывание SL и TP, а также события связанные со срабатыванием отложенных ордеров).
OnTimer при таком подходе должен обрабатывать периодические события. При этом мультивалютная обработка на мой взгляд должна вестись именно в OnTimer.
PS
Очень интересны решения по применению OnTimer в индикаторах, поскольку там свои таймеры (что может быть довольно удобным вариантом)...
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Если в эксперте присутствуют обе функции и во время обработки очередного тика генерируется событие таймера или наоборот во время работы OnTimer() приходит очередной тик, то что происходит ?:
- событие или тик пропускается и не обрабатывается
- обрабатывается после завершения текущей функции
- существует приоритет функций (одна может прерывать другую)
Можно, конечно, написать тестовый эксперт для проверки, но лучше услышать пояснения разработчиков.