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

Как работает и настраивается ИИ

ИИ в TradeJS дополнительно проверяет сигнал перед исполнением ордера.

Модуль

  • @tradejs/node

Откуда берется конфигурация

TradeJS ищет данные для подключения к ИИ в таком порядке:

  1. Настройки аккаунта в Redis-записи текущего пользователя.

В веб-интерфейсе нажмите шестерёнку на левой боковой панели и укажите в настройках аккаунта:

  • AI_API_KEY
  • AI_API_ENDPOINT

Эти значения хранятся на уровне пользователя, поэтому разные операторы могут использовать разные ключи или провайдеры без общего глобального секрета.

Как работает проверка

Для entry с сигналом:

  1. TradeJS формирует данные для проверки.
  2. Сохраняет результат в Redis (analysis:<symbol>:<signalId>).
  3. Вне бэктеста может заблокировать ордер, если оценка ниже порога.

Если стратегия не задала порог, TradeJS использует значение 4. Встроенные стратегии задают MIN_AI_QUALITY в своей конфигурации. Поэтому проверяйте итоговую конфигурацию стратегии и не рассчитывайте на одно общее значение.

Примечания:

  • AI_API_KEY и AI_API_ENDPOINT нужно задавать в записи пользователя, а не в переменных окружения приложения.
  • Для стандартной точки подключения OpenAI явно сохраните https://api.openai.com/v1 в настройках пользователя.

Чтобы проверить изменения фильтра до выхода в рабочий режим, см. Проверка ИИ-фильтра на данных бэктестов. Этот сценарий использует набор данных из бэктеста и прогоняет текущую логику запросов на том же наборе исторических сделок.

AI_MODE

Через AI_MODE можно выбрать способ проверки ордеров в рабочем режиме при AI_ENABLED=true.

  • AI_MODE=llm — TradeJS отправляет данные выбранному поставщику ИИ и принимает решение по оценке модели.
  • AI_MODE=gate — TradeJS применяет локальные детерминированные правила стратегии. Результаты проверки всё равно сохраняются для последующего разбора и сравнения.

MIN_AI_QUALITY остается общим порогом в обоих режимах.

На практике:

  • AI_MODE=gate ближе всего к ai-train --localOnly: оба режима используют одинаковые локальные правила допуска.
  • AI_MODE=llm нужно проверять обычным запуском ai-train или по записям рабочего процесса, потому что ответ поставщика может отличаться от результата локальных правил.

Пример:

{
"AI_ENABLED": true,
"AI_MODE": "gate",
"MIN_AI_QUALITY": 4
}

Пример адаптера TrendLine

TrendLine добавляет в общие данные поле trendline с полной геометрией линии:

export const trendLineAiAdapter: StrategyAiAdapter = {
buildPayload: ({ signal, basePayload }) => ({
...basePayload,
figures: {
...basePayload.figures,
trendline: signal.figures?.trendLine ?? null,
},
}),
mapEntryRuntimeFromConfig: (config) =>
mapAiRuntimeFromConfig(
config as Pick<TrendLineConfig, 'AI_ENABLED' | 'MIN_AI_QUALITY'>,
),
};

Как подменить промпт для своей стратегии

Укажите aiAdapter в манифесте стратегии. TradeJS сохраняет основной запрос и добавляет к нему ваши блоки.

import type { StrategyAiAdapter } from '@tradejs/types';

export const myStrategyAiAdapter: StrategyAiAdapter = {
buildSystemPromptAddon: ({ signal }) => `
Дополнительные правила для ${signal.strategy}:
- Делай акцент на подтверждении пробоя + согласовании с объемом.
- Если подтверждения по объему нет, снижай quality до <= 3.
`,
buildHumanPromptAddon: ({ signal }) => `
Дополнительный контекст:
- riskRatio=${signal.prices.riskRatio}
- symbol=${signal.symbol}
`,
};

Затем подключите адаптер в манифесте:

import type { StrategyManifest } from '@tradejs/types';
import { myStrategyAiAdapter } from './adapters/ai';

export const myStrategyManifest: StrategyManifest = {
name: 'MyStrategy',
aiAdapter: myStrategyAiAdapter,
};

Важно:

  • так можно изменить запрос для конкретной стратегии через публичный интерфейс
  • основной запрос по-прежнему применяется, а ваши блоки добавляются к системной и пользовательской частям

Логика фильтра перед размещением ордера

const minAiQuality = runtime.ai?.minQuality ?? 4;
const shouldMakeOrder =
makeOrdersEnabled &&
(!signal || env === 'BACKTEST' || quality == null || quality >= minAiQuality);

Если проверка не пройдена, сигнал сохраняется, но ордер не отправляется.

ИИ и машинное обучение

  • Модель машинного обучения добавляет вероятности и метаданные.
  • ИИ оценивает качество сетапа и может заблокировать исполнение.