Strategy Tester: режимы моделирования при тестировании торговых стратегий

MetaQuotes | 13 сентября, 2005

Введение

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

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

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

Способы моделирования ценовых баров

В клиентском терминале MetaTrader 4 используется три варианта моделирования развития баров:

  • Все тики (наиболее точный метод на основе всех доступных меньших таймфреймов)
  • Контрольные точки (очень грубый метод на основе ближайшего меньшего таймфрейма, результаты нельзя принимать во внимание)
  • По ценам открытия (быстрый метод на сформировавшихся барах, только для советников с явным контролем открытия баров)

Перед началом тестирования происходит генерация промежуточных ценовых тиков с записью результатов в файл (пример: /tester/history/eurusd_1440_1.fxt). Каждый раз, при нажатии на кнопку "Старт", тестер заново генерирует файл с тестовой последовательностью тиков. Fxt-файлы легко открываются в терминале как оффлайновые графики через File -> Open offline.



Примеры моделирования

Начнем с самого простого способа моделирования на основе часового графика. Рассмотрим часовой бар (5 сентября 2007 г., 10:00), выделенный красным:



По ценам открытия

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



В этом режиме сначала моделируется открытие бара (Open = High = Low = Close, Volume=1), что дает возможность эксперту точно идентифицировать окончание формирования предыдущего ценового бара. Именно на этом зарождающемся баре запускается тестирование эксперта. На следующем шаге выдается уже полностью сформированный текущий бар, но на нем тестирование не производится!

Контрольные точки (ближайший меньший таймфрейм)

Метод моделирования контрольных точек предназначен для грубой оценки экспертов, торгующих внутри бара. Для этого метода необходимо наличие исторических данных ближайшего меньшего таймфрейма. В некоторых случаях имеющиеся данные меньшего таймфрейма не полностью покрывают временной диапазон тестируемого таймфрейма. При отсутствии данных меньшего таймфрейма развитие бара генерируется на основе предопределенных волновых шаблонов, как это было в предыдущей, третьей версии клиентского терминала MetaTrader 3.
Как только появляются исторические данные меньшего таймфрейма, интерполяция применяется уже к этим данным. Однако точно существующие цены OHLC меньшего таймфрейма выступают в качестве контрольных точек. В большинстве случаев результаты тестирования экспертов по методу контрольных точек могут приниматься во внимание только как оценочные, а не как окончательные. Такие результаты имеют промежуточный оценочный характер. На рисунке ниже видно, как развивался часовой бар 2007.09.05 10:00 по методу контрольных точек.



Все тики (все доступные меньшие таймфреймы)

Этот режим позволяет наиболее точно смоделировать движение цены внутри бара. В отличие от "контрольных точек" потиковый метод использует для генерации данные не только ближайшего меньшего таймфрейма, но и всех доступных меньших таймфреймов. При этом, если на какой-то временной диапазон одновременно существуют данные более одного таймфрейма, то для генерации используются данные самого меньшего таймфрейма. Так же, как и в предыдущем методе, генерируются контрольные точки на основе данных OHLC наименьшего доступного таймфрейма. Для генерации движения цены между контрольными точками также используется интерполяция на основе предопределенных шаблонов, поэтому крайне желательно наличие минутных данных, покрывающих весь диапазон тестирования. Возможна ситуация, когда генерируется несколько одинаковых тиков подряд. В этом случае дублирующиеся котировки фильтруются, и фиксируется объем последней из таких котировок.



Необходимо учитывать очень большой возможный объем сгенерированных потиковых данных. Это может сказаться на потребляемых ресурсах операционной системы и на скорости тестирования.

Внимание: не нужно запускать потиковое тестирование при отсутствии более мелких таймфреймов, полностью покрывающих исследуемый период. Потиковое моделирование предназначено только для тестирования на основе данных более мелких таймфреймов!

Использование диапазона дат при моделировании

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

Сравнение с эталоном из периода M1

Для сравнения точности внутрибарного моделирования воспользуемся минутным графиком от 5 сентября 2007 г., 10:00 до 11:00.



В режиме "все тики" сгенерирована следующая последовательность.


Так как средний тиковый объём каждого бара в этом диапазоне не превышает 5, то последовательность сгенерирована с минимальным использованием интерполяции. Почти все цены - реально существующие OHLC.


Даже без масштабирования путём простого наложения двух графиков, часового и минутного, друг на друга (на сгенерированном часовом графике цены закрытия отмечены зелёной линией) получается практически точное совпадение:



Выводы

Можно получить максимально точное тестирование и хорошую гарантию достоверности результатов, если есть вспомогательные таймфреймы более мелких периодов, которые на 100% покрывают исследуемый период. То есть, вопрос качественного потикового тестирования превращается в поиск детальных исторических данных...