Вы запускаете бэктест в 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-01 | 7,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
- Откройте «Вид > Тестер стратегий» (View > Strategy Tester) или нажмите
Ctrl+R. Панель пристыкуется внизу терминала, а её вкладки — «Настройки» (Settings), «Входные параметры» (Inputs), «Агенты» (Agents) и «Журнал» (Journal). - На вкладке «Настройки» (Settings) выберите советника, затем «Символ» (Symbol) и «Период» (Period). Берите тот символ, которым будете торговать на самом деле: от него приходит спецификация, а не только цена, а размер контракта и правила маржи у разных вариантов одной и той же пары у брокера различаются.
- Задайте диапазон дат. Используйте произвольный период с явными датами «с» и «по», а не «Последний месяц», — тогда прогон сможет повторить тот, кто читает только ваш отчёт.
- Выберите режим «Моделирование» (Modelling). Every tick based on real ticks — для всего внутридневного; Every tick на основе баров M1 — для более медленных систем; грубые режимы годятся для прогонки параметров, но никогда для цифры, которую вы публикуете.
- Задайте «Депозит» (Deposit), валюту и кредитное плечо и на первом проходе оставьте «Оптимизацию» (Optimisation) отключённой. Запишите плечо, которое запросили, — вы будете сверять его с цифрами маржи в отчёте, а не принимать на веру.
- Откройте вкладку «Входные параметры» (Inputs) и прочитайте каждое значение. Именно эта вкладка молча тащит правки прошлого прогона — и именно поэтому наши записи сверяют входные параметры с готовым отчётом, а не с файлом, который мы якобы загрузили. Один прогон в этом наборе несёт 362 таких значения.
- Нажмите «Старт» (Start). Оставьте «Визуальный режим» (Visual mode) выключенным, если только вы не отлаживаете логику входа: он куда медленнее и подталкивает смотреть вместо того, чтобы измерять.
- Когда прогон закончится, откройте вкладки «Результаты» (Results), «График» (Graph) и Backtest, затем щёлкните правой кнопкой внутри отчёта и сохраните его. Сравнивать позже вы будете именно сохранённый отчёт, а не скриншот кривой капитала.
- Запишите рядом с результатом сборку терминала. Наши 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 |
| Сборка MT5 | 6140 |
| Спецификация контракта | 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). У стратегии, которая закрывается быстро, разрыв маленький. У той, что пересиживает движение против себя, он большой — и это ровно та стратегия, чью просадку вам нужнее всего знать до того, как вы дадите ей денег.
MT5 печатает каждую просадку дважды, по двум определениям. «Максимальная» (Maximal) меряется в тот момент, когда наибольшей была сумма; «Относительная» (Relative) — в тот, когда наибольшим был процент. Это разные моменты одного прогона, поэтому две цифры не являются двумя взглядами на одно событие. Из наших прогонов 16 записаны по определению Maximal и 5 по Relative — и конвейер, который пишет эти записи, отказывается ставить в пару цифру баланса по Maximal с цифрой эквити по Relative, потому что страница, показывающая обе, сравнивала бы два разных мгновения. Приводя просадку, называйте вместе с ней определение.
Собственные итоги отчёта округлены, а его окно может быть не тем окном, которое вы имеете в виду. Пересчитанный по опубликованному списку сделок, профит-фактор того же прогона равен 1,2843, а не 1,28 из отчёта, — здесь это безвредно и совсем не безвредно, когда вы сравниваете двух кандидатов, расходящихся в третьем знаке. Важнее другое: тот прогон на 416 сделок делится на 404 сделки до даты отсечения публикации 2026-04-01 и 12 после неё. Эти поздние 12 вернули профит-фактор 2,3317. Неверной не является ни одна из цифр; они отвечают на разные вопросы, а дату отсечения выбрал человек — тестер её не печатал. Если вы собираетесь делить прогон на «ту часть, на которой я подгонял» и «ту, на которой не подгонял», запишите, где проходит линия, до того, как заглянете во вторую половину. Чтение отчёта бэктеста MT5 проводит это деление по всем 23 прогонам и показывает, насколько далеко уезжает итоговая цифра.
Ловушки, которые тихо обесценивают прогон
Улучшаем: меняем одно, перепрогоняем, сравниваем
Цикл намеренно скучный. Меняйте одну переменную, перепрогоняйте и записывайте оба результата. Две переменные разом — и разницу не отнести ни к одной из них.
Больше всего информации на один прогон даёт такой порядок:
- Меняйте окно раньше, чем стратегию. Прогоните 2019–2022 и 2022–2026 по отдельности. Если половины расходятся, параметры описывают один период, и никакая подкрутка этого не чинит.
- Меняйте символ. Правило, работающее только на одной паре, — это факт об этой паре. Наш набор включает одни и те же общие подходы по USD/JPY, EUR/GBP, AUD/CAD, NZD/USD, индексу и криптопаре ровно по этой причине.
- Меняйте режим моделирования. Перепрогоните уцелевшего кандидата на более грубой модели. Если результат рассыпается, преимущество жило внутри бара, а путь внутри бара — наименее заслуживающая доверия часть любой симуляции.
- И только потом меняйте параметры — и относитесь к любой настройке, которую пришлось искать перебором, как к более слабому утверждению, чем к той, что выбрана заранее.
Прекращайте итерации, когда изменение перестаёт двигать результат за пределы шума прошлых прогонов или когда вы замечаете, что выбираете настройки из-за того, что сказал последний отчёт. Второе и есть настоящее условие остановки, и наступает оно раньше, чем принято думать. Анализатор бэктестов здесь полезен тем, что вычитывает ключевые цифры из сохранённого отчёта обратно, а это превращает сравнение двух прогонов в арифметику, а не в упражнение на память.
Дальнейшие шаги: проверка вперёд до выхода на реальный счёт
Один чистый бэктест — первый из четырёх шагов, а не финишная черта.
Оптимизируйте, если у правила есть параметры, которые стоит перебирать. Записывайте весь диапазон перебора, а не выигравший проход: результат, который пришлось искать, — свидетельство о поиске, и именно диапазон говорит читателю, насколько усердно вы искали. Оптимизация параметров проходит этот шаг целиком и разбирает восемь наших собственных записанных переборов: 116 комбинаций и ни одной настройки, которую мы были бы готовы выпустить.
Затем идите вперёд. Подгоните на одном отрезке, измерьте на следующем и повторите. Это единственный из четырёх шагов, который бьёт по переоптимизации напрямую, — потому он и стоит больше, чем более длинный бэктест.
Затем проверьте вперёд на демо-счёте. Здесь в эксперимент наконец входят задержка, реквоты и настоящее расширение спреда. Гоняйте достаточно долго, чтобы увидеть, как стратегия теряет и восстанавливается, потому что нужное вам число — не доходность, а то, сможете ли вы высидеть измеренную выше просадку.
И только потом решайте. Запишите заранее тот убыток, при котором вы её выключите. Стоп, назначенный до внесения денег, — это решение; назначенный во время просадки — реакция.
Если перед собственным прогоном хочется разобранного образца, каждая карточка в опубликованном каталоге советников несёт полный список закрытых сделок, обе строки просадки и манифест прогона за ними, а страница как мы тестируем описывает стандарт, которому эти записи обязаны соответствовать. Остальные руководства по бэктестингу уходят глубже в оптимизацию и проверку вперёд, на которые эта страница только указывает. Ничто здесь не обещает результата: каждая цифра на этой странице описывает уже случившиеся прогоны.