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

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

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

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