MT5 - OnTimer() - прерывает выполнение текущего события

 
EventSetMillisecondTimer(50);

void OnTimer()
{
//тяжелый код который выполняется больше 50ms
}

вопрос: если очередное событие таймера не закончело работу будет ли вызвано следующее событие?

 

у меня в MT5 работает так: прерывает выполнение текущего события и вызывает следующее 

 
Нет.
 
fxsaber:
Нет.
а что произойдет?
 
Pavel Kolchin:
а что произойдет?
Будет вызван следующий OnTimer после завершения предыдущего.
 
Pavel Kolchin:

вопрос: если очередное событие таймера не закончело работу будет ли вызвано следующее событие?

 

у меня в MT5 работает так: прерывает выполнение текущего события и вызывает следующее 


https://www.mql5.com/ru/docs/runtime/running

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Pavel Kolchin:

вопрос: если очередное событие таймера не закончело работу будет ли вызвано следующее событие?

 

у меня в MT5 работает так: прерывает выполнение текущего события и вызывает следующее 


Не должно быть так, неверно логгируете

 
Ренат как-то разъяснял, что программы MQL4/5 - однопоточные. Поэтому до тех пор, пока обрабатывается одна функция, другая функция не будет вызвана. Неважно, обработчик события это или нет.
 
Ihor Herasko:
Ренат как-то разъяснял, что программы MQL4/5 - однопоточные. Поэтому до тех пор, пока обрабатывается одна функция, другая функция не будет вызвана. Неважно, обработчик события это или нет.

Вообще-то, однопоточность тут не при чем. Программы MQL не являются самостоятельными приложениями, например, как программы в Windows. Это просто набор функций OnTick(), OnTimer() и т.д., которые дергает рантайм терминала.

Так что вопрос в том, как он дергает и с каким приоритетом. По таймеру - пока выполняется OnTimer(), другое событие Timer в очередь событий не добавляется, выше была ссылка на доку, там это написано.  

 
Разобрался, в очередном событии таймера отправлял сделку, в следующем событии скрипт проверяет, сделки нет, отправляет еще одну, а оказывается сервер просто не успевал прислать ответ о совершении сделки и в терминале она не числилать
 
Alexey Volchanskiy:

Вообще-то, однопоточность тут не при чем. Программы MQL не являются самостоятельными приложениями, например, как программы в Windows. Это просто набор функций OnTick(), OnTimer() и т.д., которые дергает рантайм терминала.

Думаю, Ренат может крепко поспорить с Вами на этот счет. ))) Он неоднократно позиционировал программы MQL4/MQL5 именно как самостоятельные приложения с ресурсами и пр. 

 
Ihor Herasko:

Думаю, Ренат может крепко поспорить с Вами на этот счет. ))) Он неоднократно позиционировал программы MQL4/MQL5 именно как самостоятельные приложения с ресурсами и пр. 

Это вопросы терминологии, пусть называет их как угодно ). 
Причина обращения: