文章 "您应当知道的 MQL5 向导技术(第 21 部分):配以财经日历数据进行测试"

 

新文章 您应当知道的 MQL5 向导技术(第 21 部分):配以财经日历数据进行测试已发布:

默认情况下,财经日历数据在策略测试器中不可用于智能系统测试。我们看看数据库能如何提供帮助,绕过这个限制。故此,在本文中,我们会探讨如何使用 SQLite 数据库来存档财经日历新闻,如此这般,由向导组装的智能系统就可以用它来生成交易信号。

财经数据可以成为交易系统中优势的来源,因为相较于“技术面”,它更倾向于从证券的“基本面”来学习,这些指标以传统指标、自定义指标、和其它价格动作工具的形式更为普遍。这些“基本面”的表现形式可以为通货膨胀率、央行利率、失业率、生产力数据、以及许多其它新闻数据点,这些数据典型情况下会对证券价格产生很大影响,每当有数据发布时,它们的波动性就证明了这一点。其中最著名的可能就是几乎每个月第一个周五发布的非农就业数据。此外,肯定还有其它关键新闻数据点没有受到应有的关注,故被大多数交易者忽视,这就是为什么基于这些财经新闻数据点的测试策略有助于发掘其中一些,从而为寻觅商机的交易者传达优势。 


SQLite 数据库可在 MetaEditor IDE 内创建,由于它们是数据存储库,纸面上,我们应该能够用其作为智能系统的数据源,如此它们就可充当指标缓冲区。不仅如此,它们能把财经数据存储在本地,这可轻松地允许离线测试,并且还可在新闻数据源因未知原因损坏时使用,随着某些(或不可避免地大多数)数据点老旧过时,这是一个持续的风险。故此,在本文中,我们会探讨如何使用 SQLite 数据库来存档财经日历新闻,如此这般,由向导组装的智能系统就可以用它来生成交易信号。

作者:Stephen Njuki

 

algotrading》一书 中描述了用于测试和优化 EA 的内置经济日历缓存。

您对读取事件(CSignalEconData::Read)的实现效率很低,也很不实用。

PS.要在测试器中使用 SQLite,应在常用文件夹中创建/放置数据库,并使用 DATABASE_OPEN_COMMON 标志打开。

MQL5 Book: Advanced language tools / Economic calendar / Transferring calendar database to tester
MQL5 Book: Advanced language tools / Economic calendar / Transferring calendar database to tester
  • www.mql5.com
The calendar is available for MQL programs only online, and therefore testing news trading strategies poses some difficulties. One of the solutions...
 
Stanislav Korotky #:

您对读取事件的实现(CSignalEconData::Read)效率低下,几乎没有用处。

这句话中隐藏了什么?如何衡量效率?

 
Aleksey Vyazmikin #:

这句话下隐藏着什么?如何衡量效率?

搜索特定日期时间是通过直接循环整个事件数组来实现的,每次调用都会以几何级数加载 CPU。此外,每次迭代都会调用 StringToTime 和 StringToDouble。

在对一年或一年以上的数千个经济事件进行测试时,速度会明显减慢,更不用说优化了。

 
Stanislav Korotky #:

对特定日期时间的搜索是通过每次调用时对整个事件数组的直接循环来实现的,这将以指数方式加载处理器。此外,每次迭代都会调用 StringToTime 和 StringToDouble。

在测试一年或更长时间的数千个经济事件时,速度会大大降低,更不用说优化了。

感谢您的说明。