Скачать MetaTrader 5

Вопрос по таймерам в МТ4

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

Друзья, некогда проводить эксперименты, может, кто пробовал?

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

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

Alexander Bereznyak
24016
Alexander Bereznyak  
Таймер в скриптах не работает, он не вызывается.
Artyom Trishkin
Модератор
85953
Artyom Trishkin  

Справка не рулит разве?

OnTimer

Функция OnTimer() вызывается при наступлении события Timer, которое генерируется системным таймером только для экспертов и индикаторов – использовать ее в скриптах нельзя. Периодичность наступления этого события устанавливается при подписке на получение функцией EventSetTimer() уведомлений о событии Timer.

Отписывание от приема посылки событий таймера для конкретного эксперта производится функцией EventKillTimer(). Функция должна быть определена с типом void, параметров не имеет:

void OnTimer();

Рекомендуется вызывать функцию EventSetTimer() однократно в функции OnInit(), а функцию EventKillTimer() вызывать однократно в OnDeinit().

Каждый эксперт и каждый индикатор работает со своим таймером, и получает события только от него. При завершении работы mql4-программы таймер уничтожается принудительно, если он был создан, но не был отключен функцией EventKillTimer().

Alexander Bereznyak
24016
Alexander Bereznyak  
Справка не рулит. При создании скрипта, функция таймера не предлогается к созданию, в отличии от советника и индикатора.
Artyom Trishkin
Модератор
85953
Artyom Trishkin  
Alexander Bereznyak:
Справка не рулит. При создании скрипта, функция таймера не предлогается к созданию, в отличии от советника и индикатора.

Ну и что. Это не является прямым указанием на то, что таймер нельзя использовать.

Для примера: при создании индикатора, OnDeinit() тоже не создаётся, и не предлагается. Однако всегда приходится её вписывать самому. И далее можно использовать. Так что сложно полагаться однозначно на "предложили при создании, или не предложили".

А в справке явно указано, что таймер в скриптах использовать нельзя.

В контексте данного вопроса всё же справка рулит ;)

Alexey Volchanskiy
23011
Alexey Volchanskiy  

Всем откликнувшимся большое спасибо! Оставил все по старому, на Sleep, не люблю недокументированные возможности. Мало ли что в следующей версии MQ изменят, прыгай потом с бубном :) 

Успехов! 

Alexander Bereznyak
24016
Alexander Bereznyak  
О каких не документированных возможностях идет речь?
Alexey Volchanskiy
23011
Alexey Volchanskiy  
Alexander Bereznyak:
О каких не документированных возможностях идет речь?
Я неточно написал, в скриптах таймер и правда запрещен

Функция OnTimer() вызывается при наступлении события Timer, которое генерируется системным таймером только для экспертов и индикаторов – использовать ее в скриптах нельзя. Периодичность наступления этого события устанавливается при подписке на получение функцией EventSetTimer() уведомлений о событии Timer.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий