Перебор сетки параметров
Перебор параметров сравнивает заранее заданные варианты стратегии на одних и тех же рыночных данных и при одинаковых допущениях об исполнении. TradeJS строит декартово произведение массивов сетки и проверяет каждую комбинацию для каждого инструмента.
Оценка размера поиска
Если у MA_FAST три значения, а у MA_SLOW два, сетка содержит шесть
комбинаций. Для 20 инструментов полный набор состоит из 120 тестов до применения
ограничения --tests.
Сетка должна оставаться объяснимой. Большой поиск требует больше вычислений и повышает вероятность выбрать шум. Параметры и диапазоны должны следовать из гипотезы стратегии, а не из многократного просмотра одного периода.
Пример сетки
{
"INTERVAL": ["15"],
"MAX_LOSS_VALUE": [10],
"MA_FAST": [14, 21, 34],
"MA_SLOW": [55, 89],
"LONG": [
{ "enable": true, "direction": "LONG", "TP": 2, "SL": 1 }
],
"SHORT": [
{ "enable": true, "direction": "SHORT", "TP": 2, "SL": 1 }
]
}
Каждое значение должно быть массивом. Хранение и правила имени описаны в разделе Сетка параметров бэктеста.
Запуск поиска
npx @tradejs/cli backtest \
--user root \
--config MaStrategy:grid-v1 \
--connector bybit \
--timeframe 15 \
--tickers BTCUSDT,ETHUSDT \
--tests 12 \
--parallel 4 \
--cacheOnly
Основные ограничения:
--tickersзадаёт явный список инструментов;--tickersLimitограничивает список, полученный от коннектора;--excludeисключает инструменты;--testsограничивает полный набор инструмент × комбинация;--parallelзадаёт число параллельных процессов;--skipи--continueпомогают продолжить запланированную работу.
Используйте --cacheOnly, чтобы сравнивать варианты на неизменной истории. Если
история обновилась, зафиксируйте это как новый вход эксперимента.
Выбор и проверка
Просмотрите результаты и покрытие инструментов:
npx @tradejs/cli results \
--strategy MaStrategy \
--coverage \
--user root
Если выбор и оценка используют один период, лучший результат остаётся внутривыборочным. Зарезервируйте независимый период, проверьте близкие значения параметров и увеличенные издержки до работы с текущим рынком.
results --merge может хранить локальный список лучшего записанного результата
по каждому инструменту. Команда не меняет tradejs.config.ts и не создаёт
портфельное решение.
Частые ошибки
- скаляр вместо массива;
- пустой массив, который создаёт ноль комбинаций;
- отсутствие имени стратегии в
StrategyName:label; - изменение сетки после просмотра результатов без нового эксперимента;
- слишком большой поиск без независимой проверочной выборки;
- ранжирование только по прибыли.