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

Перебор сетки параметров

Перебор параметров сравнивает заранее заданные варианты стратегии на одних и тех же рыночных данных и при одинаковых допущениях об исполнении. 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;
  • изменение сетки после просмотра результатов без нового эксперимента;
  • слишком большой поиск без независимой проверочной выборки;
  • ранжирование только по прибыли.

Связанные статьи