Скачать MetaTrader 5

Тестирование торговых стратегий на реальных тиках

2 августа 2016, 10:24
MetaQuotes Software Corp.
2
7 035

В данной статье мы покажем результаты тестирования простой торговой стратегии в 3-х режимах: "OHLC на M1" с использованием только цен Open,High, Low и Close минутных баров; затем детальное моделирование в режиме "Все тики", и самое достоверное тестирование в режиме "Каждый тик на основе реальных тиков" с использованием записанных тиков из истории.

Это позволит нам понять, какого качества мы достигаем на разных режимах, и покажет, как правильно пользоваться тестером для быстрого получения результатов. Режим "OHLC на M1" позволяет получить быстрое оценочное тестирование,  моделирование в режиме "Все тики" дает нам хорошее приближение к реалиям, а тестирование на реальных тиках дает самые точные результаты, но требует соответствующих затрат времени. Кроме того, ошибки в логике торгового робота могут влиять на количество торговых операций и приводить к тому, что результаты проверки стратегии на истории зависят от выбранного режима тестирования.


Какую торговую стратегию мы тестировали

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

После первого же прорыва диапазона вверх или вниз начинает накапливаться статистика поступающих тиков: сколько тиков оказалось выше уровня пробитого диапазона, и сколько — ниже. Как только пришедших тиков станет больше или равно TicksForEnter=30, принимается решение о входе в рынок по текущей цене. Если диапазон был пробит вверх, то количество тиков выше уровня пробития должно быть больше количества тиков ниже этого уровня. В этом случае совершается покупка. Для входа в короткую позицию всё наоборот.

Выход из открытой позиции происходит по времени, через BarsForExit баров. Как видите, правила торговли простые. Для наглядности они представлены на рисунке:


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


Как мы тестировали

Торговая стратегия была протестирована на EURUSD на H1 на первых 6 месяцах 2016 года — с 01.01.2016  по 30.06.2016. Все параметры советника были установлены в значения по умолчанию, ведь нашей задачей было простое тестирование стратегии в разных режимах моделирования.



Сравнение результатов при разных режимах тестирования

Результаты тестирования в разных режимах сведены в таблицу. В первую очередь в глаза бросается различие в количестве торговых операций. Соответственно, и все остальные показатели тестирования тоже разные. При этом тестирование в режиме "OHLC на M1" прошло за 1.57 секунды, что в 23 раза быстрее, чем в режиме "Все тики". Такая разница будет иметь большое значение при оптимизации входных параметров торговой системы.

В свою очередь, режим "Каждый тик на основе реальных тиков" был еще затратнее по времени — 74 секунды против 36.7 секунд в режиме "Все тики". Это легко объясняется тем, что при использовании реальных тиков было смоделировано более 34 миллионов тиков, что почти в 2 раза больше, чем в режиме "Все тики". Таким образом, чем больше тиков мы используем при тестировании, тем больше времени требуется на один проход в тестере стратегий.

Параметр
OHLC на M1
Все тики
Каждый тик
на основе реальных
Тиков
731 466
 18 983 485
34 099 141
Чистая прибыль
169.46 -466.81
-97.24
Трейдов
96
 158156
Сделок
192
 316312
Просадка по эквити (%)
311.35 (3.38%)
 940.18 (9.29%)
625.79 (6.07%)
Просадка по балансу281.25 (3.04%)
882.58 (8.76)
591.99 (5.76%)    
Прибыльные трейды (%)
50 (52.08%) 82 (51.90%)73 (46.79%)
Средняя непрерывная серия выигрышей
2
2
2
Время тестирования , включая вермя генерации тиков
1.6 секунды
36.7 секунд
74 секунды (1 минута 14 секунд )

Отчеты тестирования в разных режимах моделирования мы собрали в виде анимированных GIF-рисунков, чтобы можно было видеть разницу в статистике.


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



Торговые системы, зависящие от поступления тиков

Продемонстрированная торговая система очень сильно зависит от способа моделирования — от количества поступающих тиков и порядка их поступления. При тестировании в режиме "OHLC на M1" у нас моделируется меньше всего тиков, и для входа в рынок их не всегда может оказаться достаточно. Режимы "Все тики" и "Каждый тик на основе реальных тиков" могут иметь совершенно различный порядок поступления тиков. При моделировании "Все тики" у нас может получиться монотонно возрастающая или монотонно убывающая последовательность тиков, что практически гарантирует вход в рынок при прорыве диапазона. При тестировании же в режиме "Каждый тик на основе реальных тиков" используется записанная история тиков, и там динамика изменения цены может быть совершенно неожиданной.

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



Четыре режима генерации тиков

Тестер стратегий в терминале MetaTrader 5 позволяет проверять торговые стратегии в четырех режимах моделирования тиков, они описаны в статье Основы тестирования в MetaTrader 5. Самый быстрый и грубый — режим "Только цены открытия", при котором торговые операции могут совершаться только на открытии нового бара. В этом режиме советнику недоступны никакие действия внутри бара, и он хорошо подходит для тестирования стратегий, не учитывающих того, как развивается цена внутри бара.

