我正在mql4中创建一个MT4 EA,并希望根据一些指标结果自动调整所示的价格水平(y轴)。
即我有一个枢轴指标的( y-max,y-min )值,并且无论当前价格在哪里,我都希望重新缩放图表以使其以枢轴线为中心。例如,在所示的图中,我想查看橙色线和黄色线之间的比例。也许在上下添加一些像素以提高可见性。
不幸的是,MT4论坛上的信息非常缺乏,我什至找不到起点。可能相关的信息在这里:
如何让我的智能交易为当前图表窗口调整/调整价格范围?
(可能占可用总大小的百分比。)
答案 0 :(得分:1)
从各种论坛和来源中收集了一些点点滴滴之后,我设法将一个漂亮的解决方案拼凑在一起。
它有什么作用?
OnChartEvent()
事件处理程序来检测CHARTEVENT_CHART_CHANGE
(这是Windows产生的重新调整图表窗口大小的事件),并相应地缩放内容。 ...
extern bool autoChartScaling = true; // Enable Automatic chart scaling
...
void AdjustChartPrice() {
...
ChartSetInteger(cid,CHART_SCALEFIX, 0, true); // Set the MODE for using a fixed chart scale ([x] Fixed MT4 option)
ChartSetDouble(cid,CHART_FIXED_MAX, ymax); // Maximum chart price (height) in [points]
ChartSetDouble(cid,CHART_FIXED_MIN, ymin); // Minimum chart price (height) in [points]
}
...
int OnInit() {
...
OnChartEvent();
}
void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam) {
// Adjust the chart price Max/Min if chart window changed
if (autoChartScaling && id == CHARTEVENT_CHART_CHANGE) AdjustChartPrice();
}