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

Владение репозиториями и пакетами

TradeJS — мультирепозиторная система. Поведение тестируется, версионируется и публикуется из того репозитория, которому оно принадлежит.

От генератора до рабочего сервера

  1. npx create-tradejs создаёт отдельный npm-проект.
  2. @tradejs/base предоставляет стандартный набор компонентов.
  3. Он устанавливает публичные стратегии, индикаторы и коннекторы.
  4. Проект хранит tradejs.config.ts, lock-файл, локальные данные, результаты бэктестов и зависимости от закрытых стратегий.
  5. При самостоятельном размещении TradeJS-Project собирает версионированный образ приложения и передаёт его тег и ревизию проекта в TradeJS-Deploy.
  6. TradeJS-Deploy хранит Compose, TLS, постоянные тома, SSH, ограничения ресурсов и секреты рабочего окружения.

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

Границы пакетов

  • TradeJS публикует движок и общие пакеты среды исполнения.
  • TradeJS-Base публикует @tradejs/base — базовую композицию пакетов.
  • TradeJS-Strategy-Kit публикует общие вспомогательные функции через явные подпути @tradejs/strategy-kit/*.
  • Каждый репозиторий TradeJS-Strategy-* публикует собственный пакет @tradejs/strategy-*.
  • TradeJS-Strategy-Template и TradeJS-Workflows стандартизируют новые репозитории стратегий, CI и публикацию.

TrendLine и ReverseTrendLine — единственное групповое исключение. Обе стратегии живут в TradeJS-Strategy-TrendLine и публикуются вместе как @tradejs/strategy-trend-line, потому что используют общую механику семейства. Отдельного пакета для общей логики трендовых линий нет.

Пакеты Base, Kit и стратегий объявляют зависимости от среды исполнения TradeJS через peerDependencies; совпадающие devDependencies нужны только для независимой сборки и тестов исходного репозитория. Сгенерированный проект устанавливает одну точную композицию. Пакет не должен приносить вторую копию движка через dependencies.

Публичные и закрытые стратегии

Базовый набор зависит от полного публичного каталога. Проект может использовать этот набор, перечислить только выбранные публичные пакеты или добавить закрытый пакет:

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

export default defineConfig(basePreset, {
strategies: ['@your-scope/private-strategy'],
});

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

Обновление пакетов в рабочем проекте

Для реальной торговли фиксируйте точные версии пакетов. Набор пакетов фреймворка может состоять из одной канонической стабильной версии либо из одной проверенной точной версии x.y.z-beta.N, общей для всех пакетов фреймворка. Base, Strategy Kit и пакеты стратегий остаются только на стабильных версиях. Обновите зависимость, lock-файл и полную декларацию стратегии, затем запустите проверки проекта. Парсер каждой стратегии отклоняет неизвестные поля и подставляет значения по умолчанию. Проверка вычисляет strategyRevision из точного пакета стратегии, её прямых TradeJS-зависимостей, пакета среды исполнения и разобранной итоговой конфигурации. deploymentCompositionId связывает цель развёртывания, состояние включения, выбор символов и все ревизии стратегий. Ручного поля version в конфигурации среды исполнения больше нет.

Отправка изменений в Project обновляет только исходники. Публикация неизменяемого образа и передача точного SHA в Deploy выполняются отдельным явным процессом. Публикация пакета стратегии сама по себе не меняет работающую установку TradeJS.

Где вносить изменение

  • Решения, графики, адаптеры и общие функции семейства стратегии меняются в её репозитории.
  • Вспомогательная функция для нескольких несвязанных стратегий меняется в TradeJS-Strategy-Kit.
  • Состав публичного базового набора меняется в TradeJS-Base.
  • Личная композиция, базовые настройки среды исполнения и образ приложения меняются в TradeJS-Project.
  • Схема серверов, учётные данные, TLS, тома и правила развёртывания меняются в TradeJS-Deploy.
  • Общая семантика среды исполнения и публичные контракты фреймворка меняются в TradeJS.