Далее по точности моделирования идет режим "OHLC на M1", при котором моделируются цены Open, High, Low и Close каждого минутного бара, входящего в тестируемый диапазон истории. Таким образом, при тестировании на таймфрейме H1 в течение часа эксперт будет вызван 240 раз: на каждом из 60 минутных баров обработчик  OnTick() будет вызван 4 раза — по разу для каждой цены OHLC. При таком моделировании уже можно использовать Trailing Stop, просматривать развитие цены на других таймфреймах и индикаторах, если это необходимо. Например, тестировать стратегии типа "3 экрана Элдера".

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

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

Начните разработку системы с режима "OHLC на M1"

Как видите, нельзя одновременно выигрывать во всем — если мы хотим сократить время и быстро проверить торговую идею, то мы теряем точность на простых режимах моделирования. Если же для тестирования необходимо обеспечить точность цен входа и последовательность торговых сигналов, то нужно использовать более точные режимы, требующие больших временных затрат.

Прежде чем приступить к тестированию торговой стратегии, необходимо четко отдавать себе отчет в том, что от выбранного режима моделирования зависит точность результатов и объем времени, затрачиваемый на их получение. Если необходимо быстро оценить и проверить торговую стратегию, используйте режим "OHLC на M1". В нем вы сможете быстро оценить потенциал торговой системы.

Следующий этап — отладка и режим "Все тики"

Если предварительные результаты оказались удовлетворительными, то можно продолжить доводку и анализ торговой системы в более точных режимах моделирования. Здесь на помощь придет отладка стратегии в режиме тестирования — вы можете выставить точки останова и проверять состояние переменных и выполнение заложенных в советника условий. Здесь вас могут ожидать неприятные сюрпризы, если вы забыли предусмотреть некоторые нюансы вашей системы.


Точность тестирования против скорости

Как видно из результатов тестирования описанной торговой системы в трех режимах, трейдер всегда может и должен выбирать подходящий для его торговой стратегии режим моделирования тиков.  Если вы тестируете систему на дневном таймфрейме, то вам вполне подойдет режим "Только цены открытия" — высокая скорость тестирования не будет в ущерб качеству полученных результатов.

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

Между этими двумя крайними режимами находятся "OHLC на M1" и "Все тики", которые работают быстрее, чем "Каждый тик на основе реальных тиков", но дают меньшую точность тестирования. В общем виде можно сформулировать закон, описывающий время и точность тестирования:

Чем быстрее проходит тестирование, тем ниже точность моделирования торговли. Чем детальнее и точнее моделируется развитие цены на истории, тем больше времени требуется на проведение тестирования.

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

Не для всех стратегий необходимо детальное моделирование на начальных этапах разработки. Правильный выбор режима тестирования поможет вам сэкономить время и отсеять большее количество неправильных стратегий!

И только после решения основной задачи — создания прибыльной автоматической торговой системы — вы можете проводить оптимизацию на реальных тиках. На этом этапе  вам уже пригодятся мощности вычислительной распределенной сети MQL5 Cloud Network.

Прикрепленные файлы |
SimpleBreakOut.mq5 (10.48 KB)
Maxim Kuznetsov
Maxim Kuznetsov | 2 авг 2016 в 10:57

не оспаривая необходимость тестирования на реальных данных, замечу что

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

как говорит о том что стратегия неплоха. То есть существуют достаточно продолжительные периоды (рыночных условий) когда стратегия выигрывает и может применяться на практике, то есть приложенный эксперт можно привести к состоянию приносящего прибыль. Дальше задача аналитика - выявлять эти внешние условия и признаки начала/конца таких периодов.
Andrei Novichkov
Andrei Novichkov | 16 окт 2017 в 09:50

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

Графические интерфейсы IX: Элементы "Индикатор выполнения" и "Линейный график" (Глава 2) Графические интерфейсы IX: Элементы "Индикатор выполнения" и "Линейный график" (Глава 2)

Вторая глава девятой части серии будет посвящена элементам «Индикатор выполнения» и «Линейный график». Как всегда, будут показаны подробные примеры того, как можно использовать эти элементы в своих MQL-приложениях.

Какие проверки должен пройти торговый робот перед публикацией в Маркете Какие проверки должен пройти торговый робот перед публикацией в Маркете

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

Графические интерфейсы X: Обновления для библиотеки Easy And Fast (build 2) Графические интерфейсы X: Обновления для библиотеки Easy And Fast (build 2)

С момента предыдущей публикации статьи этой серии, библиотека Easy And Fast пополнилась новыми возможностями. Проведена частичная оптимизация схемы и кода библиотеки, что немного сократило потребление ресурсов CPU. Некоторые повторяющиеся методы во многих классах элементов были перенесены в базовый класс CElement.

LifeHack для трейдера: один бэк-тест хорошо, а четыре – лучше LifeHack для трейдера: один бэк-тест хорошо, а четыре – лучше

Перед каждым трейдером при первом одиночном тестировании встает один и тот же вопрос — "Какой же из четырех режимов использовать?" Каждый из предлагаемых режимов имеет свои преимущества и особенности, поэтому сделаем проще - запустим сразу все режимы одной кнопкой! В статье показано, как с помощью Win API и небольшой магии увидеть одновременно все четыре графика тестирования.