ИИ-агенты в инвестициях: собираем Telegram-ассистента и торгового робота на MCP Т-Инвестиций. Hermes Agent.. Hermes Agent. mcp.. Hermes Agent. mcp. n8n.. Hermes Agent. mcp. n8n. агенты ии.. Hermes Agent. mcp. n8n. агенты ии. Блог компании Т-Банк.. Hermes Agent. mcp. n8n. агенты ии. Блог компании Т-Банк. инвестиции.. Hermes Agent. mcp. n8n. агенты ии. Блог компании Т-Банк. инвестиции. искусственный интеллект.. Hermes Agent. mcp. n8n. агенты ии. Блог компании Т-Банк. инвестиции. искусственный интеллект. Программирование.. Hermes Agent. mcp. n8n. агенты ии. Блог компании Т-Банк. инвестиции. искусственный интеллект. Программирование. Финансы в IT.
ИИ-агенты в инвестициях: собираем Telegram-ассистента и торгового робота на MCP Т-Инвестиций - 1

Я Алексей Кабанов, разработчик в команде публичного API Т-Инвестиций. Недавно мы запустили MCP-сервер, позволяющий ИИ-агентам взаимодействовать с Т-Инвестициями: искать подходящие бумаги, анализировать рынок и портфель клиента. Расскажу, как можно построить автоматизацию на основе ИИ-агентов с использованием нашего MCP-сервера.

Еще недавно, чтобы автоматизировать даже несложный торговый алгоритм, приходилось писать собственный скрипт: Python, API брокера, cron и обработка ошибок на все случаи жизни. Профессиональные торговые системы существовали и раньше, но для частного инвестора порог входа оставался высоким. Сейчас между LLM и брокерским API появился стандартный слой — MCP, Model Context Protocol: модель может сама получить состояние портфеля, посмотреть стакан, выставить или отменить заявку, а вам достаточно описать задачу человеческим языком.

У Т-Инвестиций есть публичный MCP-сервер, и эта статья о том, как его использовать. Клиентом может быть что угодно: ИИ-агент вроде Hermes Agent, платформа автоматизации вроде n8n, десктопный ассистент, IDE. Разберем, чем эти подходы различаются и как они работают с MCP, что умеет сервер, а затем соберем два работающих примера:

  • личного ассистента в Telegram на Hermes Agent, который по ночам расставляет тейк-профиты;

  • торгового робота в n8n, который каждый вечер ребалансирует счет между фондом денежного рынка и ОФЗ — с подтверждением сделок в Telegram.

Оба примера можно повторить: нужен установленный Docker и три токена — бесплатный API-ключ Google AI Studio, токен Telegram-бота и токен Т-Инвестиций.

ИИ-агенты и платформы автоматизации: в чем разница

ИИ-агент — программа, в центре которой стоит большая языковая модель, наделенная инструментами, контекстом и циклом принятия решений. Классический цикл выглядит так:

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

  2. LLM рассуждает над ней и решает, какой инструмент вызвать и с какими аргументами.

  3. Получает результат вызова как «наблюдение» и продолжает рассуждение.

  4. Повторяет, пока не сочтет задачу решенной, — и отвечает текстом.

Ключевое свойство агента — автономность в рамках задачи. Мы говорим: «Проверь, есть ли у меня бумаги без тейк-профита, и расставь их», а каким маршрутом из вызовов инструментов агент к этому придет — его решение. 

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

К агентам в широком смысле относятся и фреймворки-шлюзы вроде Hermes Agent, и агентные узлы внутри других систем.

Платформы автоматизации, в числе которых n8n, появились задолго до моды на LLM. Их суть — визуальный конструктор детерминированных сценариев: триггер (расписание, вебхук, сообщение) → цепочка узлов-действий → ветвления и циклы. 

Каждый workflow — граф, который выполняется одинаково из раза в раз, с историей исполнений, логами, повторами при ошибках. Сильные стороны: предсказуемость, наблюдаемость и готовые интеграции с сотнями сервисов. Слабая — негибкость: любое дополнительное действие, не предусмотренное автором, требует правки сценария.

Граница между классами стирается на глазах: в n8n давно есть узел AI Agent, который встраивает LLM с инструментами и памятью прямо в workflow. Получается гибрид: детерминированный каркас из триггеров и проверок, внутри которого работают агентные блоки.

Критерий

ИИ‑агент

Платформа автоматизации

Логика

Решает LLM, маршрут вызовов не фиксирован

Жесткий граф узлов, задан автором

Интерфейс

Естественный язык

Визуальный редактор

Предсказуемость

Средняя: на одних и тех же входных данных план выполнения может различаться

Высокая: один набор данных интерпретируется всегда в один и тот же набор выходных данных

Изменение поведения

Переформулировать промпт

Перестроить workflow

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

История вызовов инструментов и LLM

История исполнений по каждому узлу

Стоимость

Токены LLM на каждый запуск

Детерминированные узлы почти бесплатны, LLM — только там, где добавили сами

Когда выбирать

Диалог, разнородные задачи, исследования

Регулярные регламенты, критичные к надежности процессы

Model Context Protocol — открытый стандарт, представленный Anthropic в конце 2024 года и ставший общим интерфейсом между LLM-приложениями и внешними системами. Протокол — JSON-RPC поверх stdio (для локальных серверов) или HTTP (для удаленных). В основе стандарта три примитива:

  • tools — функции, которые модель может вызвать, передав параметры;

  • resources — данные, которые сервер может отдать по запросу;

  • prompts — готовые шаблоны задач.

До MCP каждая пара «приложение <-> сервис» требовала собственной интеграции — классическая проблема N*M. С MCP сервер пишется один раз, а подключается к любому совместимому клиенту: агенту, IDE, платформе автоматизации. Это как USB-C, только для инструментов LLM.

Схема взаимодействия ИИ-агента с MCP-сервером
Схема взаимодействия LLM с внешним миром посредством MCP-сервера: за каждым вызовом инструмента стоит цепочка LLM — MCP-хост — MCP-сервер. Далее может быть вызвано какое-либо стороннее API или совершено локальное действие, например с файлом. Это зависит от логики, заложенной в конкретный MCP-сервер.

Схема взаимодействия LLM с внешним миром посредством MCP-сервера: за каждым вызовом инструмента стоит цепочка LLM — MCP-хост — MCP-сервер. Далее может быть вызвано какое-либо стороннее API или совершено локальное действие, например с файлом. Это зависит от логики, заложенной в конкретный MCP-сервер.

Hermes Agent и n8n с точки зрения MCP — клиенты: первый подключает серверы через конфиг и использует их во всех диалогах, вторая — через узел MCP Client Tool внутри конкретного workflow.

MCP-сервер Т-Инвестиций

MCP-сервер Т-Инвестиций работает по протоколу Streamable HTTP:

  • endpoint: https://invest-public-api.tbank.ru/mcp — для торговли на реальном счете, анализа портфеля или песочница https://sandbox-invest-public-api.tbank.ru/mcp, где можно создать виртуальный счет и торговать без риска потери реальных средств;

  • авторизация: токен доступа в заголовке Authorization: Bearer <token> — тот же токен, что и для API Т-Инвестиций;

  • токен выпускается в личном кабинете Т-Инвестиций. При выпуске выбирается счет и уровень доступа — только чтение, торговля или переводы. Отдельно можно выпустить токен только для песочницы. Рекомендация простая: каждому сценарию — свой токен с минимально необходимыми правами. Ассистенту, который только рассказывает про портфель, торговые права не нужны вовсе.

Важно, что для подключения к MCP необходимы установленные сертификаты Минцифры в окружении (система, хранилище сертификатов или docker-контейнер). Для начала рекомендуем подключиться к песочнице, чтобы попробовать возможности MCP: там доступны все те же инструменты, что и на боевом контуре, но недоступны реальные счета. После подключения и инициализации в агенте он сможет использовать инструменты, предоставляемые MCP-сервером.

