Appearance
Документация плагина NinjaTrader 8
Этот документ описывает плагин TMPro для NinjaTrader 8. Плагин получает сигналы Trading Monitor Pro через SignalR, проверяет их и выполняет поддерживаемые торговые команды внутри NinjaTrader 8.
Состав пакета
Рекомендуемый вариант поставки - single-DLL сборка из NinjaTrader8.SingleDll:
deploy/bin/Custom/TMPro.NT8.DirectClient.dlldeploy/bin/Custom/Indicators/TMPro/TMPro.csdeploy/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 в настройках индикатора.
Установка
Закройте NinjaTrader 8.
Скопируйте
TMPro.NT8.DirectClient.dllв:textDocuments\NinjaTrader 8\bin\CustomСкопируйте
TMPro.csиTMPro.Models.csв:textDocuments\NinjaTrader 8\bin\Custom\Indicators\TMProЗапустите NinjaTrader 8.
Откройте
New > NinjaScript Editor.Выполните компиляцию NinjaScript.
Добавьте индикатор
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
pauseresumeinfo
system.pause приостанавливает выполнение торговых команд до получения system.resume. system.info принимает payload.info или payload.OHLC и используется для передачи информационных сигналов.
order
submit
Обязательные поля payload:
instrumentside:buyилиsellexecutionType:market,limit,stopилиstop_limitquantity: больше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.closeposition.reduceposition.protectposition.close_allposition.flatten_now
position.protect использует текущий размер позиции на счете. Если защита передана в тиках, NinjaTrader рассчитывает цены stop/target от средней цены текущей позиции.
position.flatten_now отменяет рабочие ордера по указанному инструменту и закрывает позицию по этому инструменту.
Команды риска
Поддерживаемые команды:
risk.block_instrumentrisk.allow_instrumentrisk.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.mdNinjaTrader8/README.mdNinjaTrader8/README.DirectSignalR.mdNinjaTrader8/signal_schema.ru.md