- OnStart
- OnInit
- OnDeinit
- OnTick
- OnCalculate
- OnTimer
- OnTrade
- OnTradeTransaction
- OnBookEvent
- OnChartEvent
- OnTester
- OnTesterInit
- OnTesterDeinit
- OnTesterPass
OnChartEvent
当ChartEvent事件发生时在指标和EA中调用这个函数。这个函数意在处理由用户或者MQL5程序所做的图表更改。
void OnChartEvent()
|
参数
id
[in] 来自ENUM_CHART_EVENT枚举的事件ID。
lparam
[in] 长整型(long)事件参数
dparam
[in] 双精度型(double)事件参数
sparam
[in] 字符串型(string)事件参数
返回值
无返回值
注意
共有11种事件类型可以使用预定义OnChartEvent()函数来处理。为自定义事件提供了从CHARTEVENT_CUSTOM到CHARTEVENT_CUSTOM_LAST包含的65535个ID。若要生成自定义事件,请使用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 ― 在图形对象的“编辑”输入框中完成文本编辑(OBJ_EDIT);
- CHARTEVENT_CHART_CHANGE ― 更改图表;
- CHARTEVENT_CUSTOM+n ― 自定义事件ID,这里n的范围是从0到65535。CHARTEVENT_CUSTOM_LAST包含最后可接受的自定义事件ID (CHARTEVENT_CUSTOM+65535)。
所有MQL5程序都使用了不同于应用程序主线程的其他线程。主应用程序线程负责处理所有的Windows系统消息,反过来,作为该处理的结果,为其自身的应用程序生成Windows消息。例如,在图表上移动鼠标(WM_MOUSE_MOVE事件)为随后呈现的应用程序窗口生成几个系统消息,并将内部消息发送到在图表上启动的EA和指标。可能会出现这样的情况,主要的应用程序线程还没有处理WM_PAINT系统消息(因此还没有呈现修改过的图表),而EA或指标却已经收到了鼠标移动事件。在这种情况下,只有在呈现图表之后,图表属性CHART_FIRST_VISIBLE_BAR才会更改。
对于每种事件类型,OnChartEvent()函数的输入都具有处理该事件所需的某些值。该表列出了通过参数传递的事件和值。
事件 |
'id' 参数值 |
'lparam'参数值 |
'dparam'参数值 |
'sparam'参数值 |
---|---|---|---|---|
Keystroke事件 |
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()函数定义的值 |
示例图表事件监听器:
//+------------------------------------------------------------------+
|
另见