Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Изучаешь MQL5? Начни с документации!
Alexey Volchanskiy
14036
Alexey Volchanskiy 2016.03.07 07:25 

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

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

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

Alexander Bereznyak
19922
Alexander Bereznyak 2016.03.07 08:05  
Таймер в скриптах не работает, он не вызывается.
Artyom Trishkin
68686
Artyom Trishkin 2016.03.07 08:21  

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

OnTimer

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

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

void OnTimer();

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

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

Alexander Bereznyak
19922
Alexander Bereznyak 2016.03.07 08:49  
Справка не рулит. При создании скрипта, функция таймера не предлогается к созданию, в отличии от советника и индикатора.
Artyom Trishkin
68686
Artyom Trishkin 2016.03.07 09:07  
Alexander Bereznyak:
Справка не рулит. При создании скрипта, функция таймера не предлогается к созданию, в отличии от советника и индикатора.

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

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

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

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

Alexey Volchanskiy
14036
Alexey Volchanskiy 2016.03.08 01:55  

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

Успехов! 

Alexander Bereznyak
19922
Alexander Bereznyak 2016.03.08 06:51  
О каких не документированных возможностях идет речь?
Alexey Volchanskiy
14036
Alexey Volchanskiy 2016.03.08 11:54  
Alexander Bereznyak:
О каких не документированных возможностях идет речь?
Я неточно написал, в скриптах таймер и правда запрещен

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