文章 "在MQL5中实现基于经济日历新闻事件的突破型智能交易系统(EA)"

 

新文章 在MQL5中实现基于经济日历新闻事件的突破型智能交易系统(EA)已发布:

重大经济数据发布前后市场波动率通常显著上升,为突破交易策略提供了理想的环境。在本文中,我们将阐述基于经济日历的突破策略的实现过程。我们将全面覆盖从创建用于解析和存储日历数据的类,到利用这些数据开发符合实际的回测系统,最终实现实盘交易执行代码的完整流程。

尽管MQL5社区提供了大量关于在回测中使用MetaTrader 5日历的文章和代码库,但这些资源对想开发简单突破策略的新手而言往往过于复杂。本文旨在简化用MQL5新闻日历创建策略的流程,并为交易者提供一份全面指南。

构建“日历新闻突破”交易策略的动契机在于:利用可预期的定时新闻事件(如经济数据、财报或地缘公告)所引发的显著波动和价格变动。通过提前布局,交易者可在新闻后价格明确突破既定支撑或阻力时捕捉机会。该策略力求在新闻发布前后的高流动性与动量中获利,同时以严格的风险管理应对不确定性。最终形成利用关键日历事件市场反应的体系化方法。


作者:Zhuo Kai Chen

 

你好,非常感谢!我对输入多种货币有点困惑。我试过

"美元"; "英镑"

"USD"; "GBP.

"美元""英镑";

只有最后一个没有出错,但我不确定它是否正确。也许它只接收美元。您能提供建议吗?

 
hrawoodward #:

你好,非常感谢!我对输入多种货币有点困惑。我试过

"美元";"英镑

"USD"; "GBP.

"美元" 英镑

只有最后一个没有出错,但我不确定它是否正确。也许它只接收美元。能给点建议吗?

您好,如果您查看初始化函数中的代码,它会分割冒号并将不同货币存储到 curr 对象属性中。虽然不需要添加引号,但您的第一种方法应该可行。存储过程会将所有事件存储到二进制文件中,而不管其属性如何。只有在交易逻辑中,我们才会对属性进行过滤。这是我刚才运行的结果:

设置

结果

 
这种实现方式似乎没有考虑经纪商服务器上的时区切换(DST),因此在回溯测试 和优化过程中产生了不准确的结果。
 
Stanislav Korotky #:
这种实现方式似乎没有考虑经纪商服务器上的时区切换(DST),因此在回溯测试 和优化过程中产生了不准确的结果。

谢谢你提醒我!我在文章中忘了考虑这一点,因为我使用了一个没有 DST 的经纪商进行演示。

https://www.mql5.com/zh/book/advanced/calendar

从这个来源我们可以知道,日历数据是由 MQL5 提供的,它会自动调整为经纪商当前的 Timetradeserver() 时区,这意味着对于有 DST 的经纪商,需要调整我的代码并将其考虑在内。

MQL5 Book: Advanced language tools / Economic calendar
MQL5 Book: Advanced language tools / Economic calendar
  • www.mql5.com
When developing trading strategies, it is desirable to take into account the fundamental factors that affect the market. MetaTrader 5 has a...
 
Zhuo Kai Chen #:

从这一来源我们可以知道,日历数据由 MQL5 方面提供,它会自动调整为经纪商当前的 Timetradeserver() 时区,这意味着对于使用 DST 的经纪商,需要调整我的代码并将其考虑在内。

由于书中公布的实现方法有点过时,实际(更新)情况可在博客代码库(指标)和代码库(脚本)中找到。

Backtesting news trading based on economic calendar history with adjusted timings
Backtesting news trading based on economic calendar history with adjusted timings
  • 2025.05.14
  • www.mql5.com
This blogpost presents some further results of experiments with news trading based on the built-in calendar of MetaTrader 5 and MQL5. Originally, the idea was implemented in the algotrading book as a
 
老哥 你这个CalendarHistory.mqh 文件编译不通过啊  4个错误  94  106  114 122行报错