Обсуждение статьи "Возможности Мастера MQL5, которые вам нужно знать (Часть 21): Тестирование с данными экономического календаря"

 

Опубликована статья Возможности Мастера MQL5, которые вам нужно знать (Часть 21): Тестирование с данными экономического календаря:

Данные экономического календаря по умолчанию недоступны для тестирования с помощью советников в тестере стратегий. Мы рассмотрим, как базы данных могут помочь обойти это ограничение. В частности, мы увидим, как можно использовать базы данных SQLite для архивирования новостей Экономического календаря, чтобы советники, собранные с помощью Мастера, могли использовать их для генерации торговых сигналов.

Экономические данные могут усилить торговую систему, поскольку они больше ориентированы на "фундаментальные" показатели ценных бумаг, а не на "технические", которые более распространены в виде традиционных и пользовательских индикаторов и других инструментов анализа ценового поведения. Эти "фундаментальные" показатели могут включать в себя темпы инфляции, процентные ставки центральных банков, уровень безработицы, данные о производительности труда и множество других новостных данных, которые обычно оказывают большое влияние на цены торговых инструментов, о чем свидетельствует их волатильность при каждом выходе данных. Самым известным из них, вероятно, является показатель занятости вне сельскохозяйственного сектора, который публикуется почти каждую первую пятницу месяца. Наверняка существуют и другие ключевые новостные данные, которые упускаются из виду большинством трейдеров. Именно поэтому тестирование стратегий, основанных на этих новостных экономических данных, может помочь выявить некоторые из них и, следовательно, предоставить трейдеру преимущество.


Базы данных SQLite можно создавать в среде разработки MetaEditor, и, поскольку они представляют собой хранилища данных, в теории мы можем использовать их в качестве источника данных для советника, чтобы они действовали как буферы индикаторов. Более того, они могут хранить экономические данные локально, что позволяет легко проводить тестирование офлайн, а также использовать их в случае, если источник новостных данных будет поврежден, что представляет собой постоянный риск, поскольку большинство точек данных устаревает. В частности, мы увидим, как можно использовать базы данных SQLite для архивирования новостей Экономического календаря, чтобы советники, собранные с помощью Мастера, могли использовать их для генерации торговых сигналов.

Автор: Stephen Njuki

 

Кэширование встроенного экономического календаря для тестирования и оптимизации советников было описано в книге по алготрейдингу.

Ваша реализация чтения событий (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 #:

Что скрывается под этой фразой? Как измеряется эффективность?

Поиск конкретного времени даты реализован через прямой цикл по всему массиву событий при каждом вызове, что загружает процессор в геометрической прогрессии. Кроме того, на каждой итерации вызываются StringToTime и StringToDouble.

При тестировании в течение года или более тысяч экономических событий это будет существенно замедляться, не говоря уже об оптимизации.

 
Stanislav Korotky #:

Поиск конкретного времени даты реализован через прямой цикл по всему массиву событий при каждом вызове, что загружает процессор в геометрической прогрессии. Кроме того, на каждой итерации вызываются StringToTime и StringToDouble.

При тестировании в течение года или более тысяч экономических событий это будет существенно замедляться, не говоря уже об оптимизации.

Спасибо за пояснения.