📖 Бэктестинг на Форекс: как проверять стратегии и зачем нужен Walk-Forward анализ
Бэктестинг — это прогон торговых правил на исторических данных, чтобы понять, как стратегия вела бы себя в прошлом без риска для капитала. В контексте алгоритмического трейдинга бэктестинг — обязательный этап перед демо и реальным запуском.
Цель материала — показать, как профессионально организовать бэктест на форекс в MT4, MT5 и cTrader: выбрать режимы моделирования, добиться тиковой точности, выполнить Walk‑Forward‑анализ, интерпретировать метрики, смоделировать исполнение и проверить устойчивость через Monte Carlo.
Бэктестинг: симуляция сделок на прошлых данных с расчётом метрик доходности/риска.
Алготрейдинг: торговля по формализованным правилам, запрограммированным в код.
Тиковые данные: последовательность минимальных изменений цены (tick‑by‑tick) с точным временем.
Walk‑Forward‑анализ (WFA): цикл «оптимизация на окне → проверка на следующем окне (OOS) → сдвиг окна» для оценки устойчивости.
Monte Carlo: серия случайных сценариев (перетасовка последовательности сделок, вариации издержек) для оценки разброса результатов и «хвостовых» рисков.
🧭 Что такое бэктестинг и почему он решает
Бэктестинг — симуляция сделок стратегии на прошлом рынке с расчётом ключевых показателей. Это фильтр качества идей до демо/реала и способ проверить логику кода.
- Проверка гипотез: быстрый отсев слабых идей и фокус на сильных.
- Диагностика кода: визуальная валидация входов/выходов помогает ловить логические ошибки.
- Метрики: Max Drawdown, PF, Sharpe, ожидаемость сделки, стабильность по годам.
- Дисциплина: подтверждённые историей правила легче выдерживать психологически.
Max Drawdown: максимальная просадка от пика эквити в процентах.
PF (Profit Factor): отношение суммарной прибыли к сумме убытков.
Sharpe Ratio: доходность, нормированная на риск (волатильность доходности).
Ожидаемость сделки (Expectancy): средняя прибыль на сделку = WinRate × AvgWin − (1 − WinRate) × AvgLoss.
Важно: прошлые результаты не гарантируют будущих. Бэктест дополняется форвард‑тестом (проверка на новых данных/демо) и контролем исполнения.
⚙️ Подходы к бэктестингу в MT4, MT5 и cTrader
Платформы различаются по точности моделирования, мультивалютности, скорости оптимизации и удобству разработки.
Мультивалютность: одновременное тестирование/торговля несколькими символами в одном советнике и едином прогоне.
MT4: классика с ограничениями
- Тестер: визуальный режим, но без мультивалютного бэктеста (1 символ за прогон).
- Моделирование: «только открытия», «контрольные точки», «все тики». Без внешних тиков качество часто ≤90%.
- Скорость: последовательные прогоны, без распределённой оптимизации.
✅ Плюсы
- Простая среда разработки, много готовых советников.
- Низкий порог входа для быстрых экспериментов.
❌ Минусы
- Нет мультивалютного теста в одном прогоне.
- Тиковая точность требует внешнего импорта и ручной подготовки истории.
MT5: профессиональный стандарт
- Мультивалютность: один советник может тестировать несколько символов в одном процессе.
- Тики: поддержка реальных тиков и спреда от брокера; режимы «Каждый тик», «1‑Minute OHLC», «Открытия».
- Оптимизация: многопоточность, генетический алгоритм, удалённые агенты и облако.
- Форвард‑опт: встроенное разделение истории на обучающую часть и OOS.
1‑Minute OHLC: моделирование по четырём ценам минутного бара (Open/High/Low/Close); быстрее, но грубее на узких стопах.
Генетический алгоритм: эвристическая оптимизация — «эволюция» наборов параметров с отбором лучших комбинаций.
OOS (Out‑of‑Sample): «вневыборочная» часть истории, на которой проверяют уже подобранные параметры после оптимизации.
✅ Плюсы
- Высокая точность моделирования «из коробки» на тиках.
- Быстрые оптимизации, включая форвард и генетический алгоритм.
❌ Минусы
- Более строгие требования к аккуратности кода и событийной модели.
cTrader: гибкость C# и Market Replay
- Язык: C# (Automate/cAlgo), строгая типизация и экосистема .NET.
- Данные: «Tick data from server», фиксированный или случайный спред.
- Опыт: Market Replay — ручное воспроизведение рынка для обучения/валидации визуально.
- Производительность: последовательный прогон; оптимизация — параллельно в новых сборках.
✅ Плюсы
- Сильный C#-стек и удобный Market Replay.
- Гибкая кастомизация исполнения и спреда.
❌ Минусы
- Мульти-символьные системы требуют ручной архитектуры сигналов.
🧪 Режимы моделирования и когда их использовать
Выбор режима зависит от чувствительности к внутрибарам (тикам) и узких SL/TP (стоп‑лосс/тейк‑профит).
Tick: моделирование каждого изменения цены и спреда (максимальная точность для скальпинга/HFT).
OHLC: моделирование по четырём ценам бара; быстрее, но грубее на узких стопах.
HFT: высокочастотная логика с критичной задержкой исполнения.
«Каждый тик» (tick‑by‑tick)
Максимально реалистичная симуляция каждого изменения цены и спреда. Нужна для скальпинга и HFT‑логики.
- Плюсы: точные входы/выходы, адекватная оценка стопов и скольжения.
- Минусы: высокая нагрузка и требовательность к качеству тиков.
Главное: если триггеры срабатывают внутри свечи — тестируйте «на тиках», иначе результат будет завышен.
OHLC/1‑Minute
Моделирование по Open/High/Low/Close минутных свечей. Подходит для среднесрока и быстрой грубой фильтрации идей.
- Плюсы: очень быстро.
- Минусы: искажения для узких стопов и интрадей‑паттернов.
Визуальный режим / Market Replay
Пошаговый просмотр сделок на графике (MT4/MT5) или воспроизведение рынка (cTrader) — удобно для отладки и обучения.
- Плюсы: наглядно видно логику входов, трейлинг, фильтры.
- Минусы: медленнее пакетных прогонов; риск «подглядывания» постфактум.
📊 Качество моделирования и источники данных
Достоверность ограничена качеством входных данных. «Мусор на входе — мусор на выходе». Сначала — история, затем — оптимизации.
- Тики: для MT5/cTrader — тики от брокера; для MT4 — импорт внешних тиков и конвертация под тестер.
- Таймзона и сессии: единый часовой пояс, проверка «дыр» и дублей баров.
- Издержки: моделируйте реальный/случайный спред, комиссию и проскальзывание.
- Проверка: «сухой прогон» без сделок для валидации последовательности времени.
Откройте Тестер стратегий → выберите советника (EA) → режим «Каждый тик» → источник тиков «Биржевые/брокерские» → задайте комиссию/спред → включите «Визуализацию» → Запуск. Для форвард‑оптимизации включите OOS‑отрезок в настройках оптимизации.
🧼 Пайплайн данных для честного бэктеста
Данные решают всё. Перед оптимизациями убедитесь, что история полная, согласована по таймзоне и очищена от «дырок» и дублей.
- Импортируйте тики/минутки из надёжного источника или у брокера.
- Нормализуйте таймзону и календарь торговых сессий.
- Очистите аномалии: дубликаты, нулевые бары, экстремальные «шипы».
- Смоделируйте спред/комиссию, задайте правила округления цены/объёма.
- Выполните «сухой тест» без сделок для проверки монотонности времени.
Совместимость: MT5 и cTrader — приоритет тик‑данных; MT4 — через импорт тиков. При смешанных источниках используйте единую таймзону и фиксируйте правила перехода на летнее время.
Совет: ведите «паспорт» датасета: источник, глубина, таймзона, дата выгрузки и хэш файлов — это упрощает воспроизводимость.
⚡ Моделирование исполнения: ордера, спред, задержки
Идеальное исполнение завышает результаты. Включайте реалистичные допущения: тип ордера, фильтр спреда, проскальзывание и случайные задержки.
Спред: разница между Bid и Ask; расширяется на новостях/низкой ликвидности.
Проскальзывание: исполнение по цене хуже ожидаемой из‑за рыночного импульса или задержки.
Задержка: суммарная латентность сети/терминала/сервера; критична для HFT/новостей.
| Компонент | Модель | Рекомендация |
|---|---|---|
| Тип ордера | Market/Limit/Stop | Скальпинг — limit с фильтром спреда; тренд — market допустим. |
| Спред | Фиксированный или случайный | Случайный спред в диапазоне исторических значений реалистичнее. |
| Проскальзывание | Симметричное или смещённое | Для market‑ордеров закладывайте отрицательное смещение. |
| Задержка | Случайная 10–300 мс | Актуально в новости и часы пиковой волатильности. |
Совет: заложите «скидку на исполнение» 5–15% к прибыли и +20–30% к Max Drawdown относительно бэктеста при планировании реала.
⏩ Walk‑Forward‑анализ (WFA)
Walk‑Forward — поэтапный цикл «оптимизация на окне → проверка на следующем окне (OOS) → сдвиг окна» для оценки устойчивости.
WFA: чередование in‑sample (обучающая часть) и out‑of‑sample (проверочная часть) участков с переобучением по расписанию.
OOS: неизученная часть истории, на которой проверяют уже выбранные параметры.
Rolling vs Anchored: скользящее окно против нарастающего (меньше риска оверфита).
- Разбейте историю: напр. 12–18 мес. оптимизация и 3–6 мес. проверка.
- Оптимизируйте параметры на первом окне и зафиксируйте лучший набор.
- Проверьте этот набор на следующем окне (OOS).
- Сдвигайте окна и повторяйте цикл до конца истории.
- Сведите OOS‑результаты, оцените стабильность и диапазон просадок.
Практические схемы WFA
Rolling window — быстрая адаптация; Anchored — меньше переобучения, но инерция выше.
Главное: ограничивайте число параметров и используйте одни и те же правила для всех окон — иначе сравнение некорректно.
🎲 Monte Carlo‑проверка стратегии
Monte Carlo — серия случайных сценариев (перетасовка сделок, вариации спреда/скольжения), показывающая разброс результатов и «хвосты» рисков.
Сценарии перетасовки
Смоделируйте 200–1000 альтернативных историй, чтобы оценить диапазон доходности и просадок.
- Reshuffle: случайная перестановка последовательности сделок при тех же PnL (прибыль/убыток).
- Noise: ±25–50% к проскальзыванию и спреду.
- Gap test: редкие экстремальные тики, имитирующие новостные «проливы».
Главное: ориентируйтесь на 5–10‑й перцентили, а не только на медиану — запас прочности важнее пика.
💻 Пример: пересечение скользящих средних (MA Cross)
Учебная логика на MQL5 и C# для cTrader. В реальной торговле добавляйте фильтры волатильности ATR, риск‑менеджмент и контроль исполнения.
1) В MT5 создайте EA и вставьте код ниже. 2) В тестере выберите «Каждый тик» и задайте комиссию/спред. 3) Проверьте на другом символе/ТФ и сравните PF/DD (фактор прибыли/макс. просадка).
MQL5 (MT5)
#property strict
input int FastMAPeriod = 20;
input int SlowMAPeriod = 50;
#include <Trade/Trade.mqh>
CTrade trade;
int hFast, hSlow;
int OnInit(){
hFast = iMA(_Symbol, PERIOD_CURRENT, FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE);
hSlow = iMA(_Symbol, PERIOD_CURRENT, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE);
return(INIT_SUCCEEDED);
}
void OnTick(){
double fast[], slow[];
if(CopyBuffer(hFast,0,0,2,fast)<2 || CopyBuffer(hSlow,0,0,2,slow)<2) return;
bool crossUp = (fast[1] <= slow[1]) && (fast[0] > slow[0]);
bool crossDown = (fast[1] >= slow[1]) && (fast[0] < slow[0]);
if(crossUp) { trade.PositionClose(_Symbol); trade.Buy(0.1); }
if(crossDown) { trade.PositionClose(_Symbol); trade.Sell(0.1); }
}
C# (cTrader Automate)
using cAlgo.API; using cAlgo.API.Indicators;
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class MACrossBot : Robot {
[Parameter("Fast", DefaultValue = 20)] public int Fast { get; set; }
[Parameter("Slow", DefaultValue = 50)] public int Slow { get; set; }
private MovingAverage maF, maS;
protected override void OnStart(){
var series = MarketData.GetSeries(TimeFrame);
maF = Indicators.MovingAverage(series.Close, Fast, MovingAverageType.Simple);
maS = Indicators.MovingAverage(series.Close, Slow, MovingAverageType.Simple);
}
protected override void OnBar(){
bool crossUp = maF.Result.Last(1) <= maS.Result.Last(1) && maF.Result.LastValue > maS.Result.LastValue;
bool crossDown = maF.Result.Last(1) >= maS.Result.Last(1) && maF.Result.LastValue < maS.Result.LastValue;
if(crossUp) { ClosePositions(TradeType.Sell); ExecuteMarketOrder(TradeType.Buy, SymbolName, 10000); }
if(crossDown) { ClosePositions(TradeType.Buy); ExecuteMarketOrder(TradeType.Sell, SymbolName, 10000); }
}
}
Важно: пример упрощён: нет фильтра тренда, расчёта размера через ATR, учёта комиссий/проскальзываний и адекватного money‑management. Добавьте эти элементы перед выводами.
🧪 Мини‑кейсы: как ведут себя разные идеи
Иллюстративные примеры формируют интуицию: где идея зарабатывает и где страдает из‑за издержек/режимов рынка. Значения демонстрационные — замените своими.
Breakout London (EURUSD M15)
Пробой азиатского диапазона в первые 2 часа Лондона, фиксированный SL/TP, фильтр спреда.
- Сильные стороны: трендовый режим, высокая ожидаемость сделки.
- Слабые стороны: чувствительность к новостям и проскальзыванию.
Mean Reversion (USDJPY M5)
Отскок к среднему при расширении от VWAP и/или BB, выход по долям.
- Сильные стороны: флэт, много сделок, ровная эквити (кривая стоимости счёта).
- Слабые стороны: «смерть от тысячи порезов» при росте издержек.
MA Cross (H1)
Пересечение SMA 20/50 с фильтром ATR и трейлинг‑стопом ATR×2.
- Сильные стороны: переносимость параметров на соседние пары.
- Слабые стороны: пилы и затяжные флэты снижают PF.
| Стратегия | Сценарий | PF | Max DD | Sharpe | Сделок |
|---|---|---|---|---|---|
| Breakout London | Тики + случайный спред | 1.6 | 18% | 1.1 | 480 |
| Mean Reversion | Тики + комиссия×1.2 | 1.4 | 12% | 1.3 | 1200 |
| MA Cross | OHLC → Тики (валидация) | 1.3 | 20% | 1.0 | 260 |
🌗 Режимы рынка и поведение стратегии
Разделите историю на тренд, флэт и новостные окна. Оцените метрики отдельно и настройте правила включения/паузы.
Трендовый режим
Фильтры: ADX>25, пробои каналов, положительный наклон MA.
- Рекомендации: расширять TP, ослаблять чувствительность к откатам.
- Риски: ложные пробои на выдохшемся тренде.
Флэтовый режим
Низкая волатильность (ATR внизу диапазона), ADX<15, частые реверсивные движения.
- Рекомендации: сокращать TP, использовать mean‑reversion, фильтр спреда.
- Риски: издержки «съедают» статистическое преимущество.
Новостные окна
Высокий ATR, расширение спреда, гэпы.
- Рекомендации: пауза, фильтр спреда, отложенные входы пост‑новости.
- Риски: проскальзывание, частые стопы.
Главное: связка экономического календаря и лимитов ATR/спреда часто повышает Sharpe.
📋 MT4 vs MT5 vs cTrader — сравнение для форекс
Ключевые различия, влияющие на точность, скорость и удобство работы с мультисимвольными системами.
| Критерий | MT4 | MT5 | cTrader |
|---|---|---|---|
| Точность моделирования | До 99% при внешних тиках; иначе ≤90% | Тики от брокера; высокая точность | Tick data from server; гибкая настройка спреда |
| Скорость/оптимизация | Последовательные прогоны | Многопоточность, облачные агенты, генетика | Последовательный прогон; оптимизация — параллельно |
| Мультивалютность | Нет (1 символ/тест) | Да (один EA — несколько символов) | Через API/архитектуру сигналов |
| Визуальное тестирование | Визуальный режим | Визуализация + расширенная аналитика | Market Replay |
| Отчёты/метрики | Базовый набор | Расширенные отчёты/графики | Подробная статистика/эквити |
🔍 Интерпретация результатов: ключевые метрики
Оценка должна быть комплексной: сочетайте доходность с риском и устойчивостью, проверяйте число сделок и распределение прибыли по времени.
Максимальная просадка (Max Drawdown)
Наибольшее снижение баланса/эквити от пика в процентах. Чем ниже, тем лучше; сопоставляйте с годовой доходностью (например, через CAR/MDD).
Profit Factor (PF)
Отношение суммарной прибыли к сумме убытков. Значения > 1 — потенциально прибыльно, > 1.5 — хорошо, > 2 — отлично, но важна устойчивость по периодам.
Sharpe Ratio
Доходность, нормированная на риск (волатильность доходности). Выше — стабильнее; ориентир — > 1, для «ровных» систем — ближе к 1.5–2.
Ожидаемость сделки (Expectancy)
Средняя прибыль на сделку: Expectancy = WinRate × AvgWin − LossRate × AvgLoss. Должна быть положительной и подтверждена достаточным числом трейдов.
Эквити: кривая стоимости счёта с учётом открытых позиций (в отличие от баланса).
PF: PF = Gross Profit / Gross Loss; полезно смотреть вместе с количеством сделок и Max DD.
Sharpe: (Mean Return − Rf) / StdDev(Return); где Rf — безрисковая ставка.
Expectancy: = WinRate × AvgWin − (1 − WinRate) × AvgLoss; проверяйте на выборке ≥ 200–300 сделок (для внутридня — больше).
CAR/MDD: отношение годовой доходности (Compound Annual Return) к максимальной просадке.
Совет: проверяйте стабильность метрик по годам/кварталам и используйте «скидку на исполнение» (спред/комиссия/проскальзывание), иначе PF и Sharpe будут завышены.
🗺️ Карта робастности параметров
Меняйте два ключевых параметра по сетке и фиксируйте метрики. Ищем не «островок» максимума, а плато устойчивости.
Дизайн эксперимента
- Сетка: 15×15 точек по двум параметрам (например, периоды Fast/Slow MA).
- Метрики: PF, Max DD, Sharpe, CAR/MDD, число сделок.
- Критерии: PF ≥ 1.3, DD ≤ 25%, сделок ≥ 200.
Решение по настройке
Выбирайте параметры из середины «плато», а не с его края — так выше шанс сохранить эффективность при смене режима рынка.
⚠️ Типичные ловушки и как их избежать
Переоптимизация (overfitting)
- Слишком много параметров или узкие диапазоны подстраивают стратегию под шум.
- Лечение: лимит параметров, Walk‑Forward, OOS‑проверка, Monte Carlo.
Игнор исполнения
- Без учёта спреда/комиссии/задержек PF и Sharpe почти всегда завышены.
- Лечение: случайный спред, проскальзывание и задержки, «скидка» к результатам.
«Грязные» данные и таймзоны
- Дыры, дубликаты и неверная таймзона ломают внутридневную логику.
- Лечение: пайплайн данных, единая таймзона, приоритет тиков.
🧰 DevOps для бэктестинга: воспроизводимость и учёт экспериментов
Стратегия ценна, когда её результат можно воспроизвести. Нужны версии данных, фиксированные настройки и стандартизованный отчёт.
- Версионирование данных: дата выгрузки, источник, глубина, хэш файлов.
- Конфиг эксперимента: символы, ТФ, даты, комиссии, спред/задержки, seed (начальное значение генератора случайных чисел).
- Шаблон отчёта: сводка метрик, графики эквити/просадок, распределение PnL (прибыль/убыток), чувствительность.
- Артефакты: логи сделок, сериализованные параметры, паспорт версии советника (EA) / cBot (бот cTrader).
Совет: сохраняйте «макет запуска» — JSON/YAML конфиг, чтобы одним кликом повторить прогон.
🧮 Методы оптимизации: grid, генетика, байес
Оптимизация — поиск параметров с лучшим балансом доходности и риска. Учитывайте время просчёта и устойчивость результата.
| Метод | Суть | Когда лучше | Риски |
|---|---|---|---|
| Grid Search | Полная переборная сетка параметров | Мало параметров и узкие границы | Долго, риск «подгона по сетке» |
| Генетическая оптимизация | Эволюционный отбор комбинаций (мутации/скрещивания) | Среднее/большое число параметров | Нужен контроль критериев и ранняя остановка |
| Байес (TPE) | Модель «параметры → метрика» с TPE | Дорогие прогоны, сложные поверхности | Сложнее реализация, риск локальных максимумов |
Совет: комбинируйте: грубая сетка → генетика → валидация на WFA/Monte Carlo. Отбирайте не максимум PF, а стабильное плато.
🛡️ Риск‑менеджмент и размер позиции
Управление риском влияет на кривую капитала сильнее, чем точка входа. Размер позиции должен зависеть от волатильности и капитала.
Фикс‑fractional и волатильностный риск
Рискуем фиксированной долей капитала на сделку и нормируем стоп через ATR.
- Практика: риск 0.5–2% на сделку с расчётом лота от SL (стоп‑лосса).
- ATR‑нормализация: одинаковый денежный риск при разных волатильностях.
Главное: моделируйте риск точно в бэктесте, иначе реальные просадки неприятно удивят.
Ограничители риска
Дневные/недельные лимиты потерь, паузы после серии стопов, стоп‑торговля по ширине спреда или всплескам ATR.
- Пауза после N убыточных сделок подряд.
- Отключение при экстремальном спреде или аномальном ATR.
🧩 Портфель стратегий: диверсификация и корреляция
Несколько независимых стратегий с низкой корреляцией сглаживают эквити и уменьшают просадку.
- Типы: тренд, mean‑reversion, пробой, разные ТФ/символы.
- Отбор: низкая корреляция дневной PnL (прибыль/убыток), комплементарные режимы рынка.
- Контроль: лимиты на одновременные риски и кластеры инструментов.
Совет: стройте матрицу корреляций стратегий и тестируйте портфель целиком, а не только по отдельности.
🧨 «Что‑если» сценарии: стресс‑тест издержек и условий
Проверьте, как стратегия переживёт ухудшение исполнения, рост волатильности и отключения в новости.
| Сценарий | Изменение | Ожидаемый эффект |
|---|---|---|
| Комиссия ↑ | ×1.5 | Падение PF у частых стратегий — фильтруйте сделки |
| Спред ↑ | +30% | Хуже entry/exit, рост стопов, падение Sharpe |
| Задержка ↑ | +150 мс | Хуже исполнение на импульсах — увеличьте буферы |
| Новости — off | −1 час вокруг публикаций | Меньше сделок, но сглаживание хвостов убытков |
❓ Вопросы и ответы (FAQ)
Как добиться «99%» качества моделирования?
Чем бэктест отличается от форвард‑теста?
Какой период истории брать для форекс‑стратегии?
Зачем визуальный режим и Market Replay?
Что выбрать: MT4, MT5 или cTrader для бэктестинга?
Как учесть комиссии и свопы в бэктесте?
Как понять, что стратегия робастна?
✅ Чек‑лист запуска на демо/реале
- Датасет с «паспортом»: источник, глубина, таймзона, дата выгрузки, хэш.
- Конфиг теста: символы, ТФ, даты, издержки, задержки, seed.
- Финальный прогон «на тиках» со случайным спредом и проскальзыванием.
- Оптимизация с лимитом параметров и верификацией на WFA.
- Monte Carlo: ≥ 200 сценариев, контроль хвостов распределения.
- Карта робастности: выбор параметров с плато.
- Визуальная валидация входов/выходов на контрольных участках.
- Размер позиции: риск/сделку и ATR‑нормализация.
- Ограничители: дневной/недельный лимит потерь, паузы.
- Стоп‑торговля при экстремальном спреде/ATR.
- Демо‑мониторинг ≥ 2–4 недель с логами сделок.
- Сравнение демо vs бэктест: отклонения в пределах плановых.
- План «что‑если» на случай ухудшения исполнения.
- Портфель: проверка корреляции с существующими стратегиями.
- План релиза на реале с поэтапным ростом риска.
✅ Заключение
Надёжный бэктест держится на трёх вещах: качественные тики и корректная таймзона; реалистичное исполнение (спред, комиссия, проскальзывание, задержки); проверка устойчивости (Walk‑Forward, Monte Carlo, карта параметров).
Выбор платформы зависит от задач: MT5 — баланс точности и скорости; cTrader — гибкость C# и Market Replay; MT4 — минималистичный вариант при готовой экосистеме и умении работать с тик‑данными.
Главное: сначала — чистые данные и тики, затем — исполнение и риск, потом — ограниченная оптимизация и Walk‑Forward. Так шанс совпадения реала с отчётом выше.