事件相关图表特性

有四种类型的事件能够生成大量消息,因此默认处于禁用状态。要稍后启用或禁用这些事件,使用 ChartSetInteger 函数设置相应的图表特性。所有特性均为 Boolean 类型:true表示启用,false 表示禁用。

标识符

说明

CHART_EVENT_MOUSE_WHEEL

向图表发送鼠标滚轮事件的 CHARTEVENT_MOUSE_WHEEL 消息

CHART_EVENT_MOUSE_MOVE

向图表发送鼠标移动的 CHARTEVENT_MOUSE_MOVE 消息

CHART_EVENT_OBJECT_CREATE

向图表发送图形对象创建的 CHARTEVENT_OBJECT_CREATE 消息

CHART_EVENT_OBJECT_DELETE

向图表发送图形对象删除的 CHARTEVENT_OBJECT_DELETE 消息

如果任何 MQL 程序修改了这些特性中的一项,它将影响同一图表上运行的所有其他程序,并且即使原始程序终止后,该设置仍然保持有效。

默认情况下,所有特性的值均为 false

让我们为上一节的EventAll.mq5指标补充四个输入变量,以便可以启用这些类型的事件(除了其他无法禁用的事件之外)。此外,我们将描述四个辅助变量,以便能够在删除指标后恢复图表设置。

input bool ShowMouseMove = false;
input bool ShowMouseWheel = false;
input bool ShowObjectCreate = false;
input bool ShowObjectDelete = false;
   
bool mouseMovemouseWheelobjectCreate, objectDelete;

在启动时,记住这些特性的当前值,然后应用用户选择的设置。

void OnInit()
{
   mouseMove = PRTF(ChartGetInteger(0CHART_EVENT_MOUSE_MOVE));
   mouseWheel = PRTF(ChartGetInteger(0CHART_EVENT_MOUSE_WHEEL));
   objectCreate = PRTF(ChartGetInteger(0CHART_EVENT_OBJECT_CREATE));
   objectDelete = PRTF(ChartGetInteger(0CHART_EVENT_OBJECT_DELETE));
   
   ChartSetInteger(0CHART_EVENT_MOUSE_MOVEShowMouseMove);
   ChartSetInteger(0CHART_EVENT_MOUSE_WHEELShowMouseWheel);
   ChartSetInteger(0CHART_EVENT_OBJECT_CREATEShowObjectCreate);
   ChartSetInteger(0CHART_EVENT_OBJECT_DELETEShowObjectDelete);
}

特性在 OnDeinit处理程序中恢复。

void OnDeinit(const int)
{
   ChartSetInteger(0CHART_EVENT_MOUSE_MOVEmouseMove);
   ChartSetInteger(0CHART_EVENT_MOUSE_WHEELmouseWheel);
   ChartSetInteger(0CHART_EVENT_OBJECT_CREATEobjectCreate);
   ChartSetInteger(0CHART_EVENT_OBJECT_DELETEobjectDelete);
}

在启用新事件类型的情况下运行此指标。请做好接收大量鼠标移动消息的准备。以下是日志片段:

CHARTEVENT_MOUSE_WHEEL 5308557 -120.000000 ''
CHARTEVENT_CHART_CHANGE 0 0.000000 ''
CHARTEVENT_MOUSE_WHEEL 5308557 -120.000000 ''
CHARTEVENT_CHART_CHANGE 0 0.000000 ''
CHARTEVENT_MOUSE_MOVE 141 81.000000 '2'
CHARTEVENT_MOUSE_MOVE 141 81.000000 '0'
...
CHARTEVENT_OBJECT_CREATE 0 0.000000 'Daily Rectangle 37664'
CHARTEVENT_MOUSE_MOVE 323 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 322 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 321 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 320 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 318 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 316 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 314 146.000000 '0'
CHARTEVENT_MOUSE_MOVE 314 145.000000 '0'
...
CHARTEVENT_OBJECT_DELETE 0 0.000000 'Daily Rectangle 37664'
CHARTEVENT_KEYDOWN 46 1.000000 '339

我们将在下文的相关章节中详细介绍每类事件的具体信息内容。