Инструменты сервера (в терминах MCP — tools) повторяют публичное API Т-Инвестиций и расширяют его дополнительными возможностями. Вот что они дают:

  • состояние счета и портфеля — позиции, свободные деньги, оценка и доходность, история операций;

  • рыночные данные — стаканы, свечи, последние сделки, технические индикаторы, торговый календарь и статусы инструментов;

  • торговля — лимитные и рыночные заявки, стоп-лосс, тейк-профит и трейлинг, отмена и замена заявок, статусы исполнения;

  • справочник инструментов — поиск и параметры акций, облигаций, фондов, фьючерсов, валют и других бумаг;

  • аналитика — торговые стратегии и сигналы, сделки инсайдеров, новости, фундаментальные показатели компаний;

  • выплаты — дивиденды, купоны, НКД и календарь событий по облигациям;

  • пополнения и переводы — пополнение брокерского счета и переводы между своими брокерскими счетами.

Агент при запросах будет анализировать имеющиеся инструменты и строить цепочку вызовов для получения нужного результата. Например, если спросить в чате агента «Сколько сейчас стоит Лукойл?», LLM проанализирует запрос, найдет подходящий tool для получения цены, увидит, что для получения цены нужно передать идентификатор инструмента, найдет тул для получения идентификатора, выполнит последовательно запросы и вернет текущую цену акций Лукойла.

Прежде чем перейти к сценариям, зафиксируем базовую гигиену — она одинаково подходит любому клиенту MCP.

Минимальные права токена. Read-only-токен для информационных сценариев, отдельный торговый токен — для торговых, по возможности на отдельный счет «под эксперименты».

Контур исполнения. Агент с торговым токеном способен поставить заявку. Нужно осознанно решать, добавляем ли мы человека в цепочку подтверждения.

Хранение секретов. Токены следует хранить только в переменных окружения или в зашифрованных credentials.

Ограничение доступа к самому агенту. allow-list пользователей мессенджера, закрытые порты веб-панелей.

Есть условная лестница сценариев о том, что можно автоматизировать в инвестициях. Пять вариантов — от простых до смелых:

1. Информационный ассистент. Например, можно спросить у агента: «Что у меня в портфеле? Ккакая цена у Сбера? Когда у Лукойла дивидендная отсечка? Что пишут в новостях по моим бумагам?»

2. Утренняя и вечерняя сводки по расписанию. Cron-задача раз в день: состояние счета, движения за день, свежие новости по позициям — одним сообщением в мессенджере.

3. Мониторинг и алерты. «Пингуй меня, когда RSI по моей бумаге уйдет ниже 30», «Сообщи, когда цена подойдет к целевой по прогнозу аналитиков», «Предупреди о закрытии дивидендного гэпа». Агент по расписанию проверяет условие и молчит, если все в норме.

4. Сервисные торговые операции. То, что не требует прогноза, а только аккуратности: расстановка тейк-профитов и стоп-лоссов, доливки по расписанию, ребалансировка к целевым весам.

5. Робот с подтверждением (human-in-the-loop). Агент сам анализирует рынок и счет, предлагает план сделок, но исполняет только после нажатия кнопки «Подтвердить» в Telegram. Все плюсы автономности, финальное слово за человеком.

Дальше практика: сначала быстрый путь через готового агента, затем полноценный робот на платформе автоматизации.

Дальше практика: сначала быстрый путь через готового агента, затем полноценный робот на платформе автоматизации.

Hermes Agent: личный инвестиционный ассистент в Telegram

Hermes Agent — агент-шлюз с открытым исходным кодом от Nous Research. Он связывает LLM-провайдера с MCP-серверами, мессенджерами и другими платформами, умеет вести долгоживущие сессии с памятью, работать по расписанию (встроенный cron) и предоставляет веб-панель управления. Для нашей задачи он идеален: один раз развернули, подключили T-Invest MCP — и получили инвестиционного ассистента прямо в Telegram.

Что понадобится:

  • Docker с плагином Compose;

  • токен Google AI Studio — бесплатный тариф подойдет для тестов (можно получить на aistudio.google.com/apikey в пару кликов, без платежных данных);

  • токен T-Invest API;

  • токен Telegram-бота от @BotFather (команда /newbot) и ваш Telegram ID (его можно узнать у @userinfobot).

Шаг 1. Сертификаты Минцифры. Скачиваем с сайта Госуслуг сертификаты для Linux — Russian_Trusted_Root_CA.cer и Russian_Trusted_Sub_CA.cer. Кладем их в ~/hermes/certs. Устанавливать в систему не нужно: мы положим их внутрь контейнера.

Шаг 2. Docker Compose. Файл ~/hermes/docker-compose.yaml:

