Skip to content

Overview

Назначение

TradingMonitor.Pro - это платформа для создания, доставки и исполнения торговых сигналов. Она объединяет desktop-приложение для подготовки сигналов, личный кабинет пользователя и торговые исполнители для NinjaTrader 8 и MetaTrader 5.

Платформа решает полный рабочий цикл:

  • пользователь настраивает аккаунт, тариф, интеграции и session token в личном кабинете;
  • пользователь создает или загружает signal list в desktop-приложении;
  • desktop-приложение обнаруживает торговый сигнал на графике или по данным TradingView Table View;
  • обнаруженный сигнал превращается в структурированную JSON-команду;
  • платформа доставляет команду в подключенные торговые плагины и внешние интеграции;
  • плагины NinjaTrader 8 и MetaTrader 5 принимают команду, валидируют ее и исполняют поддерживаемое торговое действие.

TradingMonitor.Pro не заменяет торговый терминал и не исполняет сделки внутри desktop-приложения. Desktop app отвечает за подготовку и обнаружение сигналов, dashboard - за аккаунт и настройки пользователя, а терминальные плагины - за фактическое исполнение команд в NinjaTrader 8 или MetaTrader 5.

Компоненты платформы

Платформа состоит из нескольких связанных компонентов.

TradingMonitor.Pro Desktop - WPF-приложение Signal Studio. В нем создаются signal lists, настраиваются Screen/OCR и Price/Indicator сигналы, формируются command drafts и запускается мониторинг браузера.

TradingBridgeDashboard - личный кабинет пользователя. Он используется для регистрации, входа, просмотра session token, контроля тарифа и лимитов, оплаты, настройки уведомлений и просмотра online-событий сигналов.

NinjaTrader 8 plugin - индикатор TMPro для NinjaTrader 8. Он подключается к платформе, принимает сигналы, фильтрует их по платформе и instance id, проверяет TTL и дубликаты, затем исполняет поддерживаемые команды через NinjaTrader account/order API.

MetaTrader 5 plugin - plugin TMPro для MetaTrader 5. Он подключается к платформе, получает команды, применяет local risk gates и исполняет поддерживаемые действия через торговые функции MetaTrader 5.

Личный кабинет

Личный кабинет находится в проекте TradingBridgeDashboard и является веб-интерфейсом пользователя для управления аккаунтом. Он построен как dashboard с навигацией Dashboard, Online Signals и Billing.

Основные возможности личного кабинета:

  • регистрация, login, подтверждение email, восстановление и сброс пароля;
  • вход через Google callback;
  • отображение email текущего пользователя и контроль активной browser-сессии;
  • просмотр и копирование session token, который используется desktop app и торговыми плагинами;
  • account snapshot: текущий план, срок действия подписки, количество сигналов за день и лимиты;
  • billing flow для выбора и оплаты тарифного плана;
  • просмотр доступных возможностей тарифа: количество устройств, лимиты сигналов, Telegram, Discord, n8n и другие интеграции;
  • настройка уведомлений и webhook-интеграций: Telegram Bot Token, Telegram Chat ID, Discord Webhook URL, n8n Webhook URL и optional n8n secret;
  • отображение статуса интеграций: linked, pending setup или disabled by plan;
  • Online Signals feed, где входящие ReceiveSignal события отображаются в обратном хронологическом порядке.

Dashboard является источником session token для всей платформы. Пользователь копирует token из личного кабинета и использует его при подключении desktop app, NinjaTrader plugin и MetaTrader plugin. За счет этого все компоненты работают в одной пользовательской сессии и получают только те сигналы, которые относятся к соответствующему аккаунту.

Desktop Signal Studio

Desktop-приложение TradingMonitor.Pro - это рабочее место для создания и запуска торговых сигналов. Пользователь входит по session token, после чего открывается Signal Studio.

Signal Studio включает:

  • боковую панель со списком сигналов и действиями Add, New, Load, Save;
  • редактор выбранного сигнала;
  • редактор торговой команды;
  • вкладку Price & Indicators для условий по OHLCV и индикаторам;
  • вкладку Start Detecting для запуска мониторинга и просмотра runtime-логов.

Signal list сохраняется как JSON-документ с массивом templates. Каждый template содержит имя сигнала, категорию, параметры обнаружения и связанную команду. Такие файлы можно сохранять, загружать повторно и переносить между рабочими местами.

Desktop app выполняет две основные задачи: помогает пользователю описать, что считать сигналом, и во время мониторинга обнаруживает такие сигналы в браузере. Когда сигнал найден, приложение строит JSON-команду версии v: 1 и отправляет ее в платформу для доставки подключенным целям.

Signal Types and Detection

Платформа поддерживает две категории сигналов: Screen и Price.

Screen-сигналы описывают визуальные элементы на графике. Они могут включать один или два текстовых слоя, цвет текста, графический primitive, ориентацию primitive, reference image и threshold совпадения. Для таких сигналов desktop app захватывает кадры браузера, подготавливает detector runtime и ищет новые визуальные совпадения после нажатия Start.

Price-сигналы описывают условия по данным TradingView Table View. Они не используют OCR и reference image. Источниками данных являются Open, High, Low, Close, Volume и индикаторные колонки. Desktop app читает Table View через Windows UI Automation как стандартный DataGrid, без DOM-парсинга и без наведения мыши.

Price-сигнал может содержать один или несколько condition blocks, объединенных через And или Or. Поддерживаются сравнения с другим источником или числовым Value, Greater Than, Less Than, Crossing, Crossing Up, Crossing Down, Entering Channel, Exiting Channel, Moving Up и Moving Down.

Для price-сигналов доступны режимы эмиссии:

  • Once - сигнал отправляется при переходе условия из false в true;
  • Every bar - сигнал может отправляться один раз на закрытый бар, пока условие остается истинным.

Один running signal list не должен смешивать Screen/OCR и Price/browser сигналы. Эти режимы используют разные источники данных и разные runtime-модели, поэтому смешанные списки блокируются до старта мониторинга.

Command Flow

Команда начинается в desktop-приложении как command draft, привязанный к конкретному signal template. При срабатывании сигнала draft превращается в JSON envelope.

Команда содержит:

  • v - версия протокола;
  • signalId - идентификатор обнаруженного сигнала;
  • ts - timestamp;
  • ttlMs - срок жизни команды для не-system команд;
  • platform - целевая платформа: ninjatrader, mt5, any, telegram, discord или n8n;
  • instanceId - optional фильтр конкретного терминала или экземпляра;
  • type - группа команды;
  • cmd - команда внутри выбранной группы;
  • payload - параметры исполнения.

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

  • system: pause, resume, info;
  • order: submit;
  • position: close, reduce, protect, close_all, flatten_now;
  • risk: block_instrument, allow_instrument, flatten_now.

Для order-команд доступны market, limit, stop и stop-limit сценарии на уровне payload. Команда может содержать quantity, limit price, stop price, stop loss, take profit, tick-based protection и NinjaTrader ATM strategy name. Если включен Include OHLC, payload дополняется объектом DOHLCV с полями D, O, H, L, C, V.

После генерации команда отправляется в платформу и доставляется подключенным целям. Торговые плагины дополнительно валидируют протокол, платформу, instance id, TTL, дубликаты и локальное состояние перед исполнением.

Для Price/Indicator-сигналов MainApp может вычислять динамические Stop Loss и Take Profit из OHLC или индикаторных источников. Динамические источники разрешены только для order.submit, не для position.protect; Volume/V запрещены. Первоначальный вход регистрирует lifecycle-корреляцию по lifecycleKey и entrySignalId, а последующие обновления используют те же значения и передают только изменившуюся сторону защиты. Полное описание находится в Dynamic Stop Loss / Take Profit.

NinjaTrader 8 Plugin

Плагин NinjaTrader 8 реализован как индикатор TMPro. Он устанавливается в NinjaTrader 8, подключается к https://tradingmonitor.pro через SignalR и подписывается на входящие ReceiveSignal события.

Основные параметры и функции плагина:

  • SignalRUrl - адрес подключения;
  • SessionToken - token пользователя, либо загрузка token из Windows Credential Manager;
  • InstanceId - локальный идентификатор экземпляра для маршрутизации;
  • AccountName - торговый account NinjaTrader;
  • QuantityMultiplier - множитель количества контрактов;
  • EnableOrderExecution - live execution или dry-run поведение;
  • VerboseLogging - подробный runtime-лог.

Перед исполнением TMPro проверяет:

  • что platform равен any или соответствует NinjaTrader routing;
  • что instanceId пустой или совпадает с локальным InstanceId;
  • что команда не просрочена по TTL;
  • что signalId не был обработан ранее;
  • что команда поддерживается локальной моделью;
  • что инструмент не заблокирован local risk state;
  • что плагин не находится в paused state.

Плагин поддерживает команды system.pause, system.resume, order.submit, position-команды и risk-команды. Для order.submit он создает entry order через NinjaTrader account API, учитывает market/limit/stop/stop-limit типы, quantity multiplier и pending protection для stop loss / take profit. Position-команды закрывают, уменьшают или защищают позиции. Risk-команды управляют локальной блокировкой инструмента и flatten-сценариями.

MetaTrader 5 Plugin

Плагин MetaTrader 5 представлен как TMPro для MetaTrader 5. Пользователь устанавливает plugin в терминал, указывает session token и настраивает routing через InstanceId, если нужно принимать команды только в конкретном терминале.

Основные runtime-возможности:

  • подключение к https://tradingmonitor.pro по session token;
  • InstanceId routing;
  • dry-run, live-demo и live режимы;
  • локальная дедупликация по signalId;
  • expiry по expiresAt;
  • polling статуса и ошибок DLL;
  • локальные risk gates: pause, symbol blocklist, terminal trade permission и account trade permission.

MetaTrader plugin принимает сигналы с platform равным mt5 или any. Он поддерживает system.pause, system.resume, order.submit, position.close, position.reduce, position.protect, position.close_all, risk.block_instrument, risk.allow_instrument и risk.flatten_now.

Для live order.submit поддерживаются market, limit и stop заявки. stop_limit распознается на уровне протокола, но live broker-side исполнение для MT5 отмечено как ограничение и не должно обещаться как готовая возможность. Объем рассчитывается как quantity * InpVolumeMultiplier и нормализуется по ограничениям брокера.

Доставка сигналов

Все компоненты используют session token, чтобы работать в рамках одного пользовательского аккаунта.

Desktop app отправляет обнаруженные сигналы в платформу. Dashboard может отображать live events в Online Signals. NinjaTrader и MetaTrader плагины принимают только релевантные команды.

Маршрутизация строится на нескольких уровнях:

  • account/session token определяет пользователя;
  • platform определяет целевую группу исполнителей;
  • instanceId позволяет направить команду в конкретный экземпляр терминала;
  • ttlMs и expiresAt защищают от исполнения устаревших команд;
  • signalId используется для дедупликации;
  • локальные risk gates в плагинах могут дополнительно остановить исполнение.

Такой поток позволяет одному desktop-приложению отправлять сигналы в разные цели: NinjaTrader 8, MetaTrader 5, Telegram, Discord и n8n, если эти направления разрешены тарифом и настроены в личном кабинете.

JSON Signal Lists

Signal list - это переносимый JSON-документ, который хранит набор signal templates. Базовая структура:

json
{
  "templates": []
}

Screen-template сохраняет визуальное описание сигнала: texts, primitive, components, reference image и command. Price-template сохраняет condition object и command.

При загрузке desktop app валидирует JSON, создает editor models и подставляет default instrument там, где это возможно. При сохранении оно нормализует цвета, primitive types, orientation и command fields.

Signal list отвечает только за описание сигналов и команд. Аккаунт, token, тариф, уведомления и live execution state находятся вне signal list и управляются через dashboard и терминальные плагины.

Reliability and Limits

Платформа проектировалась вокруг практической надежности:

  • dashboard показывает token, тариф, лимиты и online-события в одном месте;
  • SignalR reconnect в desktop app продолжает восстановление после временных сбоев;
  • торговые плагины проверяют platform routing, instance id, TTL и дубликаты;
  • local risk gates позволяют pause, block instrument и flatten-сценарии;
  • mixed Screen/Price signal lists блокируются до запуска мониторинга;
  • price-only mode не требует screen capture;
  • Table View Init подготавливает источники без старта runtime-логов;
  • команды валидируются перед отправкой и дополнительно проверяются на стороне исполнителя.

Ограничения:

  • для Price/Indicator режима в браузере должна быть открыта TradingView Table View;
  • окно браузера должно находиться по instrument или заданному title;
  • Screen/OCR режим зависит от визуальной стабильности сигналов на графике;
  • очень короткие или неоднозначные тексты хуже подходят для OCR;
  • фактическое исполнение сделок зависит от подключенного терминала, account permissions и настроек плагина;
  • MT5 live execution не должен описываться как поддерживающий stop_limit, пока эта возможность не реализована broker-side;
  • dashboard /settings сейчас не является отдельной рабочей страницей: настройки уведомлений доступны через основной Dashboard UI.
  1. Зарегистрироваться или войти в личный кабинет TradingMonitor.Pro.
  2. Проверить тариф, лимиты, доступные интеграции и срок действия подписки.
  3. Скопировать session token из Dashboard.
  4. Настроить Telegram, Discord или n8n webhook, если нужны уведомления и тариф это разрешает.
  5. Установить и настроить торговый исполнитель: TMPro для NinjaTrader 8 или TMPro.mq5 + DLL-коннектор для MetaTrader 5.
  6. В торговом плагине указать connection URL, session token, InstanceId, account и режим исполнения.
  7. Открыть desktop app и подключиться тем же session token.
  8. Создать или загрузить signal list.
  9. Для Screen-сигналов настроить text layers, primitive и reference image.
  10. Для Price-сигналов открыть TradingView Table View и нажать Init в Price & Indicators.
  11. Настроить command draft для каждого сигнала и проверить generated command JSON.
  12. Перейти во вкладку Start Detecting и нажать Start.
  13. Проверять runtime-лог desktop app, Online Signals в dashboard и логи торгового плагина.
  14. Остановить мониторинг перед изменением signal list, источников данных или terminal execution settings.

TradingMonitor.Pro documentation.