Бэктестинг и проверка beginner 13 мин чтения

Как запустить бэктест в MT5 — и какому из двух чисел просадки в отчёте верить

Бэктест в MT5 запускается за пять минут в Strategy Tester, а вот прочитать отчёт, не обманув себя, — отдельная работа. Здесь разобраны данные и настройки, от которых зависит ответ, один прогон приведён целиком, и названа цифра, которую почти никто не проверяет: в 23 опубликованных прогонах просадка по эквити оказалась глубже просадки по балансу все 23 раза.

Опубликовано · Проверено

Вы запускаете бэктест в MT5 так: открываете «Тестер стратегий» через «Вид > Тестер стратегий» (View > Strategy Tester) или по Ctrl+R, выбираете советника, символ, таймфрейм, диапазон дат и режим моделирования, а затем нажимаете «Старт» (Start). Через пять минут у вас есть отчёт. Насущный вопрос — не как до него дойти, а какие из чисел в этом отчёте означают то, что вы думаете.

Это руководство делает обе половины: процедуру и чтение. Именно из чтения растут данные на этой странице, потому что у нас на руках 23 законченных прогона, а их отчёты противоречат сами себе так, как почти никто не проверяет.

Что вы получаете на выходе законченного прогона

Артефакт — это отчёт из двух половин: блок результата (сделки, профит-фактор, просадка, итог) и стоящий за ним список сделок. Важны обе, а цитируют только первую.

В конце вы должны уметь сказать не «она заработала 3 023 $». А вот что: этот набор правил, на этом символе и таймфрейме, на этом окне, с этой моделью тиков, на счёте в 10 000 $ дал столько-то сделок при таком-то профит-факторе, уйдя в худший момент вот настолько под воду. Каждый оборот в этой фразе — настройка, которую выбрали вы, и смена любой из них меняет ответ. Поэтому настройки здесь идут раньше процедуры.

Подготовка: данные и настройки, которые решают ответ

Вот один реальный прогон, который мы провели и опубликовали, — приведён так, чтобы входы и выход можно было держать рядом. Это запись, стоящая за Stillwater, стратегией только в лонг по USD/JPY на пятиминутном графике.

НастройкаЭтот прогонПочему она задана именно так
Советник (Expert)Stillwater (19 входных параметров)Каждый входной параметр, наличие которого подтверждено по отчёту, — та поверхность, которую пришлось бы ввести заново, чтобы воспроизвести прогон
Символ (Symbol)USDJPY_DUKAОтдельный символ с тиковой историей, держится в стороне от котируемого вживую, чтобы прогон был повторяемым
Период, таймфрейм (Period)M5График, на котором вычисляются правила; трендовый фильтр читает M30 изнутри советника
Диапазон дат2019-01-01 → 2026-07-017,5 года — достаточно, чтобы вместить не один режим рынка
Моделирование (Modelling)Every tick based on real ticks (Model 4)Всему, что торгует внутри дня, нужен измеренный, а не интерполированный путь внутри бара
Депозит (Deposit)10 000 USDОдинаков во всех прогонах здесь, поэтому проценты просадки остаются сопоставимыми
Кредитное плечоЗапрошено 1:500 — прогон шёл на 1:100См. ниже. Вот эта строка — не то, чем кажется
Оптимизация (Optimisation)ОтключенаОдин проход. Перебор параметров — другая работа с другими ловушками

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

Качество данных — та настройка, на которой стоит результат. Любая другая цифра отчёта считается поверх ценового ряда, который использовал тестер, поэтому показатель качества моделирования ограничивает то, насколько остальной отчёт вообще про вашу стратегию. Опубликованная запись прогона выше сообщает 100 % качества истории на 229 млн реальных тиков — прочитано прямо из отчёта тестера. Прогон на интерполированных барных данных дал бы другой набор сделок, а не просто другое исполнение: тестер предполагает гладкий путь между известными ему ценами, а стратегия с тесным стопом торгует именно это предположение. Если вы ещё не посмотрели, какие тиковые данные ваш терминал действительно хранит по символу, — это первое, что нужно проверить, раньше самой стратегии.

