Logo

hw98_console_prompt.ico Тестирование торговых стратегий на исторических данных

hamster-bot/tester - Подвинутый инструмент для проведения тестирования своих торговых систем на исторических данных.

    hw98_console_prompt.ico Особенности бэктестера:
  • Прогон сразу нескольких стратегий разных типов на разных таймфреймах одновременно.
  • Всё это с общим балансом. Для понимания как стратегии уживаются на одном кошельке в режиме реального времени.
  • Поддержка тиковых данных. Симуляция поведения стратегии внутри свечи как на торгах в реальном времени.
  • Нет ограничений по входным рыночным данным. Проведение тестирования за любые исторические периоды.
  • Тестирование своей сложной логики которую невозможно точно протестировать готовыми сторонними решениями без костылей.
  • Бэктесты проходят на том же продакшн коде, на котором работает бот в реальном времени.

Реализовано как отдельный коннектор hw98_console_prompt.ico к "бирже" (Mock-объект заменяющий биржу). Таким образом можно протестировать весь ранее написанный код бота. Бот думает, что работает на реальной бирже (ставит ордера, получает баланс и инфу о позициях). А эта виртуальная биржа заглушка всё считает и генерирует отчет.

hw98_console_prompt.ico Рыночные данные для тестирования

Криптовалютные биржи публично делятся историческими рыночными данными. Вот примеры: public.bybit.com, data.binance.vision, public.bitmex.com.
Тестер сам скачивает нужный диапазон данных о торгах и формурует бары для бота. Тестер скачивает до начала теста несного больше данных чтобы проогрузились все индикаторы ТА для стратегии перед началом периода тестирования.
Данные сохраняются в hw98_console_prompt.ico папку tester/data/{symbol}. В эту папку можно подкинуть любые свои данные в CSV формате.


hw98_console_prompt.ico Поведение тестера

С точки зрения бота, тестер - это просто еще одна биржа. Бот подключается к ней и начинает получать бары, выставлять ордера и т.д. Тестер в это время просто эмулирует поведение реальной биржи.
Баланс общий для всех стратегий. Поведение как на фьючерсах BYBIT/BINANCE с кросс маржой. Бот может запросить Wallet или Margin баланс. Margin баланс рассчитывается с учетом всех открытых позиций и unrealized PnL по ним.
Реальное поведение цены. Когда бот запрашивает текущую незавершенную свечу, тестер отдает цену сделки из тиковых данных (и так пока не закнчатся рыночные данные внутри свечи и перейдет к следующей). Таким образом стратегии, которые завязаны на цену внутри свечи (например проскальзывание, трейлинг стопы и т.д.) работают корректно.


hw98_console_prompt.ico Отчёт

По окончании тестирования в hw98_console_prompt.ico папку tester/report сохраняется подробный HTML отчет.

    Содержание отчета:
    • Общие метрики всей торговой системы:
    • Начальный и конечный баланс
    • Общая прибыль/убыток в USDT и %
    • Максимальная просадка
    • Количество сделок
    • Процент прибыльных сделок
    • Profit Factor
  • Отдельные свечные графики по каждой стратегии. С отметками сделок.
  • График Margin баланса (с учетом всех открытых позиций и unrealized PnL).
  • Таблицы со списком всех сделок по каждой стратегии.
  • Список настроек стратегий и параметров тестера
  • Сводная информация по всем стратегиям
  • Обьем торгов и уплоченная комиссия
Hamster Bot Backtesting


hw98_console_prompt.ico Параметры тестера

файл: config_tester.json
InitialBalance - начальный баланс для тестирования
StartDate - дата начала тестирования в формате 2026-02-03T00:00:00
EndDate - дата окончания тестирования в формате 2026-02-13T00:00:00
WarmupDays - количество дней для прогрева перед началом тестирования
MakerFee - комиссия мейкера (0.0001 = 0.01%)
TakerFee - комиссия тейкера (0.0001 = 0.01%)
SlippagePercent - проскальзывание для маркет ордеров (0.0001 = 0.01%)
UpdateData - обновление данных перед тестированием (true/false)

Hamster Bot Backtesting

Также все стратегии бота доступны в формате PineScript для проведения тестирования на TradingView.