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

Запуск стратегии в рабочем окружении

Бэктест не запускает стратегию. Работа на реальном счёте начинается только после отдельного контролируемого развёртывания точной сборки проекта. В этой сборке должны совпадать пакет стратегии, проверенная конфигурация и версия TradeJS, которая будет обрабатывать закрытые свечи.

Команда create-tradejs предназначена для локального знакомства с системой. Она не создаёт рабочий сервер, TLS, резервное копирование, мониторинг и реестр образов. Подготовьте эти компоненты до разрешения ордеров.

1. Опишите рабочую конфигурацию

basePreset регистрирует плагины встроенных стратегий, но регистрация не включает их. В runtime.deployments вы явно выбираете, какие зарегистрированные стратегии рассчитывать и где их запускать.

Добавьте именованное развёртывание в tradejs.config.ts. Оно связывает коннектор, сохранённый торговый счёт, набор инструментов и полную конфигурацию стратегии:

import { basePreset } from '@tradejs/base';
import { defineConfig } from '@tradejs/core/config';

export default defineConfig(basePreset, {
runtime: {
deployments: {
production: {
label: 'Production',
connectorName: 'bybit',
accountId: 'bybit-main',
enabled: true,
tickers: ['BTCUSDT'],
strategies: {
DoubleTap: {
enabled: true,
config: {
INTERVAL: '15',
UNIVERSE: 'crypto',
MAX_LOSS_VALUE: 1,
},
},
},
},
},
},
});

Вместо сокращённых настроек DoubleTap перенесите полную конфигурацию, которую вы проверяли. Значение риска в примере показывает только форму настройки и не является рекомендацией.

Ключ внутри strategies должен точно совпадать с именем в манифесте зарегистрированной стратегии. Чтобы запустить несколько стратегий, добавьте в этот объект дополнительные записи. tickers на уровне развёртывания задаёт общий набор инструментов; для отдельной стратегии можно указать собственный selection: { tickers: [...] }.

Создайте счёт bybit-main в настройках пользователя root и выдайте API-ключу только необходимые торговые права. Значение accountId в файле должно точно совпадать с идентификатором сохранённого счёта. Секреты остаются в защищённом хранилище сервера; не добавляйте их в tradejs.config.ts или Git. Подробнее: Локальный пользователь root.

Единственный источник рабочих настроек — tradejs.config.ts. Не копируйте конфигурацию развёртывания или стратегии в Redis и не добавляйте числовое поле version. При проверке TradeJS сам вычисляет два идентификатора:

  • strategyRevision однозначно описывает установленный пакет стратегии, его зависимости TradeJS, версию среды исполнения и итоговую конфигурацию;
  • deploymentCompositionId однозначно описывает всё развёртывание: коннектор, счёт, включённые стратегии и выбранные инструменты.

По этим значениям оператор может проверить фактическую сборку без ручного счётчика версий.

2. Соберите воспроизводимый выпуск

Зафиксируйте проверенные версии пакетов. Сохраните одним коммитом tradejs.config.ts, package.json и lock-файл, затем выполните полный набор проверок проекта. Рабочая сборка должна создать и проверить манифест пакетов по фактически установленным версиям и точному коммиту проекта.

Соберите один неизменяемый образ приложения или другой выпускной артефакт и разверните на сервере именно его. Не устанавливайте на сервере плавающие версии пакетов и не пересобирайте приложение из другого состояния репозитория.

Созданный через create-tradejs проект пока не содержит автоматизацию рабочего манифеста, публикации образа и развёртывания сервера. Не считайте npm run dev рабочим запуском. Используйте приведённые ниже официальные репозитории как образец либо реализуйте равноценные проверки выпуска в своей инфраструктуре до запуска стратегии на реальном счёте.

В официальной схеме TradeJS-Project хранит конфигурацию и собирает образ приложения, а TradeJS-Deploy управляет рабочим Compose, TLS, томами, серверными секретами и жизненным циклом процессов. В собственной инфраструктуре можно использовать другую контейнерную платформу или диспетчер процессов, сохранив ту же гарантию неизменяемой сборки.

3. Проверьте развёрнутую конфигурацию

Выполните команды внутри развёрнутого проекта. Они должны использовать те же Redis, базу данных и торговый счёт, что и постоянный процесс стратегии:

npx @tradejs/cli doctor

npx @tradejs/cli runtime-control verify \
--user root \
--deployment production

Команда verify должна вернуть ok: true и показать ожидаемые стратегию, счёт, strategyRevision и deploymentCompositionId. Не продолжайте, если счёт, версия пакета, интервал, рынок или состояние стратегии отличаются от ожидаемых.

4. Воспроизведите решения на истории

Запустите недавний период с тем же пакетом и той же конфигурацией:

npx @tradejs/cli replay \
--user root \
--deployment production \
--days 7 \
--cacheOnly

Проверьте решения, полноту данных, различия исполнения и управление открытыми позициями. Успешное воспроизведение обязательно, но не доказывает будущую доходность. Если --cacheOnly сообщает о неполной истории, подготовьте данные без размещения ордеров и повторите воспроизведение.

5. Сначала запустите без ордеров

Один раз обработайте последнюю закрытую свечу:

npx @tradejs/cli signals \
--user root \
--deployment production

Затем оставьте стратегию работать в режиме наблюдения:

npx @tradejs/cli signals-daemon \
--user root \
--deployment production

Без --makeOrders TradeJS рассчитывает и сохраняет решения, но не размещает ордера. До следующего шага проверьте свежесть свечей, набор инструментов, частоту сигналов, причины отклонений, память, восстановление после перезапуска и мониторинг.

Для одного развёртывания должен работать только один такой процесс. Запускайте его под управлением диспетчера процессов с политикой перезапуска, ограничением памяти, журналами и оповещением о пропущенных циклах.

6. Явно разрешите размещение ордеров

После выполнения проверок перед реальной торговлей замените команду процесса наблюдения на:

npx @tradejs/cli signals-daemon \
--user root \
--deployment production \
--makeOrders

Флаг --makeOrders разрешает отправку ордеров, но не отключает проверки счёта, риска, стратегии, AI или ML. Начинайте с ограниченного риска и заранее записанных условий остановки. Перед запуском убедитесь, что прежний процесс без ордеров действительно остановлен.

7. Приостановка и возобновление новых входов

Чтобы временно запретить новые входы и продолжить сопровождение открытых позиций, выполните:

npx @tradejs/cli runtime-control pause \
--user root \
--deployment production \
--strategy DoubleTap

Возобновление стратегии, включённой в Git-конфигурации:

npx @tradejs/cli runtime-control resume \
--user root \
--deployment production \
--strategy DoubleTap

Пауза — временная рабочая команда. Чтобы изменить параметры, пакеты, инструменты, счёт или постоянное состояние enabled, отредактируйте проект в Git, соберите новый неизменяемый выпуск, разверните его и снова выполните runtime-control verify. Никогда не меняйте рабочую конфигурацию стратегии напрямую в Redis.

Мониторинг, откат и ответственность сервисов описаны в руководстве по рабочему окружению и в разделе Как работают реальные сигналы.