Поле кредитного плеча — это запрос, а не настройка. Во всех 23 прогонах на руках у тестера просили 1:500, а тест шёл на 1:100 — 0 раз из 23 запрошенная цифра вступила в силу. Это не догадка от перечитывания поля: это закреплено измерением маржи, которую позиция реально съедала внутри теста, — 126,39 USD, что сходится с расчётом для плеча 100 и не сходится с расчётом для плеча 500. Практическое следствие: чувствительная к марже конструкция — сетка, мартингейл, всё, что накапливает позиции, — может пройти бэктест на плече, которого никогда не увидит, или провалить его на плече, которым не стала бы пользоваться. Сверяйте цифру маржи в отчёте с собственной арифметикой, а не доверяйте полю, в которое вы что-то вписали.

Пошагово: запускаем тест в MT5

  1. Откройте «Вид > Тестер стратегий» (View > Strategy Tester) или нажмите Ctrl+R. Панель пристыкуется внизу терминала, а её вкладки — «Настройки» (Settings), «Входные параметры» (Inputs), «Агенты» (Agents) и «Журнал» (Journal).
  2. На вкладке «Настройки» (Settings) выберите советника, затем «Символ» (Symbol) и «Период» (Period). Берите тот символ, которым будете торговать на самом деле: от него приходит спецификация, а не только цена, а размер контракта и правила маржи у разных вариантов одной и той же пары у брокера различаются.
  3. Задайте диапазон дат. Используйте произвольный период с явными датами «с» и «по», а не «Последний месяц», — тогда прогон сможет повторить тот, кто читает только ваш отчёт.
  4. Выберите режим «Моделирование» (Modelling). Every tick based on real ticks — для всего внутридневного; Every tick на основе баров M1 — для более медленных систем; грубые режимы годятся для прогонки параметров, но никогда для цифры, которую вы публикуете.
  5. Задайте «Депозит» (Deposit), валюту и кредитное плечо и на первом проходе оставьте «Оптимизацию» (Optimisation) отключённой. Запишите плечо, которое запросили, — вы будете сверять его с цифрами маржи в отчёте, а не принимать на веру.
  6. Откройте вкладку «Входные параметры» (Inputs) и прочитайте каждое значение. Именно эта вкладка молча тащит правки прошлого прогона — и именно поэтому наши записи сверяют входные параметры с готовым отчётом, а не с файлом, который мы якобы загрузили. Один прогон в этом наборе несёт 362 таких значения.
  7. Нажмите «Старт» (Start). Оставьте «Визуальный режим» (Visual mode) выключенным, если только вы не отлаживаете логику входа: он куда медленнее и подталкивает смотреть вместо того, чтобы измерять.
  8. Когда прогон закончится, откройте вкладки «Результаты» (Results), «График» (Graph) и Backtest, затем щёлкните правой кнопкой внутри отчёта и сохраните его. Сравнивать позже вы будете именно сохранённый отчёт, а не скриншот кривой капитала.
  9. Запишите рядом с результатом сборку терминала. Наши 23 прогона охватывают сборки с 6090 по 6140; два прогона одной стратегии под разными сборками — не автоматически один и тот же эксперимент.
  • Проверьте, какую историю символ действительно хранит
  • Выберите режим моделирования под время удержания
  • Задайте символ, таймфрейм и явный диапазон дат
  • Прочитайте каждое значение на вкладке Inputs
  • Прогоните один проход с отключённой оптимизацией
  • Сохраните отчёт, а не скриншот
  • Прочитайте обе строки просадки раньше строки прибыли
Порядок, в котором приходится принимать решения: данные раньше настроек, настройки раньше прогона

Чтение результатов: что отчёт на самом деле имеет в виду

Возьмём выход того же прогона. Вот что вернулось:

