系统交易 게시글

MetaTrader 4图表事件测试示例 - EA使用指南

첨부파일
17875.zip (4.97 KB, 다운로드 0회)

大家好!今天我们来聊聊一个非常实用的EA示例——“Test_ChartEvent.mq4”。这个专家顾问展示了多种图表事件的应用,包括键盘事件、鼠标点击和移动事件,以及自定义事件。你可以按下'H'键获取帮助信息,按'M'键进入鼠标移动事件模式。

这个源代码同时兼容MetaTrader 4和MetaTrader 5,适合各位交易者使用。


功能原型

  • bool Obj_Create()
  • bool Obj_Delete()
  • bool Obj_Move(int hSens,int vSens) - 移动一个对象。
  • void Print_Info() - 打印对象信息。
  • int MouseMove(int aXX,int aYY,string sState) - 处理鼠标移动事件。


全局变量

  • int gChartNo=0
  • int gSubWinNo=0
  • string gsObj_Name_selected="" - 当前选中对象的名称。


自定义事件

定义了三种自定义事件:

  • #define cMyEvent_1 0
  • #define cMyEvent_2 1
  • #define cMyEvent_3_broadcast 2


OnTimer() 函数

这个函数定期创建自定义图表事件,并随机生成这三种自定义事件(cMyEvent_1、cMyEvent_2和cMyEvent_3_broadcast)。特别是,cMyEvent_3_broadcast事件会在所有打开的图表窗口中生成。


类的示例

我们创建了一个类“CObjectMan”,用于处理图表上对象的功能。定义了两个类实例(变量):gObjectMan1和gObjectMan2。

与这两个实例相关的图形对象名称分别为:“绿色按钮”和“黄色按钮”。


事件处理

void OnChartEvent():

“CHARTEVENT_KEYDOWN”事件:

  1. 使用四个方向键(箭头键)或数字面板上的四个方向键来移动选中的对象。
  2. ‘H’:打印帮助信息(在专家日志窗口中)。
  3. ‘I’:打印两个对象的位置情况。
  4. ‘M’:激活鼠标移动事件。


自定义事件

打印这些事件的信息,尤其是MyEvent_3_broadcast事件。


对象事件

  • CHARTEVENT_OBJECT_CHANGE、CHARTEVENT_OBJECT_DRAG、CHARTEVENT_OBJECT_DELETE - 打印相应对象的名称。
  • CHARTEVENT_OBJECT_CLICK - 打印被点击对象的名称,并使用方向键选择其名称进行移动。


鼠标事件

  • CHARTEVENT_CLICK - 打印被点击柱的相关信息:价格(开盘、收盘)和柱时间。
  • CHARTEVENT_MOUSE_MOVE - 打印覆盖区域的信息:柱的数量、价格变动。

图表事件测试示例


演示

你可以进行以下测试:

  • 点击两个对象(按钮)之一进行选择,然后使用箭头键移动选中的对象。
  • 点击图形柱,查看日志标签中的柱信息(消息)。
  • 按'M'键进入鼠标移动事件模式。按Ctrl+F显示十字准星,然后进行拖放操作。如果未见日志消息,请更改输入参数:“iLogLevel”。

연관 포스트

댓글 (0)