Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1392

 

Приветствую. Подскажите пожалста.

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

Отсюда вопрос: какое время выполнение OnTick() считается нормальным, а какое уже большим?

 
И еще вопрос: в советнике есть торговля по алгоритму и графическое оформление. Возможно ли организовать приоритет торговых алгоритмов над визуальным оформлением? И если да, то как?
 
Andrey Sokolov:

Приветствую. Подскажите пожалста.

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

Отсюда вопрос: какое время выполнение OnTick() считается нормальным, а какое уже большим?

Зависит от инструмента. Если между тиками всего 3-5 миллисекунд, то и выполнние OnTick() желательно не дольше. А есть такие инструменты где тики идут с задержкой до 1 секунды, а то и больше…

 
Andrey Sokolov:
И еще вопрос: в советнике есть торговля по алгоритму и графическое оформление. Возможно ли организовать приоритет торговых алгоритмов над визуальным оформлением? И если да, то как?

А это визуальное оформление меняется на каждом тике? Может его достаточно в OnInit() вставить?

 
Alexey Viktorov:

А это визуальное оформление меняется на каждом тике? Может его достаточно в OnInit() вставить?

Там разные подсчеты в панельке и объекты на графике которые изменяются.


Если во время выполнения OnTimer() происходит новый тик то что и в каком порядке выполняется?

 
Andrey Sokolov:

Там разные подсчеты в панельке и объекты на графике которые изменяются.


Если во время выполнения OnTimer() происходит новый тик то что и в каком порядке выполняется?

В порядке очереди
 
MakarFX:
В порядке очереди

Если не секрет, можно ссылку на источник информации?

Есть сомнение что OnTick() в таком случае выполнится.

 
Andrey Sokolov:

Если во время выполнения OnTimer() происходит новый тик то что и в каком порядке выполняется?

ни в каком

если во время сложных расчетов внутри функции OnTimer() или OnTick() поступило новое событие, то оно будет пропущено

поиском по форуму "пропуск тиков" должно найтись обсуждение и админы неоднократно писали

кстати в МТ4 для синхронизации с новыми тиковыми данными и существовала RefreshRates()  - может и в справке про эту функцию быть упоминание о пропуске тиков

 
Andrey Sokolov:

Если не секрет, можно ссылку на источник информации?

Есть сомнение что OnTick() в таком случае выполнится.

Andrey Sokolov:

Там разные подсчеты в панельке и объекты на графике которые изменяются.

Если во время выполнения OnTimer() происходит новый тик то что и в каком порядке выполняется?

Если идет выполнение OnTimer() , то все остальное в очередь, кроме нового OnTimer() - он пропускается.

У меня была похожая ситуация, поставил OnTimer() перед OnTick() и запустил EventSetMillisecondTimer(100)

В итоге решил свой вопрос

 

Igor Makanu,  MakarFX, Кто же из вас прав? Давайте попробуем найти описание и выяснить. Когда-то видел, но целый день не могу найти.


Еще подскажите, пожалста: если терминале несколько советников, то в каком порядке они будут обрабатывать тики, если их обработка занимает больше времени чем пауза между тиками?

Причина обращения: