Оптимизация параметров в MetaTrader 5 — это перебор: вы объявляете диапазон для каждого входного параметра, «Тестер стратегий» прогоняет все комбинации и выдаёт таблицу, отсортированную по той метрике, которую выбрали вы. Трудность не в том, чтобы её запустить. Трудность в том, что у таблицы всегда есть верхняя строка, и верхняя строка почти всегда неверна.
Из этой статьи вы выносите процедуру, которая производит решение, а не число: перебор, который вы сможете защитить, чтение таблицы проходов, переживающее встречу со вторым периодом, и правило остановки.
| Условия теста | |
|---|---|
| Идентификатор эксперимента | EXP-PARAM-SEARCH-OUTCOMES-001 |
| Родительский эксперимент | EXP-BUILDER-TEMPLATE-BASELINE-001 |
| Источник | ea-templates-manifest.js → bt.explored |
| Выборка | 8 recorded searches of the 53 measured templates |
| Символ / таймфрейм | USDJPYm, M5 and H1 |
| Модель | M1 OHLC (Model=1), Exness MT5, measured 2026-06-18 |
| Изменяемые параметры | stop loss and take profit only |
| Последняя проверка | 2026-08-25 |
Подготовка: сетка, разделение и данные
Три настройки решают, стоит ли вообще запускать перебор. Ошибитесь в них — и таблица проходов превращается в очень дорогой генератор случайных чисел.
| Поле | Где | Что выставить | Почему |
|---|---|---|---|
| «Оптимизация» (Optimisation) | Вкладка «Настройки» (Settings) | Медленный полный алгоритм (Slow complete algorithm) для небольшой сетки | Генетический режим лишь сэмплирует пространство; при 12–32 комбинациях вы можете позволить себе увидеть его целиком |
| «Старт» / «Шаг» / «Стоп» (Start / Step / Stop) | Вкладка «Входные параметры» (Inputs), для каждого параметра | Два параметра, крупные шаги | Каждый отмеченный вами параметр умножает сетку. У нас менялись два |
| «Форвард» (Forward) | Вкладка «Настройки» (Settings) | 1/2, 1/3 или 1/4 | Делит интервал так, что тестер оценивает вторую половину отдельно, — ради этой проверки перебор и запускают |
| Критерий оптимизации (Optimisation criterion) | Вкладка «Настройки» (Settings) | Решите до того, как посмотрите на сетку | Это метрика, по которой тестер ранжирует проходы, а значит, именно она решает, какая строка является верхней |
| «Моделирование» (Modelling) | Вкладка «Настройки» (Settings) | Грубый режим для прогонки, затем перепрогон уцелевшего на реальных тиках | Грубые режимы годятся для ранжирования кандидатов, но никогда для публикуемой цифры |
| «Период» (Period) | Вкладка «Настройки» (Settings) | Достаточно длинный, чтобы вместить не один режим рынка | Перебор внутри одного тренда находит ту настройку, которая на нём ехала |
Критерий заслуживает решения, а не значения по умолчанию. Ранжирование по чистой прибыли награждает тот проход, который взял на себя больше всего риска, а ранжирование по мере, построенной на просадке, — тот, который меньше всего торговал; фактор восстановления и существует потому, что эти два ответа расходятся. Наши собственные переборы вообще не судили по ранжированию тестера: каждого уцелевшего кандидата оценивали по профит-фактору на трёх раздельных окнах, и ранжирование внутри любого из них никогда ничего не решало.
Качество данных идёт первым: перебор по плохим тикам оптимизирует пропуски. Короткая версия такова: качество моделирования ниже 90 % делает внутридневные таблицы проходов непригодными, а прогон, собранный из интерполированных тиковых данных, не способен разрешить стоп, который стоит внутри бара.
- Сначала прогоните один бэктест на значениях по умолчанию и сохраните отчёт. Без базовой линии таблице проходов нечего побеждать — как запустить бэктест разбирает этот проход от начала до конца.
- На вкладке «Настройки» (Settings) выставьте «Оптимизацию» (Optimisation) в полный перебор для небольшой сетки, а «Форвард» (Forward) — в
1/3, чтобы тестер придержал последнюю треть интервала. - На вкладке «Входные параметры» (Inputs) отметьте только те параметры, которые вы действительно тестируете, и задайте каждому «Старт» (Start), «Шаг» (Step) и «Стоп» (Stop). Два параметра с крупными шагами лучше четырёх с мелкими.
- Нажмите «Старт» (Start) и дайте прогону закончиться. Вкладку «Результаты оптимизации» (Optimisation Results) читайте как таблицу, а «График оптимизации» (Optimisation Graph) — как форму: одиночный пик это предупреждение, плато — находка.
- Возьмите уцелевших — не победителя — и перепрогоните каждого как одиночный бэктест на периоде перед окном оптимизации. Именно этот шаг дал каждый отрицательный вердикт в нашем наборе, и именно его пропускают.
Чтение результатов: три периода, а не один
Вот весь наш записанный набор, отсортированный по лучшему профит-фактору на выборке, которого достиг каждый перебор. IS — период, на котором подгонялась настройка, OOS — отложенная проверка, prior — более раннее окно, которого перебор не видел.
| Шаблон | Перебранная сетка | Лучший IS | OOS | Prior | Вердикт |
|---|---|---|---|---|---|
ichimoku | 12 комбинаций × 3 окна | 1,37 | 0,89 | 0,80 | no_robust_edge |
ma_crossover | 20 + 12 комбинаций, два таймфрейма | 1,23 | 0,89–0,94 | 0,78 | no_robust_edge |
cci_level | 12 комбинаций × 3 окна | 1,07 | 1,05 | 0,92 | no_robust_edge |
adx_trend | 12 комбинаций × 3 окна | 1,04 | 0,91 | 0,80 | no_robust_edge |
breakout | 12 комбинаций × 3 окна | 1,04 | 0,79–0,89 | 0,64–0,84 | no_robust_edge |
macd_signal | 12 комбинаций × 3 окна | — | 1,14–1,15 | 0,74–0,77 | no_robust_edge |
rsi_reversal | 12 комбинаций × 3 окна | 0,91 | — | — | no_robust_edge |
bb_bounce | 12 комбинаций × 3 окна | 0,91 | — | — | no_robust_edge |
Прочитайте первый числовой столбец сверху вниз, а затем поперёк. Самый крупный результат на выборке во всём наборе дал и самое крупное обрушение: 1,37 у ichimoku упали до 0,89, а затем до 0,80. Этот порядок не совпадение — настройка, которая подходит окну лучше всех, по построению впитала больше всего шума этого окна.
Теперь прочитайте ту настройку, которая на самом деле подошла ближе всех. В таблице выше её нет, потому что она нигде не была верхней строкой: на той же сетке ichimoku SL50/TP150 показал 1,18 на выборке, 0,99 вне выборки и 1,00 на предшествующем окне. Три периода, и все примерно в ноль. Её записали как ближайшего кандидата и всё равно не приняли, потому что безубыток на трёх окнах — это не преимущество, а его отсутствие, аккуратно измеренное.
На этом фоне базовые линии, которые эти переборы пытались побить, лежат между 0,92 и 1,03. Ни один перебор не сдвинул выпущенное значение по умолчанию.
Ловушки, которых стоит избегать
Под всеми пятью лежит один и тот же механизм отказа. Переоптимизация — это не ошибка, которую вы допускаете в конце перебора; это исход перебора по умолчанию, и дисциплина трёх периодов существует ровно для того, чтобы сделать её видимой до того, как вы начнёте действовать.
Улучшаем и повторяем: что менять и когда остановиться
Меняйте одно, перепрогоняйте, сравнивайте с сохранённой базовой линией. Порядок, который тратит меньше всего времени:
- Расширяйте период раньше, чем сетку. Больше режимов рынка лучше, чем больше комбинаций. Перебор, покрывающий один тренд, найдёт настройку, которая на нём ехала, — при любом разрешении.
- Затем укрупняйте шаги, а не измельчайте их. Если результат существует только при
SL47, он не существует. - И только затем добавляйте параметр. Наши переборы до этого не дошли, потому что два параметра уже провалили планку трёх периодов.
Останавливайтесь, когда верно одно из этого, и записывайте, какое именно:
- Уцелевший кандидат проходит все три периода. Выпускайте его и записывайте всю сетку, которую перебрали, — а не только сохранённый проход.
- Лучший результат на выборке ниже 1,0. У вас есть настоящий ответ: два из наших восьми переборов закончились здесь, и закончиться здесь после 36 прогонов — дёшево.
- Уцелевшие продолжают проходить одно окно и заваливать другое. Правило зависит от режима рынка. Дальнейший перебор произведёт больше настроек, зависящих от режима.
- Вы начали объяснять, почему предшествующее окно «не считается». Это тот момент, когда перебор перестал быть проверкой.
Честная запись перебора — это диапазон, который вы покрыли, и вердикт, вместе. Каждый из наших восьми хранится именно так, и только поэтому эту статью вообще можно было написать по ним: один лишь сохранённый победитель не доказал бы ничего.
Дальнейшие шаги: проверка вперёд, затем решение
Оптимизация — второй шаг из четырёх. Последовательность такая: бэктест → оптимизация → проверка вперёд → демо-счёт, и каждый шаг убирает свой способ ошибиться.
- Отрабатывайте цикл на том, что контролируете сами: соберите стратегию в EA Builder и переберите её стоп и цель своими руками — сетку, которую объявили вы, читать честно намного проще, чем унаследованную.
- Формальная версия проверки на трёх периодах — это анализ вперёд (walk-forward), который катит разделение вперёд, а не фиксирует его в одной точке.
- Что бы перебор ни вернул, отчёт, в котором он это возвращает, всё равно надо прочитать: чтение отчёта бэктеста MT5 разбирает, о какой именно совокупности сделок заявляет каждая итоговая цифра.
- Чтобы увидеть, как выглядит законченная запись, когда числа всё же выжили: каждый из опубликованных советников несёт полный список закрытых сделок и манифест прогона.
- То, как мы всё это тестируем, оцениваем и записываем, изложено в нашей методике тестирования.