Skip to content

Документация плагина NinjaTrader 8

Этот документ описывает плагин TMPro для NinjaTrader 8. Плагин получает сигналы Trading Monitor Pro через SignalR, проверяет их и выполняет поддерживаемые торговые команды внутри NinjaTrader 8.

Состав пакета

Рекомендуемый вариант поставки - single-DLL сборка из NinjaTrader8.SingleDll:

  • deploy/bin/Custom/TMPro.NT8.DirectClient.dll
  • deploy/bin/Custom/Indicators/TMPro/TMPro.cs
  • deploy/bin/Custom/Indicators/TMPro/TMPro.Models.cs

Старый multi-DLL вариант остается в каталоге NinjaTrader8, но single-DLL пакет проще устанавливать, потому что зависимости SignalR объединены в TMPro.NT8.DirectClient.dll.

Требования

  • NinjaTrader 8 на Windows.
  • Действующий session token Trading Monitor Pro.
  • Сетевой доступ к SignalR-серверу, по умолчанию https://tradingmonitor.pro.
  • Выбранный торговый счет NinjaTrader в настройках индикатора.

Установка

  1. Закройте NinjaTrader 8.

  2. Скопируйте TMPro.NT8.DirectClient.dll в:

    text
    Documents\NinjaTrader 8\bin\Custom
  3. Скопируйте TMPro.cs и TMPro.Models.cs в:

    text
    Documents\NinjaTrader 8\bin\Custom\Indicators\TMPro
  4. Запустите NinjaTrader 8.

  5. Откройте New > NinjaScript Editor.

  6. Выполните компиляцию NinjaScript.

  7. Добавьте индикатор TMPro на график.

Настройки индикатора

НастройкаНазначение
AccountСчет NinjaTrader для ордеров и операций с позициями.
SignalR URLБазовый URL сервера. Значение по умолчанию: https://tradingmonitor.pro.
Session TokenТокен авторизации. Если поле пустое, плагин пытается загрузить токен из Windows Credential Manager, цель TradingMonitorPro.
Instance IDНеобязательный идентификатор экземпляра терминала для маршрутизации сигналов.
Instrument MappingsПравила сопоставления инструментов в формате source=target, разделенные точкой с запятой.
Quantity MultiplierУмножает количество из входящего сигнала перед отправкой ордера.
Enable ExecutionЕсли выключено, плагин принимает сигналы, но не выполняет торговые действия.
Verbose LoggingВключает подробные сообщения в окне вывода NinjaTrader.

Пример сопоставления инструментов:

text
ES1!=ES 06-26;NQ1!=NQ 06-26

Поведение подключения

Плагин создает прямое SignalR-подключение к серверному endpoint signalHub. При подключении отправляется handshake с типом клиента NinjaTrader, machine ID, необязательным instance ID и режимом Local.

Слой подключения:

  • автоматически переподключается, когда это возможно;
  • отправляет heartbeat каждые 40 секунд;
  • держит очередь до 1000 ожидающих сигналов;
  • игнорирует повторные signalId в течение одного часа;
  • скрывает heartbeat-сообщения из обычных клиентских логов.

Маршрутизация сигналов

Плагин принимает сигнал, если:

  • platform равно ninjatrader или any;
  • instanceId пустой либо точно совпадает с настройкой Instance ID;
  • signalId недавно не обрабатывался;
  • сигнал не истек по правилу ts + ttlMs.

Для всех команд, кроме system, требуется положительный ttlMs. Поле payload всегда должно быть JSON-объектом.

Поддерживаемые команды

system

  • pause
  • resume
  • info

system.pause приостанавливает выполнение торговых команд до получения system.resume. system.info принимает payload.info или payload.OHLC и используется для передачи информационных сигналов.

order

  • submit

Обязательные поля payload:

  • instrument
  • side: buy или sell
  • executionType: market, limit, stop или stop_limit
  • quantity: больше 0

Дополнительные правила:

  • limitPrice обязателен для limit и stop_limit;
  • stopPrice обязателен для stop и stop_limit;
  • stopLoss и takeProfit задаются как абсолютные цены;
  • stopLossTicks и takeProfitTicks задаются как расстояние в тиках;
  • абсолютные цены имеют приоритет над значениями в тиках;
  • atmStrategyName или atmStrategyTemplateName можно использовать с market, limit, stop и stop_limit.

Пример:

json
{
  "v": 1,
  "signalId": "nt8-order-001",
  "ts": 1777000000000,
  "ttlMs": 300000,
  "platform": "ninjatrader",
  "instanceId": "terminal-01",
  "type": "order",
  "cmd": "submit",
  "payload": {
    "instrument": "ES 06-26",
    "side": "buy",
    "executionType": "market",
    "quantity": 1,
    "stopLossTicks": 16,
    "takeProfitTicks": 24
  }
}

Команды позиции

Поддерживаемые команды:

  • position.close
  • position.reduce
  • position.protect
  • position.close_all
  • position.flatten_now

position.protect использует текущий размер позиции на счете. Если защита передана в тиках, NinjaTrader рассчитывает цены stop/target от средней цены текущей позиции.

position.flatten_now отменяет рабочие ордера по указанному инструменту и закрывает позицию по этому инструменту.

Команды риска

Поддерживаемые команды:

  • risk.block_instrument
  • risk.allow_instrument
  • risk.flatten_now

risk.block_instrument блокирует новые входы по инструменту. risk.flatten_now применяется ко всему терминалу или счету и не является командой для одного инструмента.

Диагностика

  • Если индикатор не появился, скомпилируйте NinjaScript и проверьте ошибки компиляции.
  • Если нет подключения, проверьте SignalR URL, Session Token, firewall и системное время.
  • Если ордера отклоняются, проверьте Account, Instrument Mappings, названия контрактов, права счета и Enable Execution.
  • Если сигнал игнорируется, проверьте platform, instanceId, ttlMs, повторный signalId и окно вывода NinjaTrader.
  • Если используется старый multi-DLL пакет, сохраняйте проверенный набор зависимостей из lib/direct-signalr. Особенно важно оставить System.Text.Encodings.Web.dll проверенной версии 6.0.0.1, совместимой с NinjaTrader 8.

Связанные файлы

  • NinjaTrader8.SingleDll/README.md
  • NinjaTrader8/README.md
  • NinjaTrader8/README.DirectSignalR.md
  • NinjaTrader8/signal_schema.ru.md

Released under the MIT License.