services:
  ca-bundle:
    image: debian:trixie-slim
    container_name: hermes-ca-bundle
    volumes:
      - ./certs/Russian_Trusted_Root_CA.cer:/usr/local/share/ca-certificates/Russian_Trusted_Root_CA.crt:ro
      - ./certs/Russian_Trusted_Sub_CA.cer:/usr/local/share/ca-certificates/Russian_Trusted_Sub_CA.crt:ro
      - ca-certs:/etc/ssl/certs
    command: >
      bash -c "apt-get update &&
               apt-get install -y ca-certificates &&
               update-ca-certificates"

  gateway:
    image: nousresearch/hermes-agent
    container_name: hermes
    restart: unless-stopped
    ports:
      - "9119:9119"
    depends_on:
      ca-bundle:
        condition: service_completed_successfully
    volumes:
      - ./data:/opt/data
      - ca-certs:/etc/ssl/certs:ro
    environment:
      - HERMES_UID=${HERMES_UID:-10000}
      - HERMES_GID=${HERMES_GID:-10000}
      - HERMES_DASHBOARD=1
      - HERMES_HOST=0.0.0.0
    command: ["gateway", "run"]

volumes:
  ca-certs:

Вспомогательный контейнер ca-bundle один раз собирает хранилище доверенных сертификатов с корнями Минцифры и складывает его в volume, который монтируется в контейнер агента. Запускаем:

docker compose up -d

В ~/hermes/data появятся config.yaml и .env — переходим к настройке.

Шаг 3. Конфигурация. В data/config.yaml нас интересуют четыре секции:

  • model — LLM для ответов. Используем gemini-3.5-flash-lite: быстро, дешево и официально попробовать можно бесплатно;

  • dashboard — веб-панель на http://localhost:9119 (логин/пароль из basic_auth);

  • mcp_servers — собственно подключение T-Invest MCP: endpoint, токен в заголовке и увеличенный таймаут — торговые инструменты могут отвечать небыстро;

  • platforms.telegram — включаем интеграцию с Telegram сразу.

model:
  default: gemini-3.5-flash-lite
  provider: gemini
  base_url: https://generativelanguage.googleapis.com/v1beta
  api_mode: chat_completions
# ...
dashboard:
  host: 0.0.0.0
  port: 9119
  basic_auth:
    username: admin
    password: ${ADMIN_PASSWORD}
# ...
mcp_servers:
  t-invest:
    url: https://invest-public-api.tbank.ru/mcp
    headers:
      Authorization: Bearer ${INVEST_TOKEN}
    timeout: 180
    enabled: true
# ...
platforms:
  telegram:
    enabled: true
# ...

В data/.env складываем все секреты:

TELEGRAM_BOT_TOKEN=...
TELEGRAM_ALLOWED_USERS=...
INVEST_TOKEN=...
GOOGLE_API_KEY=...
ADMIN_PASSWORD=...

TELEGRAM_ALLOWED_USERS — allow-list: бот будет отвечать только пользователям с перечисленными ID. Перезапускаем: docker compose restart

Шаг 4. Проверка. Пишем боту в Telegram. Например, спрашиваем состав портфеля:

Диалог с агентом в Telegram

Диалог с агентом в Telegram

Hermes держит контекст диалога: данные, которые уже получил, повторно не запрашивает.

Контекст диалога

Агент учитывает контекст диалога и не запрашивает повторно идентификаторы акции Сбера

Историю сессий и последовательность вызовов инструментов можно смотреть в веб-панели:

Веб-панель Hermes

Веб-панель Hermes

Готово: ассистент работает. Теперь сделаем его полезным в автоматическом режиме.

Автоматизация в Hermes Agent: автоматическая расстановка тейк-профитов

Сценарий: каждую ночь в 03:00 агент проверяет портфель и для каждой акции без активного тейк-профита ставит take-profit на +20% к средней цене покупки. Ночью биржа закрыта, но установка условных ордеров на стороне брокера доступна.

Менять целевую доходность, список бумаг или логику удобно через агента, потому что это не требует кода. Нужно только переформулировать задачу. 

