Понятная схема без лишнего жаргона

Как работает торговый робот Rotor

Робот не «покупает по любому сигналу». Он постоянно слушает биржевые данные, отбирает достойные ситуации, проверяет риск и только потом передаёт заявку брокеру.

34/34 инструмента в наблюдении
3 потока данных: цена, стакан, сделки
4 process workers для тяжёлого анализа
1 безопасный канал отправки заявок
T‑Invest — источник истины
Главная блоксхема

Весь путь: от биржи до учёта сделки

Каждый следующий блок получает уже проверенный результат предыдущего. Заявка не может «перепрыгнуть» риск-контроль.

1

Биржа

T‑Invest передаёт цены, стакан и сделки.

2

Сбор данных

Поток одновременно подписан на все 34 бумаги.

3

Планировщик

Решает, что проверить первым: позиции, резкие движения, остальные.

4

Параллельный анализ

До 4 процессов считают признаки и ищут торговую ситуацию.

5

Сигнал

Стратегия формирует намерение: купить, продать, закрыть или ничего не делать.

6

Риск и размер

Проверяются лимиты, свежесть, капитал и допустимое количество.

7

Исполнение

Один координатор посылает заявку брокеру и обрабатывает ответ.

8

Брокер

Принимает, отклоняет или частично/полностью исполняет заявку.

9

Учёт сделки

Подтверждённое исполнение меняет позицию, бюджеты и P&L.

10

Сверка

Робот сверяет свою картину с реальным счётом T‑Invest.

11

Журналы

Сохраняются сигнал, причина отказа, риск-решение и исполнение.

12

Контроль

Dashboard, API, heartbeat, SLA, ошибки и MAX-уведомления.

↺ Если сигнала нет, данные устарели или риск не разрешает сделку, робот ничего не покупает и возвращается к наблюдению.

Данные

Получение и сверка.

Вычисления

Планирование и анализ.

Решение

Сигнал и выбор маршрута.

Защита

Лимиты и блокировки.

Действие

Заявка и учёт сделки.

Как он успевает следить за рынком

Все 34 инструмента мониторятся, но с разным приоритетом

«Приоритет» не означает, что остальные забыты. Поток биржи принимается для всех, а дорогой анализ в первую очередь получают самые важные сейчас бумаги.

1. Открытые позиции

Самый высокий приоритет

За уже вложенными деньгами нужно следить чаще: выход, stop, Campaign, изменение риска.

2. Активные кандидаты

Быстрая полоса

Бумаги со свежим сигналом, резким движением или повышенным интересом проверяются ускоренно.

3. Общий watch-список

Все 34 инструмента

Каждое изменение в потоке может поднять бумагу в быструю полосу. Никакого ручного «избранного» нет.

4. Фоновые задачи

Не тормозят рыночный цикл

Свечи, позиции, деньги, операции и reconciliation обновляются отдельно от главного анализа.

Простая аналогия: это как диспетчер с 34 экранами. Все экраны включены, но тот, где сейчас происходит важное, автоматически становится главным.
Логика торгового решения

Сигнал — это ещё не сделка

Есть свежие данные и потенциальная ситуация?

Нет

no_price, устаревшая свеча, плохой стакан, нет перевеса. Робот записывает причину и ждёт.

Да

Проверяется режим рынка, маршрут стратегии, сила сигнала, спрэд, ликвидность и ожидаемая экономика после комиссий.

Вход

Может быть long или short, если маршрут, риск и лимиты это разрешают.

Удержание

Сигнал недостаточен для действия — позиция или пустой инструмент просто наблюдаются.

Выход/снижение

Закрытие, reduce-only, защитный выход или ступень Campaign. Размер не может превысить реальную позицию.

Защитные ворота

Что должно пройти намерение перед заявкой

Каждые ворота могут сказать «нет». Даже очень сильный сигнал не отменяет жёсткие лимиты.

1. Глобальное состояние — live разрешён, нет pause/stop/reduce-only запрета?
2. Качество данных — цена, свеча, стакан и рыночное событие ещё свежие?
3. Маршрут и направление — стратегия допущена, short разрешён, инструмент не в карантине?
4. Риск счёта — дневной убыток, общая экспозиция, число позиций, концентрация и маржа в норме?
5. Экономика — ожидаемый эффект перекрывает комиссию, спрэд и проскальзывание?
6. Размер заявки — хватает денег, лот корректен, не превышены лимит на заявку и Campaign-бюджет?
7. Финальная перепроверка — прямо перед отправкой ничего не изменилось?
Важно: риск-движок не предсказывает прибыль. Его задача — не дать одной ошибке, плохим данным или серии убытков неконтролируемо увеличить риск.
Транзакция исполнения

Почему анализ параллельный, а заявки идут через один канал

Анализировать бумаги можно одновременно. Изменять один брокерский счёт безопаснее по очереди: так две нити не купят одни и те же деньги.

TradeIntent

