Backtest Robustness Checker
- Индикаторы
-
Kazuma Uezono
MQL5 / MQL4 / Pine Script v6 developer and active trader.
Seller on the MQL5 Market (indicators for MT4/MT5).
Services:
- TradingView Pine Script to MT5/MT4 conversion (bar-by-bar matching, with tester report)
- MT4 to MT5 migration - Версия: 1.1
- Активации: 5
Backtest Robustness Checker — индикатор для MetaTrader 5, который читает список ваших закрытых сделок и показывает, как меняется статистика, если те же сделки идут в другом порядке, если часть сделок пропадает или если убрать самые крупные прибыльные сделки. Сделки берутся из истории счёта, из отчёта тестера стратегий или счёта, сохранённого в HTML, или из простого файла CSV. Результаты выводятся на панель на графике и могут быть сохранены в CSV.
Индикатор показывает только статистику прошлых сделок. Он не прогнозирует и не гарантирует будущие результаты, не говорит, хороша ли стратегия или советник, прибыльна ли она или «устойчива», и не выносит вердикт «прошёл / не прошёл». Значение Монте-Карло, например «95-й процентиль максимальной просадки», описывает перемешанные копии ваших прошлых сделок; это не вероятность будущей просадки. Как использовать эти числа — решаете вы.
Только чтение: индикатор никогда не открывает, не изменяет и не закрывает ордера и не даёт сигналов на покупку или продажу. В тестере стратегий (и при автоматической проверке Маркета) ваших сделок нет, поэтому показываются встроенные ДЕМОНСТРАЦИОННЫЕ ДАННЫЕ (SAMPLE DATA), помеченные оранжевым как «not real» (не реальные).
Возможности
- Три источника данных: история счёта (фильтр по магическим номерам, символам и дате закрытия), файл в MQL5\Files (отчёт MT5, сохранённый в HTML, или CSV) либо встроенный образец из 400 демонстрационных сделок.
- Исходный порядок: число сделок, чистая прибыль, профит-фактор, доля прибыльных, средний результат на сделку, максимальная просадка (сумма и %), максимум убыточных подряд, самый долгий период ниже максимума (в сделках).
- Перемешивание порядка сделок (Монте-Карло): те же сделки в случайном порядке, многократно (по умолчанию 1 000 раз). Минимум, 5%, 25%, 50%, 75%, 95% и максимум для максимальной просадки, максимальной просадки в %, максимума убыточных подряд и самого долгого периода ниже максимума; доля перемешиваний с просадкой не меньше исходной; доля выше заданной вами просадки в %; гистограмма.
- Случайное удаление сделок: в каждом прогоне каждая сделка удаляется с заданной вероятностью (по умолчанию 10%), остальные остаются в исходном порядке. Процентили чистой прибыли, профит-фактора, максимальной просадки и числа оставшихся сделок, доля прогонов с прибылью <= 0 и гистограмма.
- Удаление крупнейших прибыльных сделок: чистая прибыль, профит-фактор и максимальная просадка без K самых крупных прибыльных сделок (по умолчанию 5).
- Таблица по годам (сделки, % прибыльных, результат, PF, макс. просадка внутри года, макс. серия убытков, среднее) и таблица результата по месяцам, по времени закрытия. Длинные таблицы делятся на страницы.
- Экспорт в CSV (кнопка): настройки, вся статистика, процентили, таблицы по годам и месяцам, список сделок и, по желанию, по одной строке на каждую симуляцию. Сохраняется в MQL5\Files.
- Фиксированное зерно случайных чисел: те же данные, настройки и зерно всегда дают тот же результат.
- Панель на английском или японском (автоматически по языку терминала), светлые или тёмные цвета по фону графика, любой угол, три размера, сворачивание. Несколько копий на одном графике располагаются друг под другом.
Основные параметры
- Trades to analyze: источник данных; счёт: магические номера, символы, закрыты с / по, учитывать комиссию, сборы и своп; файл: имя в MQL5\Files, чтение из общей папки Files; начальный баланс для просадки в % (0 = автоматически).
- Simulation: число симуляций (10-100000, по умолчанию 1000), зерно случайных чисел (по умолчанию 12345), доля удаляемых сделок (1-90 %, по умолчанию 10), число удаляемых крупнейших прибыльных сделок (0-1000, по умолчанию 5), считать симуляции с макс. просадкой выше этого % (по умолчанию 20, 0 = выкл.).
- Panel: первая страница, строк на страницу, язык, угол, отступы, размер, цвета, запуск в свёрнутом виде, кнопка CSV, CSV со строкой на каждую симуляцию, пересчёт при закрытии новых сделок.
- 27 параметров в 4 группах.
Как рассчитывается
- Результат сделки = прибыль + комиссия и сборы + своп (для истории счёта издержки можно исключить). Сделка считается прибыльной или убыточной, если она отличается от нуля больше чем на половину наименьшей единицы валюты (для файлов и образца: 0,005), иначе она в ноль. Профит-фактор = валовая прибыль / валовой убыток.
- Кривая баланса = начальный баланс + накопленный результат сделок в порядке закрытия. Максимальная просадка = наибольшее падение от предыдущего максимума; максимальная просадка в % = это падение, делённое на баланс в точке максимума. Открытые позиции и плавающая прибыль не учитываются.
- Начальный баланс (автоматически): история счёта = баланс счёта непосредственно перед закрытием первой выбранной сделки; HTML = строки balance до первой сделки; образец = 10 000. Пополнения и снятия после первой сделки к кривой не добавляются, поэтому знаменатель просадки в % их не включает. Параметр «Starting balance for DD %» заменяет автоматическое значение.
- История счёта: одна сделка = одна позиция (частичные закрытия относятся к той же сделке, Close By двух позиций — одна сделка, разворот на неттинге делится на две).
- Отчёт HTML: одна сделка = одна закрывающая сделка (out, in/out, out by) в таблице Deals. Каждое частичное закрытие считается отдельной сделкой, поэтому число сделок, доля прибыльных и PF могут немного отличаться от истории счёта по тем же сделкам. В отчёте нет идентификаторов позиций, поэтому каждая закрывающая сделка сопоставляется с открытым объёмом по правилу (тот же символ, противоположное направление; самая старая открывающая сделка с точно таким же оставшимся объёмом, иначе по принципу «первым вошёл — первым вышел»). При локированных позициях разного объёма это сопоставление является оценкой, как и доля комиссии и свопа открытия, отнесённая к каждой сделке. Итоговые суммы точные.
- CSV: одна строка на сделку, «время,прибыль» (запятая, точка с запятой или табуляция; время в виде YYYY.MM.DD HH:MM или YYYY.MM.DD HH:MM:SS, также допускаются «-» и «/»), либо один столбец прибыли (тогда без таблиц по годам и месяцам). Десятичный разделитель только «.», без разделителей тысяч. Строки используются в порядке файла. Первая нечитаемая строка считается заголовком; другие нечитаемые строки учитываются как пропущенные; строки, начинающиеся с #, игнорируются. В CSV нет баланса: чтобы видеть просадку в %, задайте начальный баланс в параметрах.
- Если начальный баланс неизвестен, панель показывает «unknown» (неизвестно), и значения просадки в % не рассчитываются. Суммы по-прежнему показываются.
- Перемешивание: каждый раз алгоритм Фишера-Йетса от исходного порядка. Удаление: одно случайное число на сделку. Случайные числа: splitmix64 от зерна (для удаления — зерно + 1). Процентили: линейная интерполяция.
- Ограничение объёма расчёта: число симуляций x число сделок не превышает 100 миллионов на каждый тип симуляции. Если больше, число симуляций уменьшается автоматически (не менее 10), и панель об этом сообщает. Например, для 50 000 сделок выполняется 2 000 симуляций. Большие расчёты идут по частям со строкой прогресса, поэтому график не зависает.
Примечания и ограничения
- Только статистика прошлых сделок. Это не прогноз, не гарантия, не проверка стратегии по принципу «прошёл / не прошёл», не торговый сигнал и не совет.
- Перемешивание и удаление считают каждую сделку фиксированной суммой, не зависящей от других сделок. Для систем, в которых сделки зависят друг от друга или от баланса (например, сетка, мартингейл, усреднение или лот, растущий вместе с балансом), результаты симуляций могут сильно отличаться от того, что такая система могла бы сделать на самом деле.
- Результат бэктеста зависит от настроек теста (период, символ, спред, комиссия, модель тиков). Этот инструмент только читает переданный ему результат и не проверяет, как был сделан тест.
- Отчёты .xlsx (Open XML / Excel) не читаются. Сохраните отчёт в HTML или используйте CSV. Файлы больше 64 МБ не читаются, используется не более 2 000 000 сделок.
- Читаются только файлы внутри MQL5\Files (или общей папки Files). Имя файла не должно содержать «..» или «:».
- Стандартные имена отчётов MT5 содержат номер счёта (например, ReportTester-12345678.html). Панель и экспортированный CSV показывают имя файла, поэтому переименуйте файл перед снимками экрана или перед тем, как передать CSV кому-либо.
- Таблицы по годам и месяцам используют время закрытия в том виде, как оно записано в данных (для отчётов и истории MT5 — время сервера).
- В тестере стратегий у источника «Account history» нет ваших сделок, поэтому показываются ДЕМОНСТРАЦИОННЫЕ ДАННЫЕ, а кнопка CSV скрыта. Для своих данных используйте индикатор на обычном графике.
Совместимость и поддержка
- Только MetaTrader 5. Счета с хеджированием и неттингом, любой символ и таймфрейм (символ графика не важен).
- Без DLL, без доступа в интернет. Файл записывается только при нажатии кнопки CSV.
- Поддержка через сообщения MQL5, ответ в течение 3 рабочих дней: установка, настройки, загрузка файлов и сообщения об ошибках. Мы не можем оценивать, хороши ли ваша стратегия или советник, толковать ваши результаты как совет, давать прогнозы рынка или принимать торговые решения за вас.
- Никакие результаты вашей торговли не обещаются и не подразумеваются.