В Hermes Agent встроенный планировщик — cron. Задачи создаются командой /cron в чате, отдельным CLI или просто просьбой естественным языком. Расписание понимает и человеческие фразы (every day at 3am), и классические выражения (0 3 * * *).

Важная особенность: cron-задача стартует в новой сессии без памяти чата, поэтому промпт должен быть самодостаточным — со всеми идентификаторами и правилами. Поскольку мы подключили Hermes к Telegram, то попробуем поставить задачу через сообщение боту:

Создаем повторяющуюся задачу через чат с ботом

Создаем повторяющуюся задачу через чат с ботом

После того как мы создали повторяющуюся задачу через сообщение в бота, в Web UI в разделе cron мы увидим созданную задачу:

Окно редактирования задачи в разделе cron Web UI Hermes

Окно редактирования задачи в разделе cron Web UI Hermes

Разберем по шагам последовательность действий, описанную в промпте агента:

  • вызов тула invest_get_portfolio с responseView: FULL отдает позиции со средней ценой покупки (averagePositionPrice) — ее и берем за базу +20%;

  • лотность обязательна: позиции приходят в штуках, а заявки ставятся в лотах — без пересчета количество в заявке окажется неверным;

  • проверяем, у каких позиций уже установлен стоп-ордер, чтобы не выставлять повторно;

  • GOOD_TILL_CANCEL — заявка живет, пока не исполнится или пока мы ее не снимем.

Результат выполнения агент доставит туда же, откуда задача создавалась — в чат с Telegram-ботом. Один агент, один MCP-сервер, ноль строк кода — на этом можно было бы остановиться. Но когда логика усложняется, удобнее переехать на платформу автоматизации. Ею и займемся.

n8n: настройка окружения

n8n — платформа автоматизации с открытым исходным кодом: сценарии собираются визуально из узлов. Все, что нужно для работы с MCP, у n8n встроенное: с версии 1.88 есть узлы MCP Client Tool и MCP Server Trigger, а узел AI Agent объединяет LLM, память и MCP-инструменты в одного агента внутри workflow.

Шаг 1. Сертификаты. Скачанные Russian_Trusted_Root_CA.cer и Russian_Trusted_Sub_CA.cer кладем в ~/n8n/certs. В отличие от Hermes, вспомогательный контейнер не нужен: начиная с версии 1.42.0 n8n подхватывает пользовательские PEM-сертификаты (.pem, .crt, .cer) из директории /opt/custom-certificates автоматически.

Шаг 2. Docker Compose. Файл ~/n8n/docker-compose.yaml

services:
  n8n:
    image: n8nio/n8n
    container_name: n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - GENERIC_TIMEZONE=Europe/Moscow
      - N8N_BLOCK_ENV_ACCESS_IN_NODE=false
      - TELEGRAM_BOT_TOKEN=<токен Telegram-бота>
    volumes:
      - ./data:/home/node/.n8n
      - ./certs:/opt/custom-certificates

GENERIC_TIMEZONE важен: в этой таймзоне будут срабатывать триггеры расписания. ./data хранит базу, сценарии и credentials.

Шаг 3. Запуск.

Теперь развернем приложение в Docker. Последовательность команд для запуска:

docker compose up -d
docker exec --user 0 n8n chown -R 1000:1000 /opt/custom-certificates
docker compose restart n8n

Вторая команда выдает права на смонтированные сертификаты процессу n8n, третья перезапускает контейнер, чтобы они подхватились. Открываем http://localhost:5678 и создаем учетную запись владельца инстанса.

Шаг 4. Credentials. Нашему будущему роботу понадобятся три credential. Создадим их заранее в разделе Credentials, чтобы потом не отвлекаться:

  1. Google Gemini API account — тип Google Gemini Api. В поле API key вставляем ключ из Google AI Studio.

  2. Bearer Auth account — тип Bearer Auth. В поле Bearer Token — токен T-Invest API (торговый: робот будет ставить заявки). Именно этот credential узел MCP Client Tool предъявит серверу Т-Инвестиций.

  3. Telegram account — тип Telegram Api. В поле Access Token — токен бота от BotFather.

На этом подготовка закончена: контейнер с сертификатами Минцифры, правильная таймзона и три credential. Можно собирать робота.

Торговый робот в n8n: автопокупка фонда денежного рынка и ОФЗ

