如何自动调整当前图表上显示的价格范围? (MT4 EA)

问题描述 投票:0回答:1

我正在mql4中创建MT4 EA,并希望根据一些指标结果自动调整所示的价格水平(y轴)。

enter image description here

即我有一个枢轴指标的(y-max,y-min)值,并且无论当前价格在哪里,我都希望重新缩放图表以使其位于枢轴中心。例如,在所示的图中,我想查看橙色线和黄色线之间的比例。也许在上方和下方添加一些像素以提高可见性。

不幸的是,MT4论坛上对此信息非常缺乏,我什至找不到起点。这里可能相关的信息:

我如何让我的EA调整当前图表窗口价格范围的大小/重新调整?(可能占可用总大小的百分比。)

mql4 metatrader4
1个回答
0
投票

从各种论坛和来源中收集了一些点点滴滴之后,我设法将一个漂亮的解决方案拼凑在一起。

它做什么?

  1. 添加布尔设置以启用automatic缩放,否则仅在OnInit()上执行一次。
  2. 使用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();  
}

© www.soinside.com 2019 - 2024. All rights reserved.