DF-ТРД-002 · Инструменты для трейдинга
Бэктест торговой стратегии: как проверить советника на истории
- что такое бэктест и какие вопросы он закрывает, а какие — нет
- чем реальные тики отличаются от сгенерированных и когда это меняет вывод
- какие настройки зафиксировать до прогона, чтобы отчёт можно было повторить
- как читать отчёт тестера и не принять подгонку параметров за работающую программу
Советник написан — своими руками или на заказ. До живых сделок остаётся один шаг: прогнать программу по прошлым котировкам и посмотреть, что она делала. Этот шаг и называется бэктестом.
По справке MetaTrader 5, тестирование советника — это «одиночный проход с фиксированными параметрами на исторических данных». Бэктест отвечает на два вопроса: следует ли программа заявленным правилам и как она ведёт себя на выбранных данных. Ответ фиксируется в отчёте, и при тех же настройках его можно получить заново.
Ниже — данные для прогона, настройки до запуска, чтение отчёта тестера и граница между проверкой программы и обещаниями результата.
Что такое бэктест и что он проверяет?
В MetaTrader 5 прогон выполняет встроенный тестер стратегий, в MetaTrader 4 — окно «Тестер»: выбираете советника, инструмент, период и запускаете проход по истории.
Проверяет бэктест в первую очередь программу: совершает ли советник входы и выходы по правилам из задания, срабатывают ли стоп-уровни, нет ли ошибок в коде, что происходит на трудных участках — разрывах котировок, нехватке истории.
Второй вопрос — поведение на выбранных данных. Но исторический тест не рассказывает о будущем рынка: он доказывает лишь, что на этом участке правила выполнялись или нарушались. Итог бэктеста — факт о программе, а не прогноз.
Реальные или сгенерированные тики?
Советник реагирует на тики — минимальные изменения цены. Взять их можно двумя путями: «на реальных тиках, предоставляемых брокером, или же на тиках, сгенерированных тестером стратегий на основе минутных данных», — описывает справка MetaTrader 5.
В пятой версии это режимы генерации тиков. «Все тики» — самый точный из моделирующих: тестер достраивает движение цены внутри минутных баров. «Каждый тик на основе реальных тиков» работает на записях брокера, здесь моделирования нет. В MetaTrader 4 режима реальных тиков нет — только три метода моделирования: для тщательного тестирования справка рекомендует «Все тики», а контрольные точки — для прогонов при оптимизации.
Разница существенная. На реальных тиках спред внутри минуты меняется; на сгенерированных он зафиксирован одним значением бара. Если программа чувствительна к спреду, у грубого прогона выводы могут отличаться.
В MetaTrader 4 есть ещё одна особенность: история хранит только цены Bid, а цену Ask тестер моделирует по спреду на момент запуска. А точность стоит данных: тиковая история значительно больше минутной, и первое скачивание занимает время.
Что зафиксировать до прогона?
Главное свойство добротного бэктеста — воспроизводимость: прогон можно повторить и получить тот же отчёт. Для этого до запуска фиксируют настройки; в MetaTrader 5 их сохраняют в ini-файл и возвращают в пару кликов.
| Настройка | Зачем фиксировать |
|---|---|
| Символ и период | определяют данные, по которым идёт прогон |
| Интервал дат | границы участка истории для этой проверки |
| Режим генерации тиков | точность прогона против его скорости |
| Задержки исполнения | приближают исполнение к условиям брокера |
| Депозит и плечо | условия, в которых работает программа |
| Входные параметры | значения, при которых получен именно этот отчёт |
С интервалом есть две детали. Тестер догружает историю до указанной даты — как минимум 100 баров, поэтому фактический старт может сдвинуться, и это видно в журнале. А конечная дата в период не входит: тест заканчивается на последнем тике предыдущего дня.
Как читать отчёт тестера?
Результаты появляются на вкладках «Бэктест» и «График», подробный отчёт — на «Бэктест». Читать его удобно в два слоя.
Первый слой — данные и поведение программы. Показатель «Качество истории» отражает, насколько пригодны котировки: если он низкий, сначала обновите историю, а потом делайте выводы. Вкладка «Журнал» собирает ошибки и сообщения самой программы — отчёт имеет смысл, когда журнал чист. В визуальном режиме каждая сделка видна на графике: удобно сверять входы с правилами.
Второй слой — сводные показатели: число трейдов, максимальная просадка средств (наибольшее падение между локальным максимумом и следующим минимумом), коэффициент Шарпа и другие. Их фиксируют в том же протоколе, что и настройки: так версии программы сравнимы по одним условиям. В MetaTrader 4 есть похожий показатель «Качество моделирования»: цветная полоса в отчёте показывает, где тики достроены, а где данных не хватило.
Подгонка параметров и форвард-период
Оптимизация — не то же самое, что бэктест: стратегия «прогоняется несколько раз с различным набором параметров». Перебор помогает подобрать настройки, но чем больше вариантов перебрано на одном участке, тем вероятнее подгонка: параметры подстроятся именно под этот кусок истории.
«Данная опция позволяет проверить результаты тестирования для исключения подгонки на определенных периодах времени» — Справка MetaTrader 5, Тестирование стратегий
Речь о форвард-периоде. Указанный интервал делится на две части: на первой, бэк-тестировании, программа адаптируется, на второй, форвард-тестировании, проверяются выбранные параметры. Практическое правило: настройки подбирают на первой части, а решение принимают по второй.
Отрицательный итог — тоже результат. Если программа нарушает собственные правила или ломается на трудных данных, бэктест показал это до живых сделок: исправляйте правила в задании и коде, не перебирайте параметры до красивой кривой. Как устроена проверка торговых инструментов у нас — на странице инструментов для трейдинга. Когда советник выйдет на живые сделки, записи о них собирает журнал сделок трейдера.
Вопросы и ответы
Чем бэктест отличается от оптимизации?
Бэктест — один прогон с фиксированными параметрами, оптимизация — серия прогонов с разными наборами ради подбора настроек. Запускать её стоит после того, как одиночный бэктест подтвердил корректность программы.
Можно ли доверять тесту на сгенерированных тиках?
Для проверки логики — да, для выводов о поведении внутри бара — с осторожностью: спред в сгенерированных тиках не меняется внутри минуты. Решающие прогоны в MetaTrader 5 повторяйте на реальных тиках.
Как провести бэктест в MetaTrader 4?
Через окно «Тестер»: выберите советника, символ, период и один из трёх методов моделирования. Для тщательного прогона — «Все тики»; качество моделирования видно в отчёте по цветной полосе. Режима реальных тиков в четвёртой версии нет.
Источники
- Тестирование стратегий — справка MetaTrader 5, MetaQuotes
- Реальные и сгенерированные тики — справка MetaTrader 5, MetaQuotes
- Отчёт о тестировании — справка MetaTrader 5, MetaQuotes
- Тестирование стратегий — справка MetaTrader 4, MetaQuotes
- Настройка тестера — справка MetaTrader 4, MetaQuotes
Материал носит информационный характер и описывает разработку и проверку программных инструментов. Он не является индивидуальной инвестиционной рекомендацией и не содержит предложения совершить сделку. Deskforge не является брокером, дилером, управляющей компанией или инвестиционным советником, не управляет средствами клиентов и не совершает сделок за них. Торговля на финансовых рынках связана с риском потери капитала; результаты тестирования на исторических данных и прошлые результаты не гарантируют будущих. Решение о сделках пользователь принимает самостоятельно.