Appearance
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; InstanceIdrouting;- 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.
Recommended Operating Sequence
- Зарегистрироваться или войти в личный кабинет
TradingMonitor.Pro. - Проверить тариф, лимиты, доступные интеграции и срок действия подписки.
- Скопировать session token из Dashboard.
- Настроить Telegram, Discord или n8n webhook, если нужны уведомления и тариф это разрешает.
- Установить и настроить торговый исполнитель:
TMProдля NinjaTrader 8 илиTMPro.mq5+ DLL-коннектор для MetaTrader 5. - В торговом плагине указать connection URL, session token,
InstanceId, account и режим исполнения. - Открыть desktop app и подключиться тем же session token.
- Создать или загрузить signal list.
- Для Screen-сигналов настроить text layers, primitive и reference image.
- Для Price-сигналов открыть TradingView Table View и нажать
InitвPrice & Indicators. - Настроить command draft для каждого сигнала и проверить generated command JSON.
- Перейти во вкладку
Start Detectingи нажатьStart. - Проверять runtime-лог desktop app,
Online Signalsв dashboard и логи торгового плагина. - Остановить мониторинг перед изменением signal list, источников данных или terminal execution settings.