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

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

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

对于一个专家顾问 (EA),当一个新的报价(“打钩”)被接收者元交易者,标准OnTick()事件处理函数由终端调用。然而,当新的柱(蜡烛)开始时,没有标准的事件处理函数。

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

// 标准刻度事件处理程序  空白 勾选()
   {
      // 检查新柱(与 MQL4 和 MQL5 兼容)。        静止的 日期时间dtBarraCorrente =错误_值;
                日期时间dtBarraPrecedente = dtBarraCorrente;
                         dtBarraCorrente =爱时_象征,_时期,0);
                布尔值     bEventoBarraNova = ( dtBarraCorrente != dtBarraPrecedente );

      // 对新柱的事件做出反应并处理这种情况。        如果(bEventoBarraNova)
         {
            // 检测这是否是第一个收到的报价并处理这种情况。              /* 例如,当它第一次应用于图形时并且
 该酒吧正处于其进度的中间位置并且
 并不是真正的新酒吧的开始。 */              如果( dtBarraPrecedente ==错误_值)
               {
                  // 在第一个价格变动处或柱线中间执行某些操作 ...               }
              别的               {
                  // 当正常条形出现时做一些事情...               };

            // 做一些独立于先前条件的事情...         }
        别的         {
            // 做点别的事...         };

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

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

同样重要的是要注意,当 EA 第一次放置在图表上时,之前的代码会做出反应,就好像柱刚刚打开一样。如果需要以不同方式处理这种情况,则需要特殊处理。

请注意我所有的源代码代码库出版物现在也可通过元编辑器的“公共项目”,名称为“FMIC”。


附件下载

📎 novabarra.mq5 (1.53 KB)

Source: MQL5 #41601

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