欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

检测新柱或蜡烛的开始 - MetaTrader 5 Expert

author emer | 355 人阅读 | 0 人评论 |

对于一个专家顾问 (EA),当新的报价到达时,元交易者终端调用默认值OnTick()事件处理函数。然而,当新的柱(蜡烛)开始或打开时,没有默认的事件处理函数。

为了检测这一点,需要监控当前最新柱的开盘时间。一旦它发生变化,就意味着新柱的开始,人们可以对其做出反应并处理事件。以下示例代码与 MQL4 和 MQL5 兼容,展示了一种如何实现这一目标的方法:

// 默认刻度事件处理程序  空白 勾选()
   {
      // 检查新柱(与 MQL4 和 MQL5 兼容)。        静止的 日期时间dtBar当前 =错误_值;
                日期时间dtBar上一个= dtBar当前;
                         dtBar当前 =爱时_象征,_时期,0);
                布尔值     bNewBarEvent = ( dtBarCurrent != dtBarPrevious );

      // 对新的栏事件作出反应并处理它。        如果(bNewBarEvent)
         {
            // 检测这是否是第一个收到的报价并处理它。              /* 例如,当它第一次附加到图表并且
                  该酒吧正处于其进度的中间位置并且
                  这实际上并不是一个新酒吧的开始。 */              如果( dtBar上一个 ==错误_值)
               {
                  // 在第一个价格变动或柱线中间做一些事情...               }
              别的               {
                  // 当正常的柱开始时做一些事情...               };

            // 无论上述条件如何,都做一些事情...         }
        别的         {
            // 做点别的事...         };

      // 做其他事情...   };

在上面的代码中,静态变量跟踪酒吧的营业时间,即使从酒吧回来时也是如此OnTick()功能。与普通的局部变量不同,它会记住其数据内容,并且在离开函数时不会释放它。这是检测当前柱开盘时间变化的关键。

还需要注意的是,当 EA 首次放置在图表上时,上述代码的反应就像柱刚刚打开一样。如果情况需要以不同方式处理,则需要对这种情况进行特殊处理。


附件下载

📎 newbar.mq5 (2.8 KB)

Source: MQL5 #39103

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录