Backtest Reality Check
- Утилиты
- Версия: 1.0
- Активации: 10
Backtest Reality Check
Утилита для MetaTrader 5. Она читает сохранённый отчёт тестера стратегий и считает по нему показатели, а затем теми же функциями рассчитывает их по сделкам того же советника на счёте. Оба набора чисел выводятся рядом, в двух столбцах. Оценкой теста дело не кончается — пока советник торгует, показатели по счёту пересчитываются с каждой новой закрытой сделкой, и расхождение остаётся на экране дальше. Пока на счёте меньше 30 сделок, панель числа не прячет, но и расхождением их ещё не называет: она пишет, что сделок мало. Сама утилита не открывает, не закрывает и не изменяет позиции, не выставляет и не отменяет ордера.
Что означает флаг
Флаг у показателя означает ровно одно: значение вышло за порог, указанный справа в той же строке. Ни о качестве советника, ни о причине расхождения флаг не говорит. Переоптимизация, смена рынка, другой брокер и простое везение оставляют похожий след, и по одному числу их не различить.
Отчёт и счёт в двух столбцах
На вкладке «Live vs Report» столбцы выводятся рядом:
Manual (0) Link Unlink
Report: GridBot_EURUSD_M15.htm
Report Live Diff
Trades 28 140 -
Win rate 67.86% 41.43% -26.4 pt
Profit factor 3.50 1.64 -1.86
Expected payoff 32.14 7.16 -24.99 0.22x
Avg win 66.32 44.14 -22.18
Avg loss -40.00 -19.00 +21.00
Max drawdown 0.40% 0.38% -0.0 pt
Avg holding time 5.9 h 4.9 h -0.9 h
Trades per week 5.64 5.52 -0.12 0.98x
Avg lot 0.10 0.10 -0.00
Win rate differs from the report by -26.4 pt over 140 trades
И отчёт, и счёт проходят через один и тот же код. Сделки со счёта сначала собираются в ту же структуру, в которую разбирается отчёт, и только потом попадают в те же функции расчёта. Это не два одинаковых расчёта, записанных в двух разных местах: столбцы могут разойтись, только если изменить саму общую функцию, а расхождений вида «посчитали по-разному» здесь не бывает в силу самого устройства программы.
В строке «Trades» разность не выводится намеренно. Тест за несколько месяцев и счёт за несколько недель не обязаны сойтись по числу сделок, и вычитание одного из другого ничего не значит.
Разность двух долей записывается в процентных пунктах, и пометка pt в строке поставлена именно для этого: разность процентов, названная процентом, означала бы совсем другое. Там, где отношение нагляднее разности, оно выводится рядом. Если разделить значение из столбца «Live» на значение из столбца «Report», получится как раз то число, что написано справа.
Советников панель находит сама: магические номера берутся из истории счёта, и на каждый номер заводится своя строка. Настраивать для этого нечего. Сделки без магического номера собираются в строку «Manual (0)», потому что ручная сделка и советник, которому магический номер забыли задать, со стороны не различаются.
Когда сказать ещё нечего
Not enough live trades yet (18 of 30)
Win rate 50.00% vs 67.86% - with 18 trades, a gap this size can occur by chance
Пока на счёте меньше 30 сделок, серыми выводятся все три столбца — «Report», «Live» и «Diff», а на панели появляется строка «Not enough live trades yet», и рядом с ней написано, сколько сделок уже есть и сколько нужно. Числа при этом остаются на виду: прятать их было бы такой же ложью, как выдавать их за установленное расхождение.
Строка «Win rate» оценивается отдельно и не по порогу, а по тому, объясняется ли расхождение случайностью. Доля из отчёта берётся за ожидаемую, по числу сделок на счёте считается стандартная ошибка, и она, умноженная на 1,96, откладывается в обе стороны. Пока расхождение укладывается в этот коридор, панель пишет, что разрыв такого размера может возникнуть случайно. Когда расхождение выходит за коридор, панель эту оговорку снимает и просто называет величину.
Проверить правило можно по двум состояниям самой панели: и то, где сделок ещё мало, и то, где их уже достаточно, сняты с одного и того же отчёта. Ширину коридора меняет только число сделок на счёте: пока их мало, коридор шире расхождения и оговорка выводится, а когда их становится достаточно, расхождение выходит за коридор и на месте оговорки выводится сама величина.
Порог смещён в пользу советника намеренно. Прибор, который назовёт изменившимся то, что не менялось, хуже прибора, который подождёт. Умение сказать, что судить пока рано, и есть суть этого инструмента: если ответ готов всегда, за ним ничего не стоит.
Куда положить отчёт
Тестер стратегий предлагает сохранить отчёт в двух форматах — HTML и XML — и ни один из них не выбран заранее. Выбирать нужно HTML, иначе читать будет нечего. Отчёт, сохранённый как XML, на деле устроен совсем иначе, и в этой версии он не читается. Из списка он при этом не исчезает: панель выводит его имя и пишет, что файл нужно пересохранить.
Отчёты берутся из папки MQL5\Files\BacktestRealityCheck\reports. Папка создаётся при первом запуске, и пока в ней пусто, полный путь к ней выводится прямо на панель, так что искать его не придётся.
Что читается и что уходит наружу
Числа берутся из таблицы сделок в отчёте, а не из итоговых строк в его шапке, поэтому язык интерфейса терминала на них не влияет. Убедиться в этом можно самому: сохранить один и тот же прогон дважды, поменяв язык терминала между сохранениями, и дать утилите прочитать оба файла. Числа совпадут.
Файл читается локально, на вашем компьютере, и наружу не уходит ничего. В самом отчёте тестера нет ни номера счёта, ни имени владельца.
Чего утилита не делает
— В торговлю не вмешивается: позициями и ордерами не управляет, советники не запускает и не останавливает.
— Рассчитана на хеджинговый счёт: на неттинговом позиции складываются, и развести показатели по отдельным советникам не получится — они попадут в одну строку.
Демоверсия
Бесплатная демоверсия работает в тестере стратегий. В демоверсию встроен свой набор данных, поэтому панель заполнена с первой секунды и не встречает пользователя пустым экраном. Всё время работы демоверсии на панели остаётся строка
Sample data - not a real report
и та же строка пишется в журнал терминала, так что демонстрационные числа не спутать с настоящими. На реальном графике этот режим не включается никогда.
Параметры
InpReportFolder InpUseCommonFolder InpRescanSeconds InpMinTradesForStats
InpFlagTopTradeShare InpFlagEquityR2 InpFlagMinTrades InpIncludeSwapCommission
InpHistoryDays InpPanelX InpPanelY InpFontSize InpShowTesterSelfDemo
Параметров тринадцать, и с настройками по умолчанию всё работает сразу: перед первым запуском менять нечего. Нужны MetaTrader 5, хеджинговый счёт и один свободный график; надписи на экране английские. Перед выпуском выполнена автоматическая проверка: в коде нет ни одного вызова торговых функций, ни одного импорта DLL и ни одного обращения к сети.
Утилита читает уже закрытые сделки и считает по ним показатели, а о том, что случится дальше, не говорит ничего и не обещает никаких результатов. Торговля связана с риском потерь. Начните с демоверсии.
