Тестирование роботов на исторических данных не является простой задачай, как это может показаться начинающему роботостроителю.
Общение с посетителями моего сайта и собственный опыт тестирования показал, что очень часто реализуются две типовые ошибки .
Эти ошибки всегда приводят к улучшению получаемых результатов.
При тестировании торговых алгоритмов можно условно выделить два типа сигналов.
Первый тип — сигналы изменения позиции, синхронизиронные с моментом открытия или закрытия свечи. При реализации этих сигналов возникают ошибки заглядывания в будущее.
Второй тип — сигналы изменения позиции внутри свечи. При реализации этих сигналов возникают ошибки искажения истории.
Заглядывание в будущее.
Об этой ошибке я уже неоднократно писал.
Повторю способы ее получения.
Во-первых, ошибка может возникать при использовании индикаторов типа fractal и zigzag.
Во-вторых, ошибка всегда возникает при совершении сделки на close свечи возникновения сигнала.
При этом многие ошибочно считают, что большая ликвидность исследуемого инструмента сводит к нулю данную ошибку.
Однако, это не так.
Дело в том, что сигнал может возникнуть на последней свече торговой сессии.
Это означает, что в реальности, сделка совершится на открытии следующего торгового дня.
И если на открытии возникает ГЕП, то совершение сделки по цене закрытия предыдущего дня увеличивает прибыль по лонг позиции на величину гепа(геп вверх ) и уменьшает убыток на эту величину (геп вниз).
Таким образом, не только виртуально увеличивается прибыль и уменьшаются убытки, но и уменьшается просадка.
В результате получается очень хорошая торговая стратегия, которая физически не реализуема.
Искажение прошлого.
Эта ошибка менее очевидна, чем первая.
Полагаю, что ее совершают большинство.
Она возникает при реализации алгоритма формирования стоп-сигналов по собственным алгоритмам.
Проблема в том, что если сигнал и сделка совершаются внутри свечи, то в силу неопределенности поведения цены внутри тайма, нельзя сказать сколько сделок в действительности совершится внутри свечи.
Все что мы знаем о движении цены внутри свечи — это достигнутый максимум и минимум.
Но мы не знаем, ни их очередности, ни их повторяемости.
При попытке реализовать совершение сделки внутри свечи по стоп-сигналу, мы фактически придумываем движение цены и тем самым искажаем историю.
Последствия таких искажений сложно спрогнозировать заранее.
Как правило, стоп-сигналы, реализованные по собственным алгоритмам, показывают на истории значительно лучшие результаты.
Каждый разработчик решает сам, стоит ли ему строго соблюдать физическую реализуемость стратегии, при этом получая «так себе» данные.
Либо, немного слукавив, заглянув в будущее или исправив прошлое, продемонстрировать удивительные результаты.
В заключение данной статьи, приведу несколько советов:
1) В простых торговых стратегиях практически невозможно получить величину просадки менее 15%.
Если получили 2-5%, то это повод, чтобы усомниться в реализуемости алгоритма.
2) Формируйте все сигналы, в том числе и стоп на закрытии свечи, а сделки совершайте на открытии следующей свечи.