Не будем детально описывать процесс создания workflow, так как он получился довольно объемным. Можно самостоятельно загрузить уже готовый workflow с GitHub Gists и экспортировать его в n8n. Разберем стратегию и устройство, не останавливаясь на каждом узле.

Идея — счет, который сам поддерживает заданную структуру и не держит неиспользуемый кэш:

  • Рабочая позиция — длинная ОФЗ с фиксированным купоном. В примере — выпуск SU26238RMFS4. Весь капитал работает в облигации и приносит купонную доходность.

  • Целевой денежный остаток — небольшой минус по счету. В примере −5 000 ₽. У брокера есть бесплатный лимит технического овердрафта: минусовой остаток в этих пределах не тарифицируется. Робот «дожимает» позицию ОФЗ на этот лимит — по сути, использует бесплатные заемные деньги.

  • Свободные рубли паркуются в фонд денежного рынка (тикер TMON@, площадка SPBRU). Пополнения и купоны, пришедшие между ребалансировками, не должны лежать без дела: фонд денежного рынка начисляет доходность, близкую к ключевой ставке, при дневной ликвидности.

Каждый будний вечер в 18:45, ближе к закрытию основной сессии, робот приводит счет к целевой структуре тремя правилами.

Правило А — если рублевый остаток положителен, купить фонд денежного рынка на все.

Правило Б — если после этого остаток выше целевого минуса, докупить ОФЗ на разницу, но не больше, чем разрешает маржа. Объем ограничен свободной маржой счета, ставкой риска именно вашего уровня клиента и запасом 2% на движение цены до исполнения.

Правило В — если баланс ушел глубже целевого минуса, продать фонд денежного рынка и вернуться к цели.

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

Важная оговорка: это иллюстративная стратегия для демонстрации технологий, а не инвестиционная рекомендация. Плечо, даже бесплатное, увеличивает и потери, и волатильность. Длинные ОФЗ чувствительны к ставкам. Цифры подставлены для примера.

n8n workflow торгового робота, состоящий из двух основных агентов, аналитика, исполнителя и ряда вспомогательных и связующих узлов.

n8n workflow торгового робота, состоящий из двух основных агентов, аналитика, исполнителя и ряда вспомогательных и связующих узлов.

Весь воркфлоу устроен всего из восьми смысловых блоков:

1. Аналитик — AI Agent (LLM + MCP Client Tool), который вызывается по расписанию. Его системный промпт запрещает заявки явным списком разрешенных read-only-инструментов: позиции, стаканы, параметры бумаг, маржа, ставки риска, предварительная оценка стоимости заявки. Ответ валидируется Structured Output Parser — схемой всех полей с вспомогательной моделью, которая чинит невалидный JSON.

2. План сделки — обычный Code-узел. Здесь живет торговый алгоритм: перевод цен облигации из пунктов в рубли (брокер отдает их как процент от номинала), полные цены покупки с комиссией и НКД, правила А/Б/В, маржинальный лимит, округления и готовые числа для сообщений. Это главный принцип устройства workflow: LLM не считает деньги — модель может ошибиться в арифметике, а код нет.

3. Ветка «нет действий» — если план пуст, робот пишет в Telegram, что ребалансировка не требуется. В случае возникновения ошибок (например, сбой при получении данных) или запуска workflow в неторговое время, робот пришлет отдельное сообщение. 

4. Составитель плана — второй AI Agent, превращающий готовый JSON в аккуратное сообщение для Telegram. Ему тоже запрещено пересчитывать и округлять: все числа уже готовы, задача — только текст.

5. Подтверждение кнопками — Telegram-узел отправляет сообщение с двумя inline-кнопками, «✅ Подтвердить» и «❌ Отклонить». В callback_data зашит одноразовый токен, а план сохраняется в Data Table approvals со статусом pending, заданием для исполнителя и временем жизни 60 минут.

6. Цикл ожидания — каждые 5 секунд узел HTTP Request опрашивает Telegram Bot API, Code-узел фильтрует колбэки по своему токену, обновляет статус в Data Table. Выход из цикла — подтверждено, отклонено или истек таймаут. В последних двух случаях кнопки убираются из сообщения и робот останавливается. Человек в контуре есть, но ждать его ответа бесконечно робот не будет.

