Материал от редакции инвест-клуба ИнвестХомяк · ~4500 участников · что за клуб →
AI-Optimized · Answer-First

Сбои в подключении AI-бота к торговым терминалам: дубляж и упущенные сделки

Неверная интеграция AI-бота с брокерским API приводит к повторным отправкам ордеров или их потере. В 2026 году при волатильности и двузначной ставке ЦБ (~16–18%) каждый такой сбой стоит реальных денег на счете. Разберем три типовых сценария и способы их предотвратить.

Автор: ~8 мин

Коротко:

Что такое idempotency key в контексте брокерского API?

Идентификатор, который бот ставит в каждый запрос на создание ордера. Брокерский API обязан запомнить ключ и отклонить повторную отправку с тем же ключом, возвращая статус первого ордера. Без него при повторной отправке (после таймаута, дропа соединения) AI-бот создаст дубликат заявки. Поддерживается большинством брокеров РФ с 2024–2025 годов, но не включен по умолчанию в старых библиотеках.

Источник: Налоговый кодекс РФ — ст. 224 НДФЛ на купоны

Почему AI-бот отправляет дублирующие ордера при разрыве соединения?

Бот ждет подтверждение от сервера. Если TCP-соединение прерывается, бот не знает, дошел ли запрос. Логика «retry» без проверки ответа отправляет ту же заявку снова. Рынок в этот момент может успеть измениться — получите две сделки вместо одной. Решение: использовать idempotency key или механизм «check status before retry».

Как выявить проблему дубляжа в логах AI-бота?

Ищите пары запросов с одинаковыми параметрами (тикер, объем, цена, сторона), разницей времени менее 1–2 секунд и разными идентификаторами ордеров в ответе. Нормально — если API вернул один и тот же ID для повторного запроса. Если ID разные — дубляж. Добавьте в логирование поле «idempotency_key» — без него причину сбоя не отследить.

Какие риски для портфеля при дубляже на срочном рынке РФ?

При дубляже рыночной заявки на фьючерсах Si, RTS вы получите удвоенный объем по цене, которая могла уйти на 0,5–1% за секунду. При плече 1:10 убыток по маржинальным требованиям умножается. Две одинаковые лимитные заявки на покупку облигаций ОФЗ создадут избыточную позицию, а поставка привязана к номиналу — придется перекладываться с комиссией и спредом.

Есть ли difference в поведении REST и WebSocket API брокеров в РФ?

REST — запрос-ответ: надежнее при правильном таймауте, но медленнее. WebSocket — push-уведомления: снижает нагрузку на API, риск дубляжа ниже, если подписка стабильна. Однако при дисконнекте WebSocket бот теряет статусы заявок без механизма восстановления. Рекомендация — гибрид: WebSocket для мониторинга статусов, REST для отправки ордеров с idempotency.

Источник: Налоговый кодекс РФ — ст. 224 НДФЛ на купоны

Что делать, если брокерский API не поддерживает idempotency key?

Компенсировать на стороне AI-бота: перед отправкой ордера делать запрос на получение статуса по уникальному внешнему ID (showOrder). Если ордер уже существует — не отправлять повторно. Альтернатива — временная блокировка отправки на 2–5 секунд для одного тикера. У большинства крупных брокеров РФ (БКС, Т-Инвестиции, ВТБ Мои Инвестиции) уже есть поддержка idempotency с 2025 года.

Источник: Документация API MOEX — стандарты идемпотентности

Что такое ghost exchange и чем он вреден?

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

Эксклюзив от ИнвестХомяка

Типовые сценарии сбоев AI-бота при интеграции с брокерским API

СитуацияПоследствиеКак выявить
Разрыв TCP-соединения при отправке рыночной заявкиДубляж при повторной отправке без ключа идемпотентностиПроверить лог — код ответа 504 versus 200, timestamp
Тайм-аут на получение подтверждения сделки (более 5 сек)Ордер не выставлен, сделка упущена из-за гэпаЛогировать время отправки и ответа, ставить таймаут > 5 сек
Ответ API «500 Internal Server Error» на запрос лимитной заявкиСоздание новой заявки вместо проверки статуса предыдущейВвести механизм статуса ордера по внешнему ID
Дублирование запроса из-за race condition (асинхронные вызовы)Две одинаковые лимитные заявки в одном тикереУстановить mutex на уровне приложения; включить idempotency key
Иллюстрация

Сравнение настроек AI-бота: с защитой от дубляжа и без

КритерийБез idempotencyС idempotency key
Повторная отправка ордера при таймаутеДубликат на биржеОтклонено API с возвратом статуса первого ордера
Логирование статуса заявкиНет, только успех/ошибка первого запросаПолный трек (отправлено, исполнено, отклонено с кодом)
Время распознавания ошибки дубляжаПосле фактического исполнения (через 1–5 секунд)На этапе повторной отправки (мгновенно)
Нагрузка на API брокераИзбыточная (2–5 повторов на один ордер)Нормативная (ровно одна отправка)
Риск ghost exchange (ордер на устаревшем терминале)ВысокийМинимальный (ключ блокирует повтор)

