Автоматический бэктест: прогон скриптовой стратегии по кэшированным барам
Режим автоматического бэктеста на экране реплея прогоняет сохранённую стратегию по неделям и годам кэшированных баров с обязательными транзакционными издержками, применяя те же консервативные правила исполнения, что и исследовательский бэктестер, и записывает результат в панель результатов.
Senzoukria · Документация · Обновлено: сентябрь 2026
Где найти
- Где
- Реплей → «Подготовка» → режим «Автоматический бэктест» («Месяцы баров — ваша стратегия работает сама»)
- Значения по умолчанию
- Период 1 месяц, зерно 15 минут, стоимость пункта 2 $, комиссия за круг 1,24 $, проскальзывание 1 тик
- Правила исполнения
- Вход по открытию следующего бара плюс проскальзывание, выходы по теням, на неоднозначном баре побеждает стоп, комиссия на каждой сделке
- Глубина обзора
- На каждом решении стратегия видит последние 500 баров
Что это делает
Если ручной реплей проигрывает один день тик за тиком, то автоматический бэктест прогоняет стратегию, написанную на странице скриптов, по барам из локального кэша. Стратегия объявляет decide(bars, params, ctx, state), где bars идут от новых к старым, и возвращает действие: buy, sell или close с необязательными qty, stopTicks и targetTicks. Весь цикл выполняется в воркере-песочнице (протокол ofsandbox со своей CSP) шагами по 300 мс, чтобы интерфейс оставался отзывчивым; тот же текст цикла выполняется и в blob-воркере для тестов и для сайта, что гарантирует идентичные результаты.
Панель сначала читает кэш по выбранным контракту и зерну и сообщает покрытие («в кэше {n} сессий из {n} запрошенных»). Недостающие сессии можно скачать у брокера (бары либо тиковую историю футпринта, если стратегия читает дисбалансы по уровням), а файл Databento ohlcv-1m можно импортировать. Серверные бары несут OHLC, объём и дельту, но не уровни футпринта, а импортированные бары не несут дельты вовсе.
Настройки
| Настройка | По умолчанию | Что меняет |
|---|---|---|
| Стратегия | «Выбрать…» | Сохранённая стратегия со страницы скриптов; «Изменить стратегию» открывает код, изменённый черновик запускается без сохранения, Ctrl+Enter перезапускает. |
| Период | 1 месяц | 1 неделя, 1 месяц, 3 месяца, 6 месяцев, 1 год, 2 года, 5 лет (от 7 до 1 825 дней). |
| Зерно | 15 минут | 1 минута, 5 минут, 15 минут, 1 час. Полгода минутных баров — это около 250 000 баров и минуты на каждую конфигурацию. |
| Стоимость пункта ($) | 2 (MNQ) | Долларовая стоимость одного полного пункта на контракт; минимум 0,01. |
| Комиссия за круг на контракт ($) | 1,24 | Вычитается из каждой сделки; минимум 0. |
| Проскальзывание (тики) | 1 | Всегда штрафует вход: покупки исполняются выше, продажи — ниже; минимум 0. |
| Walk-forward | Выкл. | Включает срезы, долю обучения, критерий отбора и оси параметров (см. страницу walk-forward). |
| Запустить бэктест | — | Запускает прогон; «Прервать» его останавливает. Заголовок результата читается как «Результат · {n} баров». |
Правила симуляции
- Решение принимается на закрытом баре и применяется по открытию следующего: никакого исполнения по цене, которая уже была прошлым в момент решения.
- Стопы и цели проверяются по максимуму и минимуму бара, а не по закрытию.
- Когда один бар задевает и стоп, и цель, побеждает стоп: без тиков порядок неизвестен, поэтому движок решает не в вашу пользу.
- Комиссии применяются к каждой сделке; подсказка об издержках напоминает, что нулевые издержки превращают убыточную стратегию в прибыльную, как только она торгует часто.
- Разворотный сигнал сначала закрывает текущую позицию (причина «reverse»); действие close выравнивает позицию (причина «flatten»).
- MAE, MFE и риск на входе (расстояние до стопа × qty × стоимость пункта) записываются по каждой сделке для графиков экскурсий и R-кратностей.
- Логи скрипта хранятся до 200 строк; стратегия на Python выполняется интерпретатором, установленным со страницы скриптов; стратегии на C++ пока бэктестировать нельзя.
Ограничения и подводные камни
Результат записывается в панель результатов как прогон «авто» с фактически покрытыми днями, а в списке показано «{n} д из {req} запрошенных», когда покрытие меньше 90 % запрошенного окна. Бэктест на частичном покрытии покрывает только это окно, и панель прямо об этом говорит.
Исторические бары — это право у брокера: панель отличает «permission denied» (rp_code 13, бары не включены на счёте) от архива, который не заходит так далеко назад. Бэктест не выставляет ордеров; автоматические стратегии всегда управляют только симулированным оценочным счётом.
Связанные страницы
- Walk-forward анализ
- Ассистент бэктеста (ИИ)
- Панель результатов (прошлые сессии)
- Руководство по бэктесту фьючерсов
- Квант-трейдинг для начинающих
Эта страница на других языках
Частые вопросы
- Почему бэктест исполняет по открытию следующего бара?
- Решение существует только после закрытия бара. Вход по цене того же бара использовал бы информацию, которой у вас ещё не было, — это первый дефект наивных бэктестеров.
- Можно ли выставить нулевые комиссии?
- Поле принимает 0, но подсказка предупреждает, что бэктест с нулевыми издержками лжёт, как только стратегия торгует часто. Значение 1,24 $ по умолчанию — это порядок величины круга у проп-фирмы.
- Почему по моему контракту в кэше ничего нет?
- Кэш наполняется, когда вы открываете контракт на графике с этим зерном или когда скачиваете недостающую историю из панели бэктеста. Ещё можно импортировать файл Databento ohlcv-1m.