刚刚在我们的《从零开始学MQL4编程》微信答疑群里有个学员提问:
“comment 函数显示的内容,可以让它跟着鼠标移动变化吗? 鼠标指哪根K线,就显示那根K线的comment的内容”
下面我来解答一下:
这是可以实现的,通过捕获图表事件里面的鼠标移动事件可以实现。
第一步:新建EA之后,在EA的初始化函数里面,启动鼠标移动事件 ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,0,true);
int OnInit()
{
//--- set property value
if(!ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,0,true))
{
//--- display the error message in Experts journal
Print(__FUNCTION__+", Error Code = ",GetLastError());
return(false);
}
//---
return(INIT_SUCCEEDED);
}
第二步:在图表事件中,获取到鼠标的坐标 。
void OnChartEvent(const int id, // Event ID
const long& lparam, // Parameter of type long event
const double& dparam, // Parameter of type double event
const string& sparam // Parameter of type string events
)
{
if(id==CHARTEVENT_MOUSE_MOVE)
{
int x=lparam;
int y=dparam;
}
}
第三步:将鼠标位置的坐标转换成时间价格坐标。
部分代码如下:
ChartXYToTimePrice(0,x,y,window,dt,price)
第四步:通过鼠标位置的时间,可以得到k线位移。
主要使用如下函数:
int i=iBarShift(NULL,0,dt);
第五步:通过k线位移可以获取k线的开盘收盘最高最低等各种数据,用comment显示出来。
下面给出全部完整代码:<