- OnStart
- OnInit
- OnDeinit
- OnTick
- OnCalculate
- OnTimer
- OnTrade
- OnTradeTransaction
- OnBookEvent
- OnChartEvent
- OnTester
- OnTesterInit
- OnTesterDeinit
- OnTesterPass
OnChartEvent
Вызывается в экспертах и индикаторах при наступлении события ChartEvent. Функция предназначена для обработки изменений графика, вызванных действиями пользователя или работой MQL5-программ.
void OnChartEvent()
|
Параметры
id
[in] Идентификатор события из перечисления ENUM_CHART_EVENT.
lparam
[in] Параметр события типа long
dparam
[in] Параметр события типа double
sparam
[in] Параметр события типа string
Возвращаемое значение
Нет возвращаемого значения
Примечание
Существуют 11 видов событий, которые можно обрабатывать с помощью предопределенной функции OnChartEvent(). Для пользовательских событий предусмотрено 65535 идентификаторов в диапазоне от CHARTEVENT_CUSTOM до CHARTEVENT_CUSTOM_LAST включительно. Для генерации пользовательского события необходимо использовать функцию EventChartCustom().
Краткое описание событий из перечисления ENUM_CHART_EVENT:
- CHARTEVENT_KEYDOWN — нажатие клавиатуры, когда окно графика находится в фокусе;
- CHARTEVENT_MOUSE_MOVE — перемещение мыши и нажатия кнопок мыши (если для графика установлено свойство CHART_EVENT_MOUSE_MOVE=true);
- CHARTEVENT_OBJECT_CREATE — создание графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_CREATE=true);
- CHARTEVENT_OBJECT_CHANGE — изменение свойств объекта через диалог свойств;
- CHARTEVENT_OBJECT_DELETE — удаление графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_DELETE=true);
- CHARTEVENT_CLICK — щелчок мыши на графике;
- CHARTEVENT_OBJECT_CLICK — щелчок мыши на графическом объекте, принадлежащем графику;
- CHARTEVENT_OBJECT_DRAG — перемещение графического объекта при помощи мыши;
- CHARTEVENT_OBJECT_ENDEDIT — окончание редактирования текста в поле ввода графического объекта Edit (OBJ_EDIT);
- CHARTEVENT_CHART_CHANGE — изменения графика;
- CHARTEVENT_CUSTOM+n — идентификатор пользовательского события, где n находится в диапазоне от 0 до 65535. CHARTEVENT_CUSTOM_LAST содержит последний допустимый идентификатор пользовательского события (CHARTEVENT_CUSTOM+65535).
Все MQL5-программы работают в потоках, отличных от главного потока приложения. Главный поток терминала отвечает за обработку всех системных сообщений Windows, и в результате этой обработки в свою очередь порождает сообщения Windows для своего же приложения. Например, перемещение мышки на графике (событие WM_MOUSE_MOVE) порождает несколько системных сообщений для последующей отрисовки окна приложения, а также посылает внутренние сообщения экспертам и индикаторам, запущенным на этом графике. При этом может возникнуть ситуация, что главный поток приложения ещё не успел обработать системное сообщение WM_PAINT (и поэтому ещё не отрисовал изменённый график), а эксперт или индикатор уже получили событие о перемещении курсора мышки. Тогда в этом случае свойство графика CHART_FIRST_VISIBLE_BAR будет изменено только после отрисовки графика.
Для каждого типа события входные параметры функции OnChartEvent() имеют определенные значения, которые необходимы для обработки этого события. В таблице перечислены события и значения, которые передаются через параметры.
Событие |
Значение параметра id |
Значение параметра lparam |
Значение параметра dparam |
Значение параметра sparam |
---|---|---|---|---|
Событие нажатия клавиатуры |
CHARTEVENT_KEYDOWN |
код нажатой клавиши |
Количество нажатий клавиши, сгенерированных за время ее удержания в нажатом состоянии |
Строковое значение битовой маски, описывающее статус кнопок клавиатуры |
События мышки (если для графика установлено свойство CHART_EVENT_MOUSE_MOVE=true) |
CHARTEVENT_MOUSE_MOVE |
X-координата |
Y-координата |
Строковое значение битовой маски, описывающее статус кнопок мыши |
Событие колесика мышки (если для графика установлено свойство CHART_EVENT_MOUSE_WHEEL=true) |
CHARTEVENT_MOUSE_WHEEL |
Флаги состояний клавиш и кнопок мышки, координаты X и Y курсора. Описание дано в примере |
Значение Delta прокрутки колесика мышки |
— |
Событие создания графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_CREATE=true) |
CHARTEVENT_OBJECT_CREATE |
— |
— |
Имя созданного графического объекта |
Событие изменения свойств объекта через диалог свойств |
CHARTEVENT_OBJECT_CHANGE |
— |
— |
Имя измененного графического объекта |
Событие удаления графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_DELETE=true) |
CHARTEVENT_OBJECT_DELETE |
— |
— |
Имя удаленного графического объекта |
Событие щелчка мышки на графике |
CHARTEVENT_CLICK |
X-координата |
Y-координата |
— |
Событие щелчка мышки на графическом объекте |
CHARTEVENT_OBJECT_CLICK |
X-координата |
Y-координата |
Имя графического объекта, на котором произошло событие |
Событие перемещения графического объекта при помощи мышки |
CHARTEVENT_OBJECT_DRAG |
— |
— |
Имя перемещенного графического объекта |
Событие окончания редактирования текста в поле ввода графического объекта "Поле ввода" |
CHARTEVENT_OBJECT_ENDEDIT |
— |
— |
Имя графического объекта "Поле ввода", в котором завершилось редактирование текста |
Событие изменения размеров графика или изменения свойств графика через диалог свойств |
CHARTEVENT_CHART_CHANGE |
— |
— |
— |
Пользовательское событие с номером N |
CHARTEVENT_CUSTOM+N |
Значение, заданное функцией EventChartCustom() |
Значение, заданное функцией EventChartCustom() |
Значение, заданное функцией EventChartCustom() |
Пример слушателя событий графика:
//+------------------------------------------------------------------+
|
Смотри также
EventChartCustom, Типы событий графика, Функции обработки событий, Выполнение программ, События клиентского терминала