Справочник MQL4

События клиентского терминала

Init

Сразу же после того, как клиентский терминал загрузит программу (эксперт или пользовательский индикатор) и запустит процесс инициализации глобальных переменных, будет послано событие Init, которое обрабатывается функцией OnInit(), если она есть. Это событие также генерируется после смены финансового инструмента и/или периода графика, после перекомпиляции программы в редакторе MetaEditor, после смены входных параметров из окна настройки эксперта или пользовательского индикатора. Советник также инициализируется после смены счета.

Deinit

Перед деинициализацией глобальных переменных и выгрузкой программы (эксперт или пользовательский индикатор) клиентский терминал посылает программе событие Deinit. Событие Deinit также генерируется при завершении работы клиентского терминала, при закрытии графика, непосредственно перед сменой финансового инструмента и/или периода графика, при удачной перекомпиляции программы, при смене входных параметров, а также при смене счета.

Причину деинициализации можно получить из параметра, переданного в функцию OnDeinit(). Выполнение функции OnDeinit() ограничивается 2.5 секундами. Если за это время функция не закончила свою работу, то ее выполнение завершается принудительно.

Start

Событие Start – это специальное событие для активизации скрипта после его загрузки. Это событие обрабатывается функцией OnStart. Событие Start экспертам и пользовательским индикаторам не посылается.

NewTick

Событие NewTick генерируется при поступлении новых котировок и обрабатывается функцией OnTick() у присоединенных советников. Если при поступлении новой котировки выполнялась функция OnTick, запущенная на предыдущей котировке, то пришедшая котировка будет проигнорирована советником, так как соответствующее событие не будет поставлено в очередь событий эксперта.

Все пришедшие во время выполнения программы новые котировки программой игнорируются до тех пор, пока не завершится очередное выполнение функции OnTick(). После этого функция будет запущена только после прихода очередной новой котировки.

Событие NewTick генерируется независимо от того, запрещена или разрешена автоматическая торговля (кнопка "Разрешить/запретить Авто-торговлю"). Запрет автоматической торговли означает только запрет на отправку торговых запросов из эксперта, работа эксперта не прекращается.

Запрет автоматической торговли путем нажатия на указанную кнопку не прерывает текущее выполнение функции OnTick().

Calculate

Событие Calculate генерируется только для индикаторов сразу после посылки события Init и при любом изменении ценовых данных. Обрабатывается функцией OnCalculate.

Timer

Событие Timer периодически генерируется клиентским терминалом для эксперта, который активизировал таймер при помощи функции EventSetTimer. Обычно эта функция вызывается в функции OnInit. Обработка события Timer производится функцией OnTimer. При завершении работы эксперта необходимо уничтожить созданный таймер при помощи EventKillTimer, которую обычно вызывают в функции OnDeinit.

Tester

Событие Tester генерируется по окончании тестирования эксперта на исторических данных. Обработка события  Tester производится функцией OnTester().

ChartEvent

Событие ChartEvent генерируется клиентским терминалом при работе пользователя с графиком:

нажатия клавиатуры, когда окно графика находится в фокусе;

создание графического объекта;

удаление графического объекта;

щелчок мыши на графическом объекте, принадлежащего графику;

перемещение графического объекта при помощи мыши;

окончание редактирования текста в поле ввода графического объекта LabelEdit.

Также существует пользовательское событие ChartEvent, которое может послать эксперту любая mql4-программа при помощи функции EventChartCustom. Событие обрабатывается  функцией OnChartEvent.

Смотри также

Функции обработки событий, Выполнение программ