EventSetMillisecondTimer

Указывает клиентскому терминалу, что для данного эксперта или индикатора необходимо генерировать события таймера с периодичностью менее одной секунды.

bool  EventSetMillisecondTimer(
   int  milliseconds      // количество миллисекунд
   );

Параметры

milliseconds

[in]  Количество миллисекунд, определяющее периодичность возникновения событий от таймера.

Возвращаемое значение

В случае успешного выполнения возвращает true, иначе - false. Для получения кода ошибки нужно вызвать функцию GetLastError().

Примечание

Эта функция предназначена для тех случаев, когда требуется таймер высокого разрешения, то есть нужно получать события таймера чаще, чем один раз в секунду. Если вам достаточно обычного таймера с периодом более 1 секунды, то используйте EventSetTimer().

В общем случае при уменьшении периода таймера увеличивается время тестирования, так как возрастает количество вызовов обработчика событий таймера. При работе в режиме реального времени события таймера генерируются не чаще 1 раза в 10-16 миллисекунд, что связано с аппаратными ограничениями.

Обычно эта функция должна вызываться из функции OnInit() или в конструкторе класса. Для того чтобы обрабатывать события, приходящие от таймера, эксперт или индикатор должен иметь функцию OnTimer().

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

Для каждой программы может быть запущено не более одного таймера. Каждая mql5-программа и каждый график имеют свою собственную очередь событий, куда складываются все вновь поступающие события. Если в очереди уже есть событие Timer либо это событие находится в состоянии обработки, то новое событие Timer в очередь mql5-программы не ставится.