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

日历 - MetaTrader 5 库

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

Calendar - library for MetaTrader 5

Calendar - library for MetaTrader 5

Calendar - library for MetaTrader 5

Calendar - library for MetaTrader 5

Calendar - library for MetaTrader 5

Calendar - library for MetaTrader 5

Calendar - library for MetaTrader 5

Calendar - library for MetaTrader 5

MetaTrader5 具有更新的基本日历事件的交易量历史记录,其中的任何数据都可以以编程方式访问

该库使您可以方便地使用这些数据。特别是在测试器和真实交易中使用它们。

使用该库以示例源代码注释的形式显示。

// 脚本输出历史数据。

#包括// 日历 - 历史和实时基本面分析。

空白 启动时()
{
  日历 日历;
  
  // 从重要性最低 (NONE) 开始,获取所有 (NULL) 货币的事件。  常量 整数大小=日历.设置(无效的,CALENDAR_IMPORTANCE_NONE,D'2020.12.07',D'2020.12.08');
  
  // 将它们打印出来。  为了整数我=0;我<尺寸;我++)
    打印(日历[i].ToString());
}


2020.1207全天欧元0День Конституции(宪法日),Испания(ES) |  |  |  |2020.1207 0000澳元3Выступление председателя Резервного Банка Австралии Лоу(rba-governor-lowe-speech), Австралия(AU) |  |  |  |2020.1207 0150日元1Международные резервы(日本外汇储备), Япония(JP) | $1384.6乙|  | $1384.4乙|2020.1207 0230澳元1Количество объявлений о вакансиях от ANZ м/м(anz-job-advertisements-mm), Австралия(AU) |13.9% |0.8% |9.4% |2020.12070500中国新年1Объем импорта USD г/г(进口-美元-年), Китай(CN) |4.5% |4.4% |4.7% |2020.12070500中国新年1Объем экспорта USD г/г(出口-美元-年), Китай(CN) |21.1% |3.6% |11.4% |2020.12070500中国新年2Торговый баланс(贸易平衡), Китай(CN) | ¥507.1乙| ¥271.31乙| ¥401.75乙|2020.12070500中国新年2Торговый баланс USD(贸易余额-美元), Китай(CN) | $75.42乙| $52.55乙| $58.44乙|2020.12070500中国新年1Объем импорта г/г(imports-yy), Китай(CN) | -0.8% | -0.6% |0.9% |2020.12070500中国新年1Объем экспорта г/г(出口-yy), Китай(CN) |14.9% |2.2% |7.6% |2020.1207 0700日元1Индекс совпадающих индикаторов(重合索引), Япония(JP) |89.7|81.8|81.1|84.8
2020.1207 0700日元1Индекс ведущих экономических индикаторов(领先指数), Япония(JP) |93.8|92.7|92.5|93.3
2020.1207 0700日元1Индекс совпадающих индикаторов Японии м/м(重合索引-mm), Япония(JP) |4.9% |  |1.7% |2.4%2020.1207 0700日元1Индекс ведущих экономических индикаторов м/м(前导指数-毫米), Япония(JP) |0.5% |  |4.0% |4.2%2020.1207 0800南非兰特1Валовые международные резервы(国际储备总额), Южно-Африканская Республика(ZA) | 俄罗斯联邦$53.76乙| $54.129乙| $53.658乙|2020.1207 0800南非兰特1Чистые международные резервы(净国际储备), Южно-Африканская Республика(ZA) | Чистые международные резервы(净国际储备) $51.257乙| $52.719乙| $51.364乙|2020.1207 0900欧元2Германия(德国) | Промышленное производство г/г(工业生产-yy) | -3.0% | -11.4% | -7.3% | -6.7%2020.1207 0900欧元2Промышленное производство м/м(工业生产-mm), Германия(德国) |3.2% |7.7% |1.6% |2.3%2020.1207 0900挪威克朗1Производство в обрабатывающей промышленности м/м(制造-生产-mm), Норвегия(NO) |0.6% |0.1% | -0.5% |2020.1207 0900挪威克朗1Производство в обрабатывающей промышленности г/г(制造-生产-yy), Норвегия(NO) | -2.7% | -3.3% | -3.4% |2020.1207 0900挪威克朗1Промышленное производство м/м(工业生产-mm), Норвегия(NO) | -3.5% |0.0% | -1.7% | -1.6%2020.1207 0900挪威克朗1Промышленное производство г/г(工业生产-yy), Норвегия(NO) |0.0% |6.9% |6.3% |

    您可以将其与 MT5 终端本身进行比较。

    Calendar - library for MetaTrader 5

    // 该脚本显示即将发生的事件。
    
    #包括// 日历 - 历史和实时基本面分析。
    
    空白 启动时()
    {
      日历 日历;
      
      细绳货币[2];
      
      // 获取当前角色的货币。  货币[0] = ::符号信息字符串_象征,SYMBOL_CURRENCY_BASE);
      货币[1] = ::符号信息字符串_象征,SYMBOL_CURRENCY_PROFIT);
        
      // 按符号货币记录即将发生的重要事件。  Calendar.Set(货币);
      
      打印(日历.ToString());// 将它们打印出来。}

    这种在信息系统中的嵌入可以告知 EA 交易/指标中即将发生的重要日历事件。

    下面是一个进行交易的 EA 交易非农就业数据通过比较当前值和预测值。

    // 用于在 MT4/5-Tester 中根据基本数据历史进行交易的 EA 交易。
    
    #定义日历文件名“日历.bin” // 用于读取/写入日历的文件名。
    #财产测试文件日历文件名  // 指定 MT5-Tester 选取此文件。
    
    #包括// 日历 - 历史和实时基本面分析。
    
    输入团体“日历”
    输入 细绳货币=“美元”;        // 货币
    输入 细绳在过滤器名称 =“工资单”;// 过滤器名称
    
    输入团体“EA”
    输入 整数TP =1000;// 止盈
    输入 整数内SL =1000;// 止损
    输入 布尔值逆向 =真的;// 交易方向日历 日历;// 带有日历数据的对象。
    
    整数 初始化时()
    {      
      布尔值分辨率=错误的;
      
      如果MQLInfo整数MQL_测试仪))// 如果在测试器中工作  {
        Res = Calendar.Load(CALENDAR_FILENAME) &&      // 从文件加载事件。          Calendar.FilterByCurrency(inCurrency) &&// 应用货币过滤器。          Calendar.FilterByName(inFilterName);    // 对事件名称应用过滤器。    
        如果(!Res)                                      // 如果加载的数据有问题,      打印“在 MT5 终端中运行 EA!”);    // 报告您需要通过在 MT5 终端中运行 EA 来获取它们。  }#ifdef__MQL5__  // 在终端中工作。  别的 如果(日历.设置(无效的,CALENDAR_IMPORTANCE_NONE,0,0)&&// 从 MT5 终端加载绝对所有事件(历史 + 未来)。           日历.保存(CALENDAR_FILENAME))                    // 将它们保存到文件中。    消息框“您可以在 MT4/5 测试器中运行 EA。”);      // 报告我们现在可以在 MT4/5-Tester 中工作。
    #endif// #ifdef __MQL5__  返回(!Res);
    }空白 勾选()
    {
      静止的 整数Pos = 日历.GetPosAfter(时间当前());// 获取日历中的事件位置,即当前时间之后。  
      如果((Pos < Calendar.GetAmount()) &&      // 如果你还没有超越日历      (日历[位置].时间 <时间当前()))// 当前时间已经过了该事件。  {        
        常量EVENT 事件 = 日历[位置];      // 收到对应的事件。    
        如果((事件.实际!=LONG_MIN) && (事件.预测!=LONG_MIN))// 如果设置了事件的当前值和预测值    {
          打印(Event.ToString());// 完整地打印此事件。      如果(事件.实际 > 事件.预测)                                                                          // 如果当前值大于预测值,        持仓开仓(反向,“行为。(”+ 事件.ActualToString() +“)>(”+ Event.ForecastToString() +“)为了。”);  // 建立一个方向的仓位。      别的        PositionOpen(!inReverse,“行为。(”+ 事件.ActualToString() +")<=("+ Event.ForecastToString() +“)为了。”);// 否则,另一个方向。    }
                
        Pos = 日历.GetPosAfter(时间当前(), 位置);// 获取日历中的事件位置,即当前时间之后。  }
    }#包括//https://www.mql5.com/en/code/16006
    
    #定义出价符号信息双_象征,SYMBOL_BID#定义符号信息双_象征,SYMBOL_ASK// 使用指定的注释开仓。TICKET_TYPE 持仓未平仓(常量 整数类型,常量 细绳评论 )
    {
      返回(类型 ?订单发送_象征, OP_SELL,1, 出价,0, 出价 + inSL *_观点, 出价 - inTP *_观点, 评论)
                  :订单发送_象征, OP_购买,1, 问,0, 询问 - inSL *_观点, 询问 + inTP *_观点, 评论));
    }

    在 MT5 终端中运行一次即可保存所有历史数据 (~60 Mb)。之后它们将在测试器中可用。

    结果(按上半年开盘价计算的六年)。

    Calendar - library for MetaTrader 5

    Calendar - library for MetaTrader 5


    附件下载

    📎 string.mqh (1.77 KB)

    📎 event.mqh (20.88 KB)

    📎 calendar.mqh (30.15 KB)

    📎 dst.mqh (11.46 KB)

    📎 calendar_example.mq5 (7.48 KB)

    Source: MQL5 #32430

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