7. Исполнитель — третий AI Agent, который получает задание из Data Table и ставит рыночные заявки строго по списку из плана: тот же инструмент, то же количество, то же направление. После каждой заявки он проверяет статус, собирает позиции и формирует отчет. Подсчет сумм в отчете снова вынесен из модели — в Code Tool «Калькулятор отчета», который агент вызывает как инструмент.

8. Отчет — финальное сообщение в Telegram: сделки с ценами, НКД и комиссиями, статусы заявок, портфель после исполнения.

В итоге каждый LLM-блок делает только то, в чем хорош: аналитик — упорядоченные вызовы инструментов, составитель и исполнитель — тексты и действия по регламенту. Вся арифметика и все граничные условия — в детерминированном коде.

Схема полного цикла работы workflow.

Схема полного цикла работы workflow.

Пример работы торгового робота. Изначально на счете только валюта, 761 ₽.

Состав портфеля до запуска workflow

Состав портфеля до запуска workflow

Запустим workflow вручную через UI:

Аналитик получит необходимые данные, JS-код проведёт расчеты и отправит в Telegram сообщение с планом сделок. Дальше бот будет ждать 60 минут нашего решения о сделке.

Аналитик получит необходимые данные, JS-код проведёт расчеты и отправит в Telegram сообщение с планом сделок. Дальше бот будет ждать 60 минут нашего решения о сделке.

В Telegram придет сообщение с подтверждением заявки:

В сообщении будет приведена примерная стоимость заявок вместе с комиссиями и НКД (для облигации), рассчитанная по текущим рыночным данным.

В сообщении будет приведена примерная стоимость заявок вместе с комиссиями и НКД (для облигации), рассчитанная по текущим рыночным данным.

Можно отказаться от выполнения каких-либо действий с портфелем, это будет отражено в сообщении:

 Бот обработает нажатие и допишет в отправленное ранее сообщение статус сделок.

Бот обработает нажатие и допишет в отправленное ранее сообщение статус сделок.

И flow выполнения пойдет по сценарию, в котором агент-исполнитель не участвует:

При отклонении сделки узел агента-исполнителя не задействуется.

При отклонении сделки узел агента-исполнителя не задействуется.

Если мы подтвердим роботу выставление заявок, предварительно проверив данные в сообщении, то спустя время он отчитается о выполнении:

Как можно заметить, бот довольно точно рассчитал стоимость позиций и минус по валюте.

Как можно заметить, бот довольно точно рассчитал стоимость позиций и минус по валюте.

Путь исполнения пойдет уже по сценарию, где будет задействован агент-исполнитель:

Исполнитель получит план сделок, выставит рыночные заявки, получит обновленный состав портфеля и отправит отчет пользователю в чат.

Исполнитель получит план сделок, выставит рыночные заявки, получит обновленный состав портфеля и отправит отчет пользователю в чат.

В портфеле увидим, что робот докупил ОФЗ, используя маржинальное кредитование, и TMON.

Состав портфеля после ребалансировки ботом.

Состав портфеля после ребалансировки ботом.

При невозможности ребалансировки бот также отправит соответствующее сообщение:

В чат придет сообщение с текущим валютным балансом счета.

В чат придет сообщение с текущим валютным балансом счета.

Вместо заключения

Мы прошли путь от базовых понятий до работающего робота: MCP дал моделям возможность взаимодействия с реальным миром, Hermes Agent — постоянное присутствие в мессенджере и запуск задач по расписанию, n8n — детерминированный каркас с человеком в контуре. При этом ни в одном примере не пришлось писать интеграцию с брокером: MCP-сервер Т-Инвестиций один, клиентов — сколько угодно.

Общий принцип, который мы хотели показать: агент хорошо справляется со сбором данных и текстами, арифметику в сложных сценариях лучше держать в коде, а последнее слово при сделках лучше оставлять за человеком. Тогда недетерминированность LLM перестает пугать: даже если модель поймет задачу по-своему, ее маневр ограничен кодом и правами токена.

Дальнейшие идеи автоматизации: дивидендные стратегии с календарем купонов, уведомления об инсайдерских сделках — все инструменты для этого у сервера уже есть.

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

Автор: AlekseyKab

Источник