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

IsNewBar - MetaTrader 5 库

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

СIsNewBar 类对于在新柱出现时进行计算的 EA 交易的高效工作是必要的。

通常 IsNewBar() 函数用于此类操作而不是类。但是这样的函数包含静态变量,因此我们不能多次调用该函数。为了能够在 Expert Advisor 的代码中重复重用此类函数,将其设为类成员会容易得多。在本例中,这是使用 IsNewBar.mqh 完成的。

库代码应包含在全局级别的文件内容中,使用#包括指示:

#include 

然后,必须在 Expert Advisor 的 OnTick() 块中声明所需数量的 СIsNewBar 类变量:

静止的CIsNewBar NB1,NB2;

之后我们可以调用 IsNewBar() 函数

布尔值是新栏(细绳象征,           // 货币符号 ENUM_TIMEFRAMES大体时间)// 计算图表时间范围

在 EA 交易代码中:

如果(NB1.IsNewBar(象征(),PERIOD_D1))// 检查新柱     {
     /* 这里是交易信号1接收块代码 */     }

以下是在 OnTick() 函数中包含 СIsNewBar 类的可能代码示例:

//+------------------------------------------------------------------+
//|专家勾选功能                                            |
//+------------------------------------------------------------------+
空白 勾选()
  {//----  双倍的i关闭1[1],i关闭2[1];//---- 静态变量的声明  静止的 布尔值重新计数1=真的,重新计数2=真的;
  静止的CIsNewBar NB1,NB2;//+---------------------------------------------------------+
//|检测市场进入信号               |
//+---------------------------------------------------------+  如果(NB1.IsNewBar(象征(),PERIOD_D1) ||重新计数1)// 检查新柱     {
      重新计数1=错误的;
      
      //---- 复制数组中新出现的数据     如果复制关闭象征(),PERIOD_D1,1,1,i关闭1)<=0) {重新计数1=真的;返回;}
      
      /* 这里是交易信号1接收块代码 */      
     }
     
  如果(NB2.IsNewBar(象征(),PERIOD_H4) ||重新计数2)// 检查新柱     {
      重新计数2=错误的;
      
      //---- 复制数组中新出现的数据     如果复制关闭象征(),PERIOD_H4,1,1,i关闭2)<=0) {重新计数2=真的;返回;}
      
      /* 这里是交易信号2接收块代码 */      
     }


附件下载

📎 isnewbar.mqh (1.41 KB)

📎 isnewbar_example.mq5 (1.73 KB)

Source: MQL5 #768

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