经济日历 CSV - MetaTrader 5 脚本





这是脚本的扩展版本 CalendarForDates.mq5提出于算法交易书。
输入变量允许您指定国家/地区代码、当前代码和时间范围来过滤所需的记录。如果输入留空,则可以请求完整的日历(如果在终端启动后首次请求日历,则下载其基础数据可能需要一段时间,甚至超时并且不会产生任何结果 - 然后请再次运行脚本)。
因此,您将获得一个 CSV 文件,其中包含日历记录和最重要的字段(并非所有字段都会导出 - 请根据您的需要随意调整源代码)。
或者,可以输入由指标创建的 *.cal 文件(特定时间的日历的存档副本)CalendarMonitorCached.mq5还书中介绍的,现已过时,取而代之的是其扩展版本CalendarMonitorCachedTZ.mq5 (新功能推荐和必需,如下所述)。
最有趣的功能:该脚本演示了时间服务器DST.mqh用于根据服务器过去的时区变化调整历史事件的时间戳,这些变化持久地反映在蜡烛的时间戳中。该模式通过设置输入来启用按符号历史记录修复缓存时间到真的。
将经过校正和未经校正的事件保存到 CSV 文件中,可以轻松比较时间校正对历史记录的影响。
为了正确使用此功能,建议在 XAUUSD 或 EURUSD H1 图表上运行脚本。当以编程方式使用时,这些符号应传递给时间服务器夏令时的功能。
指标中使用了相同的方法CalendarMonitorCachedTZ.mq5 用于将时间校正的日历事件导出到存档的 cal 文件中,准备从测试仪内部加载,从而确保新闻机器人的准确回测和优化。
执行时间修正的日期范围仅限于图表上时间范围 H1 的最大柱数。这就是里面使用的经验方法的特殊性时间服务器DST.mqh。
让我们考虑一种特定的事件类型,最好是对市场有较大影响的事件类型,例如美国非农就业数据 (NFP) 的发布。
在具有 DST 时间表(MQ 演示)的欧洲服务器上,它发生在冬季 14:30 和夏季 15:30。在下面的屏幕截图中,您可以并排看到导出到 CSV 文件的完整日历历史记录的 2 个版本,其中可以看到特定的夏季日期 2023 年 8 月 04 日。两次导出均于 11 月 8 日(冬季,标准时间)执行,因此默认情况下对所有事件应用 GMT+2 偏移,包括 2023 年夏季(以及任何其他季节和年份)。未经修正(如右图所示),夏季 NFP 的导出时间为 14:30。这是不正确的。
根据经验自动检测服务器时区(在夏季有效)后,库将执行带有时间校正的日历导出(如左图所示)。因此,夏季 NFP 数据被移至 15:30,这也是理所应当的。您可以查看该时期的图表,以确保修正是适当的。

这些东西仍然处于实验阶段。请随时发送您的反馈。
计划进一步研究时间修正对新闻交易的影响。敬请关注。
附加的 mqh 文件(CalendarFilter.mqh、CalendarCache.mqh、QuickSortStructT(Ref).mqh)与书中的原始版本相比包含错误修复和改进。
04.10.2024 - 在 cal 文件和 csv 文件中添加了写入/读取服务器时区偏移量。
10.11.2024 - 添加了一个选项,可以根据服务器的追溯时区更改来更正历史记录中事件的时间戳。
2024 年 11 月 11 日 - CalendarCache.mqh 和 CalendarFilter.mqh 中的小错误修正和改进。
2024 年 11 月 22 日 - CalendarCache.mqh 中的小错误修复和改进。
附件下载
📎 autoptr.mqh (1.86 KB)
📎 calendardefines.mqh (4.66 KB)
📎 calendarfiltercached.mqh (2.38 KB)
📎 defines.mqh (0.71 KB)
📎 is.mqh (0.98 KB)
📎 quicksortstructt.mqh (3.97 KB)
📎 quicksortstructtref.mqh (7.86 KB)
📎 stringutils.mqh (1.91 KB)
📎 calendarfilter.mqh (28.8 KB)
📎 timeserverdst.mqh (15.68 KB)
📎 calendarcache.mqh (28.54 KB)
📎 calendarcsvfordates.mq5 (11.88 KB)
Source: MQL5 #52977
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
