日历 - MetaTrader 5 库








MetaTrader5 具有更新的基本日历事件的交易量历史记录,其中的任何数据都可以以编程方式访问。
该库使您可以方便地使用这些数据。特别是在测试器和真实交易中使用它们。
使用该库以示例源代码注释的形式显示。
// 脚本输出历史数据。 #包括// 日历 - 历史和实时基本面分析。 空白 启动时() { 日历 日历; // 从重要性最低 (NONE) 开始,获取所有 (NULL) 货币的事件。 常量 整数大小=日历.设置(无效的,CALENDAR_IMPORTANCE_NONE,D'2020.12.07',D'2020.12.08'); // 将它们打印出来。 为了(整数我=0;我<尺寸;我++) 打印(日历[i].ToString()); }
2020.12。07全天欧元0День Конституции(宪法日),Испания(ES) | | | |2020.12。07 00:00澳元3Выступление председателя Резервного Банка Австралии Лоу(rba-governor-lowe-speech), Австралия(AU) | | | |2020.12。07 01:50日元1Международные резервы(日本外汇储备), Япония(JP) | $1384.6乙| | $1384.4乙|2020.12。07 02:30澳元1Количество объявлений о вакансиях от ANZ м/м(anz-job-advertisements-mm), Австралия(AU) |13.9% |0.8% |9.4% |2020.12。07≈05:00中国新年1Объем импорта USD г/г(进口-美元-年), Китай(CN) |4.5% |4.4% |4.7% |2020.12。07≈05:00中国新年1Объем экспорта USD г/г(出口-美元-年), Китай(CN) |21.1% |3.6% |11.4% |2020.12。07≈05:00中国新年2Торговый баланс(贸易平衡), Китай(CN) | ¥507.1乙| ¥271.31乙| ¥401.75乙|2020.12。07≈05:00中国新年2Торговый баланс USD(贸易余额-美元), Китай(CN) | $75.42乙| $52.55乙| $58.44乙|2020.12。07≈05:00中国新年1Объем импорта г/г(imports-yy), Китай(CN) | -0.8% | -0.6% |0.9% |2020.12。07≈05:00中国新年1Объем экспорта г/г(出口-yy), Китай(CN) |14.9% |2.2% |7.6% |2020.12。07 07:00日元1Индекс совпадающих индикаторов(重合索引), Япония(JP) |89.7|81.8|81.1|84.8 2020.12。07 07:00日元1Индекс ведущих экономических индикаторов(领先指数), Япония(JP) |93.8|92.7|92.5|93.3 2020.12。07 07:00日元1Индекс совпадающих индикаторов Японии м/м(重合索引-mm), Япония(JP) |4.9% | |1.7% |2.4%2020.12。07 07:00日元1Индекс ведущих экономических индикаторов м/м(前导指数-毫米), Япония(JP) |0.5% | |4.0% |4.2%2020.12。07 08:00南非兰特1Валовые международные резервы(国际储备总额), Южно-Африканская Республика(ZA) | 俄罗斯联邦$53.76乙| $54.129乙| $53.658乙|2020.12。07 08:00南非兰特1Чистые международные резервы(净国际储备), Южно-Африканская Республика(ZA) | Чистые международные резервы(净国际储备) $51.257乙| $52.719乙| $51.364乙|2020.12。07 09:00欧元2Германия(德国) | Промышленное производство г/г(工业生产-yy) | -3.0% | -11.4% | -7.3% | -6.7%2020.12。07 09:00欧元2Промышленное производство м/м(工业生产-mm), Германия(德国) |3.2% |7.7% |1.6% |2.3%2020.12。07 09:00挪威克朗1Производство в обрабатывающей промышленности м/м(制造-生产-mm), Норвегия(NO) |0.6% |0.1% | -0.5% |2020.12。07 09:00挪威克朗1Производство в обрабатывающей промышленности г/г(制造-生产-yy), Норвегия(NO) | -2.7% | -3.3% | -3.4% |2020.12。07 09:00挪威克朗1Промышленное производство м/м(工业生产-mm), Норвегия(NO) | -3.5% |0.0% | -1.7% | -1.6%2020.12。07 09:00挪威克朗1Промышленное производство г/г(工业生产-yy), Норвегия(NO) |0.0% |6.9% |6.3% |
您可以将其与 MT5 终端本身进行比较。
// 该脚本显示即将发生的事件。 #包括// 日历 - 历史和实时基本面分析。 空白 启动时() { 日历 日历; 细绳货币[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)。之后它们将在测试器中可用。
结果(按上半年开盘价计算的六年)。
附件下载
📎 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小时后评论,即可解锁附件下载
立即登录