Что хотим сделать и почему.

Финальный risk

Последнее авторитетное «можно».

Резерв

Деньги/объём временно занимаются под эту заявку.

Свежая цена

Проверка непосредственно перед RPC.

Отправка

Один account-scoped writer обращается к T‑Invest.

Квитанция

Ответ брокера связан с intent и correlation ID.

Исполнено полностью/частично

Подтверждённое количество вносится в позицию, Campaign ledger, бюджеты и атрибуцию.

Отклонено

Резерв снимается, причина фиксируется. Робот не придумывает исполнение.

Ответ неизвестен

Самый опасный случай: обрыв сети после отправки. Новая заявка запрещается, пока reconciliation не узнает истину у брокера.

Жизненный цикл позиции

Что робот делает после покупки или short-входа

Ядро позиции

Подтверждённый брокером объём и средняя цена.

Постоянное наблюдение

Цена, P&L, риск, ликвидность, стакан и свежесть.

Campaign

Может планировать ступени, добор, частичную фиксацию или отскок.

Общий risk

Campaign не имеет обходной дороги: действие проходит те же лимиты.

Выход или hold

Если условий нет — hold. Если есть — новое намерение и полная цепочка проверок.

Ключевой принцип: «следующая ступень сетки достигнута» не равно «заявка точно будет». Снача снова проверяются рынок, смысл сделки, бюджет и риск.
Самоконтроль и восстановление

Брокер — источник истины

Локальная база робота — это его рабочая копия. Если она расходится с T‑Invest, робот не «исправляет брокера»: он останавливает опасное действие и восстанавлиает локальную картину из брокерских данных.

T‑Invest

Реальные позиции, заявки, деньги и исполнения.

Главная истина

Rotor / SQLite

Намерения, локальные позиции, Campaign ledger, бюджеты, журналы.

Рабочая проекция

При старте

Восстанавливаются незавершённые intent, заявки и Campaign. До сверки новые опасные действия запрещены.

Во время работы

Фоновый broker maintenance проверяет позиции, деньги, операции и reconciliation.

При несовпадении

Возникает failure/warning, опасная ветка замораживается, затем локальное состояние чинится по брокеру.

Наблюдаемость

Heartbeat, last_error, SLA, queue drops, latency, открытые заявки и reconciliation видны в API/dashboard.

Многопоточность простыми словами

Что работает одновременно, а что намеренно по очереди

Параллельно — для скорости

Приём market stream, кэширование данных, анализ символов, тяжёлые shadow/исследовательские расчёты, чтение API и фоновое обслуживание.

Инструменты: asyncio, background threads, отдельные process workers.

Последовательно — для безопасности

Итоговое изменение одного брокерского счёта: резерв капитала, отправка заявки, обработка fill и изменение портфеля.

Принцип: parallel analysis, single-writer execution.

Почему не нужно 4 потока, одновременно шлющих заявки: узкое место здесь — не скорость сетевого RPC, а правильный расчёт и отбор. Один writer устраняет двойные покупки и гонки за один капитал.
Живой пример

Допустим, в GAZP началось резкое движение

Поток T‑Invest приносит новую цену, сделку и изменение стакана GAZP. Остальные 33 подписки продолжают работать.
Mover detector видит импульс и переводит GAZP из watch в быструю полосу.
Снимок рынка фиксируется как неизменяемый набор фактов, чтобы во время расчёта данные не «поплыли».
Стратегия и alpha оценивают направление, силу, режим рынка и предлагают действие или hold.
Если сигнала нет, всё заканчивается записью причины. Дальше идёт только реальный кандидат.
Риск и sizing проверяют весь счёт и вычисляют допустимое количество лотов.
Перед отправкой снова сверяются цена, позиция, деньги, резерв и reduce-only ограничение.
Брокер отвечает. Только подтверждённое исполнение меняет учётную позицию.
Reconciliation подтверждает, что у робота и брокера одинаковые позиции и открытые заявки.
Честно о границах

Чего эта система не обещает

Не предсказывает будущее

Стратегия оценивает вероятность и риск, а не знает следующую цену.

Не торгует без данных

Если биржа закрыта или цена несвежая, нормальный результат — no_price и отсутствие заявки.

Не обещает прибыль

Хорошая архитектура снижает технический риск, но не создаёт рыночную alpha сама по себе.

Не отменяет проскальзывание

Между решением и фактической сделкой всегда есть рыночная задержка, спрэд и доступная ликвидность.

Мини-словарь

Термины, которые видны в dashboard

Signal

Предложение стратегии. Ещё не заявка.

TradeIntent

Формализованное намерение с причиной и уникальным ID.

Fill

Фактически исполненная брокером часть заявки.

Reconciliation

Сверка позиций и заявок робота с брокером.

Campaign

Жизненный цикл позиции с ядром, ступенями и отдельным учётом.

SLA / p95

SLA — допустимая задержка. p95 — время, в которое укладываются 95% измерений.