РезультатЗначениеЧто это должно выдержать, прежде чем идти дальше
Всего сделок416Достаточно, чтобы среднее описывало выборку, а не байку
Профит-фактор1,28Выше 1,0 с запасом, который переживёт издержки, вами не смоделированные
Чистая прибыль3 023,01 USDНа депозите 10 000 — это доходность, а не оценка
Просадка по балансу5,82 % (747,57)Худший провал по закрытым сделкам
Просадка по эквити6,11 % (787,60)Худший провал с учётом открытых позиций — тот, который вы бы и наблюдали
Винрейт60,82 %Сам по себе бессмыслен; читайте его вместе со стопом и целью, здесь 100 и 200 пунктов
Условия теста
Идентификатор экспериментаEXP-BACKTEST-RUNBOOK-001
Идентификатор прогонаstillwater__gate_v2_duka_realticks__2019-01-01_2026-07-01
Сборка MT56140
Спецификация контрактаExness-MT5Trial5
Символ / таймфреймUSDJPY_DUKA M5
Период2019-01-01 – 2026-07-01
МодельEvery tick based on real ticks (Model 4)
Депозит10,000 USD
Запрошенное кредитное плечо1:500
Фактическое кредитное плечо1:100
Измерено2026-08-23
Последняя проверка2026-08-25

Три вещи в этом отчёте читают неправильно постоянно.

Две строки просадки отвечают на разные вопросы. Просадка по балансу меряет кривую капитала по закрытым сделкам; просадка по эквити включает плавающий результат по позициям, которые ещё были открыты. Во всех наших 23 прогонах линия эквити была глубже каждый раз, а размер разрыва по описанию стратегии не предсказать: самый узкий — 0,04 пункта (0,67 % против 0,71 %), самый широкий — 11,10 пункта (14,52 % против 25,62 %, отношение 1,76). У стратегии, которая закрывается быстро, разрыв маленький. У той, что пересиживает движение против себя, он большой — и это ровно та стратегия, чью просадку вам нужнее всего знать до того, как вы дадите ей денег.

23 из 23Опубликованных прогонов, где просадка по эквити оказалась глубже просадки по балансу
11,10 пунктаСамый широкий разрыв между двумя строками просадки в одном прогоне — 14,52 % против 25,62 %
0 из 23Прогонов, где запрошенное у тестера кредитное плечо совпало с тем, на котором тест реально шёл

MT5 печатает каждую просадку дважды, по двум определениям. «Максимальная» (Maximal) меряется в тот момент, когда наибольшей была сумма; «Относительная» (Relative) — в тот, когда наибольшим был процент. Это разные моменты одного прогона, поэтому две цифры не являются двумя взглядами на одно событие. Из наших прогонов 16 записаны по определению Maximal и 5 по Relative — и конвейер, который пишет эти записи, отказывается ставить в пару цифру баланса по Maximal с цифрой эквити по Relative, потому что страница, показывающая обе, сравнивала бы два разных мгновения. Приводя просадку, называйте вместе с ней определение.

Собственные итоги отчёта округлены, а его окно может быть не тем окном, которое вы имеете в виду. Пересчитанный по опубликованному списку сделок, профит-фактор того же прогона равен 1,2843, а не 1,28 из отчёта, — здесь это безвредно и совсем не безвредно, когда вы сравниваете двух кандидатов, расходящихся в третьем знаке. Важнее другое: тот прогон на 416 сделок делится на 404 сделки до даты отсечения публикации 2026-04-01 и 12 после неё. Эти поздние 12 вернули профит-фактор 2,3317. Неверной не является ни одна из цифр; они отвечают на разные вопросы, а дату отсечения выбрал человек — тестер её не печатал. Если вы собираетесь делить прогон на «ту часть, на которой я подгонял» и «ту, на которой не подгонял», запишите, где проходит линия, до того, как заглянете во вторую половину. Чтение отчёта бэктеста MT5 проводит это деление по всем 23 прогонам и показывает, насколько далеко уезжает итоговая цифра.

Ловушки, которые тихо обесценивают прогон

Улучшаем: меняем одно, перепрогоняем, сравниваем

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