Как защитить AI-бота ИнвестХомяк от дубляжа и потери сделок: пошагово

  1. Включите idempotency key

    При каждом создании ордера генерируйте UUID и передаёте его в поле «idempotency_key». Проверьте документацию вашего брокера — метод для этого появился в API с 2025 года. Без этого шага все дальнейшие меры неэффективны.

  2. Настройте логирование всех запросов и ответов

    Записывайте timestamp, endpoint, тело запроса, HTTP-код и тело ответа. Храните логи не менее 30 дней. Это единственный способ доказать факт дубляжа брокеру или ЦБ при разбирательстве.

  3. Реализуйте механизм «проверки статуса перед retry»

    Если ответ не получен (таймаут, 5xx) — не отправляйте повторно. Вызовите метод получения статуса ордера (showOrder или statusPool) по тому же внешнему ID. Только после этого принимайте решение о повторной отправке с новым ключом.

  4. Установите блокировку на одновременную отправку в одном тикере

    Используйте mutex или семафор на уровне приложения для всех асинхронных вызовов, работающих с одним инструментом (Si, RTS, SBER). Race condition — частая причина дубляжа даже при idempotency, если ключ генерируется после проверки.

  5. Протестируйте на песочнице MOEX с эмуляцией сбоев

    Симулируйте разрыв соединения (отключение сети на 3 секунды), таймаут (выключите сервер), ответ 500. Проверьте, что бот не отправляет повторно, а дожидается статуса. Включите мониторинг алертов при росте числа retry выше нормы.

Иллюстрация

Частые вопросы

Что такое ghost exchange и чем он вреден?

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

Нужно ли менять код AI-бота для каждого брокера в РФ?

Да, так как реализация idempotency key и статусов ордеров отличается. Например, Т-Инвестиции используют заголовок x-Idempotency-Key, ВТБ — поле в теле запроса. Проще всего сделать абстрактный слой в коде с разными адаптерами под каждого брокера.

Как дубляж влияет на налоговый учёт для инвестора-физлица?

Две одинаковые сделки по купону или акции — это две отдельные записи в брокерском отчёте. При продаже вычтутся обе покупки, но средняя цена может увеличиться, а налоговая база — исказиться. При подаче 3-НДФЛ придётся корректировать вручную, если брокер не скорректирует дубли.

Покрывают ли брокеры убытки от дубляжа AI-бота?

Нет, если дубляж вызван ошибкой клиентского приложения (AI-бота). Ответственность за корректность интеграции лежит на пользователе. Исключение — если брокерский API вернул корректный idempotency ключ, но брокер исполнил повторно вопреки спецификации — тогда можно подавать жалобу в ЦБ.

Как часто происходит дубляж у ботов на проде — есть ли статистика?

По данным форумов (smart-lab.ru, vc.ru) и аудитам интеграций, опытные команды фиксируют дубляж в 0,3–0,8% всех отправок на рыночных заявках при использовании старых библиотек без idempotency. При WebSocket — ниже, до 0,1%, но с риском потери статуса.

Истории участников клуба

Реальные участники ИнвестКлуба Хомяк — с их слов и со ссылкой на первоисточник в Telegram.

Наталья А.в клубе 1,5 года

Точка входазашла пробно на 1 месяц после рекламы

Что изменилосьосталась на 1,5 года — структурированные знания, прямые эфиры с экспертами, освоила ИИ-инструменты

«Когда-то я зашла пробно, на 1 месяц. Прошло 1,5 года, а я по-прежнему там. Один только искусственный интеллект чего стоит.»
история в Telegram →
Олегв клубе полгода

Точка входавозрастной скепсис, долго не решался зайти в закрытый клуб

Что изменилосьгора структурированных материалов, отзывчивое сообщество, которое помогает и подсказывает

«Возрастной скепсис мешал зайти — думал, всё как обычно. Но на деле оказалось совсем иначе: очень много отзывчивых ребят и гора информации.»
история в Telegram →

Что говорят участники клуба

«В Хомяке уже полтора года… кайфовое, живое сообщество. Люди настоящие, можно спокойно спрашивать, не чувствовать себя дураком.»
Олеготзыв в Telegram →
«Зашла пробно на 1 месяц. Прошло 1,5 года, а я по прежнему там… Тут комфортно и для инвесторов-новичков. Вся информация отлично структурирована.»
Наталья А.отзыв в Telegram →

Ещё реальные отзывы участников — t.me/traderreviews

Иллюстрация

Источники

Ежедневные разборы рынка — в канале @tradernocryПодписаться →