Перейти к основному содержимому

Сетка параметров бэктеста

Конфигурация бэктеста задаёт значения параметров, которые должен проверить 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.

Дальше​