Больше всего информации на один прогон даёт такой порядок:

  1. Меняйте окно раньше, чем стратегию. Прогоните 2019–2022 и 2022–2026 по отдельности. Если половины расходятся, параметры описывают один период, и никакая подкрутка этого не чинит.
  2. Меняйте символ. Правило, работающее только на одной паре, — это факт об этой паре. Наш набор включает одни и те же общие подходы по USD/JPY, EUR/GBP, AUD/CAD, NZD/USD, индексу и криптопаре ровно по этой причине.
  3. Меняйте режим моделирования. Перепрогоните уцелевшего кандидата на более грубой модели. Если результат рассыпается, преимущество жило внутри бара, а путь внутри бара — наименее заслуживающая доверия часть любой симуляции.
  4. И только потом меняйте параметры — и относитесь к любой настройке, которую пришлось искать перебором, как к более слабому утверждению, чем к той, что выбрана заранее.

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

Дальнейшие шаги: проверка вперёд до выхода на реальный счёт

Один чистый бэктест — первый из четырёх шагов, а не финишная черта.

Оптимизируйте, если у правила есть параметры, которые стоит перебирать. Записывайте весь диапазон перебора, а не выигравший проход: результат, который пришлось искать, — свидетельство о поиске, и именно диапазон говорит читателю, насколько усердно вы искали. Оптимизация параметров проходит этот шаг целиком и разбирает восемь наших собственных записанных переборов: 116 комбинаций и ни одной настройки, которую мы были бы готовы выпустить.

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

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

И только потом решайте. Запишите заранее тот убыток, при котором вы её выключите. Стоп, назначенный до внесения денег, — это решение; назначенный во время просадки — реакция.

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

Часто задаваемые вопросы

Каким по длине должен быть период бэктеста?
Достаточно длинным, чтобы стратегия отторговала условия, которые встретятся ей снова, — а это вопрос о числе сделок, а не о длине календаря. Из 23 опубликованных здесь прогонов 22 начинаются 2019-01-01, медианное окно — 7,5 года, но частота сделок внутри этих окон колеблется от 14,2 до 945,1 сделки в год. Семилетнее окно на медленной стратегии всё равно может оказаться выборкой в сотню сделок, а сотня сделок — маленькое число, чтобы делать по нему вывод. Сначала читайте количество сделок и только потом диапазон дат.
Почему результаты бэктеста меняются, когда я запускаю тот же тест ещё раз?
Почти всегда потому, что изменилась история цен, а не стратегия. Тестер скачивает и кеширует историю отдельно по каждому символу, поэтому первый прогон по окну, ранние годы которого ещё не были сохранены, идёт по другому ряду тиков, чем второй прогон уже после того, как пропуски заполнены. Режим моделирования делает то же самое заметнее: переключение между Every tick based on real ticks и Every tick generated from M1 bars меняет, какие сделки вообще откроются, а не только то, по какой цене их исполнят. Записывайте режим и сборку терминала вместе с результатом — иначе два ваших собственных прогона станут несопоставимыми.
Учитывает ли Strategy Tester спред, комиссию и своп?
Он применяет то, что несут в себе данные цен и спецификация символа, а это не то же самое, что выбрать эти издержки самому. В 23 опубликованных здесь прогонах комиссия вышла нулевой во всех до одного, и лишь один прогон может назвать собственный средний спред — 19,14 пункта, и только потому, что внутри теста рядом со стратегией работал советник-регистратор. Все остальные унаследовали тот спред, который нёс в себе ряд истории, и нигде его не зафиксировали. Если издержка важна для вашего результата, измерьте её внутри теста, а не исходите из того, что тестер её смоделировал.
Достаточно ли хорошего бэктеста, чтобы запустить советника на реальном счёте?
Нет. Бэктест ограничивает то, что набор правил сделал бы на записанных ценах при смоделированной модели исполнения. В нём нет ни задержки, ни реквот, ни расширения спреда, которое приходит ровно в тот момент, когда срабатывает сигнал. Рабочий порядок такой: бэктест, затем оптимизация, если у правила есть параметры, которые стоит перебирать, затем проверка вперёд на данных, которых перебор не видел, затем демо-счёт — достаточно долгий, чтобы увидеть, как стратегия теряет и восстанавливается. Прошлые результаты описывают прошлое, и ничто на этой странице не является прогнозом.

Связанные термины

Ссылки на глоссарий