事件处理函数 OnChartEvent
如果代码中包含具有以下原型的 OnChartEvent函数,指标或 EA 交易可以从终端接收交互事件。
void OnChartEvent(const int event, const long &lparam, const double &dparam, const string &sparam)
当用户执行操作时,或在通过 EventChartCustom生成“用户事件”的情况下,终端会调用该函数。
在 event参数中,事件标识符(即事件类型)以将 ENUM_CHART_EVENT 枚举值的形式传递(见下表)。
标识符 |
说明 |
---|---|
CHARTEVENT_KEYDOWN |
键盘操作 |
CHARTEVENT_MOUSE_MOVE |
移动鼠标和点击鼠标按钮(如果为图表设置了 CHART_EVENT_MOUSE_MOVE 特性) |
CHARTEVENT_MOUSE_WHEEL |
点击或滚动鼠标滚轮(如果为图表设置了 CHART_EVENT_MOUSE_WHEEL 特性) |
CHARTEVENT_CLICK |
鼠标点击图表 |
CHARTEVENT_OBJECT_CREATE |
创建图形对象(如果为图表设置了 CHART_EVENT_OBJECT_CREATE 特性) |
CHARTEVENT_OBJECT_CHANGE |
通过特性对话框修改图形对象 |
CHARTEVENT_OBJECT_DELETE |
删除图形对象(如果为图表设置了 CHART_EVENT_OBJECT_DELETE 特性) |
CHARTEVENT_OBJECT_CLICK |
鼠标点击图形对象 |
CHARTEVENT_OBJECT_DRAG |
拖动图形对象 |
CHARTEVENT_OBJECT_ENDEDIT |
完成“输入字段”图形对象中的文本编辑 |
CHARTEVENT_CHART_CHANGE |
更改图表尺寸或特性(通过特性对话框、工具栏或上下文菜单) |
CHARTEVENT_CUSTOM |
自定义事件范围的起始编号 |
CHARTEVENT_CUSTOM_LAST |
自定义事件范围的结束编号 |
lparam、dparam 和sparam 参数的用途根据事件类型的不同而不同。通常,这些参数包含处理特定事件所需的其他数据。后续章节将针对每种类型提供详细说明。
注意!OnChartEvent函数仅对直接加载在图表上的指标和 EA 交易生效。如果使用 iCustom 或 IndicatorCreate 以编程方式创建任何指标,则 OnChartEvent事件不会传递给该指标。
此外,OnChartEvent处理程序在 测试程序中不会被调用,即使在可视化模式下。
首次演示 OnChartEvent处理程序时,我们将使用一个无缓冲区指标 EventAll.mq5,它可以拦截并记录所有事件。
void OnChartEvent(const int id,
|
默认情况下,图表上可以生成所有类型的事件,但有四种批量事件除外,如上表所示,这些事件需要通过图表的特殊特性启用。在下一节中,我们将为该指标添加设置,以便根据需要包含特定类型的事件。
在包含现有对象的图表上运行该指标,或在该指标运行时创建新对象。
更改图表的尺寸或设置,进行鼠标点击操作,并编辑对象的特性。日志中将出现以下条目。
CHARTEVENT_CHART_CHANGE 0 0.000000 ''
|
在此处我们将看到各种类型的事件,阅读后续章节后便可以知晓其参数的含义。