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

Как создавать стратегии

Эта страница объясняет базовый контракт стратегии в TradeJS и показывает, где именно размещать логику.

TradeJS поддерживает два пути создания стратегий:

Типовая структура стратегии

В пакете стратегии (built-in в packages/strategies, пользовательская в src/strategies) обычно есть:

  • config.ts
  • core.ts
  • figures.ts (если стратегия рисует свои линии/точки/зоны)
  • strategy.ts
  • manifest.ts
  • adapters/ai.ts (опционально)
  • adapters/ml.ts (опционально)
  • hooks.ts (опционально)

Контракт runtime

core.ts возвращает один из трех вариантов:

  • skip
  • entry
  • exit

Общий runtime выполняет:

  • enrichment сигнала (AI/ML)
  • policy-гейты
  • исполнение ордера
  • lifecycle-хуки

Файлы:

  • @tradejs/node/strategies
  • @tradejs/core/strategies
  • Strategy Runtime Hooks (каталог lifecycle-хуков)

Правило импортов:

  • импортируйте Node runtime wiring из @tradejs/node/strategies
  • импортируйте pure strategy helper’ы из @tradejs/core/strategies
  • импортируйте общие контракты из @tradejs/types
  • избегайте непубличных deep-imports

Пример минимального core.ts

export const createMyStrategyCore: CreateStrategyCore<
MyStrategyConfig
> = async ({ strategyApi }) => {
return async () => {
const positionExists = await strategyApi.isCurrentPositionExists();
if (positionExists) {
return strategyApi.skip('POSITION_EXISTS');
}

const { currentPrice } = await strategyApi.getMarketData();

const { stopLossPrice, takeProfitPrice } =
strategyApi.getDirectionalTpSlPrices({
price: currentPrice,
direction: 'LONG',
takeProfitDelta: 2,
stopLossDelta: 1,
unit: 'percent',
});

return strategyApi.entry({
direction: 'LONG',
orderPlan: {
qty: 1,
stopLossPrice,
takeProfits: [{ rate: 1, price: takeProfitPrice }],
},
});
};
};

Где задается runtime-поведение

  • manifest.ts:

    • entryRuntimeDefaults
    • hooks
    • aiAdapter
    • mlAdapter
  • tradejs.config.ts:

    • hooks для общей логики сразу на все стратегии текущего проекта
    • удобно для общих risk rules, cross-strategy управления позициями и shared order filters
  • adapters/*:

    • mapping policy из конфига (mapEntryRuntimeFromConfig)
    • нормализация payload для AI/ML

Пошаговые руководства

Внешняя стратегия как npm-плагин

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

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

Пример плагина:

  • публикуйте стратегию как npm-пакет и подключайте через strategies