Сетка параметров бэктеста
Конфигурация бэктеста задаёт значения параметров, которые должен проверить
TradeJS. При первой установке для веб-приложения создаётся MaStrategy:base.
Для собственного исследования сохраните именованную сетку в локальном проекте
и выберите её через --config <StrategyName:label>.
Формат сетки
Каждое поле верхнего уровня является массивом, даже если значение одно:
{
"INTERVAL": ["15"],
"MAX_LOSS_VALUE": [10],
"MA_FAST": [21, 34],
"MA_SLOW": [55, 89],
"LONG": [
{
"enable": true,
"direction": "LONG",
"TP": 2,
"SL": 1,
"minRiskRatio": 1.2
}
],
"SHORT": [
{
"enable": true,
"direction": "SHORT",
"TP": 2,
"SL": 1,
"minRiskRatio": 1.2
}
]
}
TradeJS проверяет декартово произведение массивов. В примере четыре комбинации
скользящих средних: у MA_FAST и MA_SLOW по два значения. Заранее исключите
бессмысленные сочетания, например быструю среднюю с периодом больше медленной.
Часть до первого двоеточия выбирает стратегию: MaStrategy:base запускает
MaStrategy, а TrendLine:conservative — TrendLine.
Параметры для отдельных направлений
Некоторые встроенные стратегии поддерживают <KEY>_LONG и <KEY>_SHORT в
дополнение к общему <KEY>. Например, TARGET_R_MULT_SHORT может менять цель
короткой позиции независимо от TARGET_R_MULT_LONG.
Так работают только поля, указанные в документации стратегии. Не считайте, что любой параметр автоматически поддерживает суффиксы направления.
Ручное сохранение сетки
Сетки относятся к локальным исследовательским данным и хранятся в Redis. После запуска локальных сервисов используется ключ:
users:<user>:backtests:configs:<StrategyName:label>
Пример:
redis-cli -h 127.0.0.1 -p 6379 SET \
'users:root:backtests:configs:MaStrategy:base' \
'{"INTERVAL":["15"],"MAX_LOSS_VALUE":[10],"MA_FAST":[21],"MA_SLOW":[55],"LONG":[{"enable":true,"direction":"LONG","TP":2,"SL":1,"minRiskRatio":1.2}],"SHORT":[{"enable":true,"direction":"SHORT","TP":2,"SL":1,"minRiskRatio":1.2}]}'
Запуск:
npx @tradejs/cli backtest \
--user root \
--config MaStrategy:base \
--tickers BTCUSDT \
--timeframe 15 \
--tests 1 \
--parallel 1
Для длинной конфигурации или Redis с паролем используйте небольшой скрипт заполнения в своём проекте. Добавьте его в систему контроля версий, если эксперимент должен быть проверяемым и воспроизводимым.
Воспроизведение рабочей конфигурации
Чтобы проверить конфигурацию из tradejs.config.ts, перенесите параметры
стратегии в массивы с одним значением и используйте ту же версию пакета,
таймфрейм, инструменты и период. Не копируйте поля реального запуска, например
ENV и MAKE_ORDERS; допущения о цене, комиссиях, проскальзывании и задержке
задавайте средствами бэктеста.
Сетка бэктеста и сохранённые списки результатов не меняют настройки реальной торговли.
Частые ошибки
Backtest config "<name>" not found
У выбранного пользователя нет сетки с таким именем. Проверьте пользователя и имя:
redis-cli -h 127.0.0.1 -p 6379 GET \
'users:root:backtests:configs:MaStrategy:base'
must include strategyName and strategyConfig grid
Значение не является сеткой. Каждое поле верхнего уровня должно быть непустым массивом.
Запускается другая стратегия
Стратегия выбирается по префиксу до первого двоеточия. Используйте формат
StrategyName:label.