请观看如何免费下载自动交易
请在Twitter上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
显示:
409
等级:
(14)
已发布:
2025.04.03 11:16
NovaBarra.mq5 (1.53 KB) 预览
MQL5自由职业者 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

对于智能交易系统 (EA),当MetaTrader 收到新报价("tick") 时,终端会调用标准OnTick() 事件处理函数。但是,当一个新的条形(蜡烛)开始时,却没有标准的事件处理函数。

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

// 标准滴答事件处理程序
   void OnTick()
   {
      // 检查新条形图(与 MQL4 和 MQL5 兼容)。
         static datetime dtBarraCorrente   = WRONG_VALUE;
                datetime dtBarraPrecedente = dtBarraCorrente;
                         dtBarraCorrente   = iTime( _Symbol, _Period, 0 );
                bool     bEventoBarraNova  = ( dtBarraCorrente != dtBarraPrecedente );

      // 对新条形图做出反应并处理情况。
         if( bEventoBarraNova )
         {
            // 检测这是否是收到的第一个 tick,并处理这种情况。
               /* 例如,当它首次应用于图表时,
 。条形图处于进度的中间位置,而
 并不是新条形图的真正开始。*/
               if( dtBarraPrecedente == WRONG_VALUE )
               {
                  // 在第一个刻度线或条形图中间做一些事情...
               }
               else
               {
                  // 当正常条形图出现时做一些事情...
               };

            // 执行与前一个条件无关的操作...
         }
         else
         {
            // 做其他事情...
         };

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

在前面的代码中,即使从OnTick() 函数返回时,静态变量 也会跟踪条形图的打开时间。与普通局部变量不同的是,静态变量会记住其数据内容,在离开函数时也不会释放。这是检测当前条形图打开时间变化的关键。

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

请注意,我所有CodeBase 出版物的源代码现在也可以通过MetaEditor 的 "公共项目 "以 "FMIC "的名义获取。

由MetaQuotes Ltd译自葡萄牙语
原代码: https://www.mql5.com/pt/code/41601

日历 日历

日历 - 历史和实时基本面分析。

单测试器缓存 单测试器缓存

测试仪的单程数据。

后踢 后踢

算法循环:当没有敞口头寸时,打开两个相反的头寸。等待两个仓位都关闭。

MA 趋势 2 MA 趋势 2

iMA 指标(移动平均线,MA)交易系统。MA 趋势的发展。