Торговый бот для биржи Bybit и мониторинг P2P в Telegram
Небольшая торговая команда работала через интерфейс биржи и вручную отслеживала P2P-объявления и собственные позиции в нескольких вкладках. Мы построили систему, которая исполняет ордера на Bybit по команде из Telegram или по заданным правилам, следит за состоянием открытых позиций и P2P-рынком и сообщает об изменениях в тот же чат.
- Период
- 2026
Имя заказчика не раскрывается. Отрасль, масштаб и цифры остаются те же.
Что изменилось
- Вкладки → чат
- Где команда работает со сделкамидо проекта ордера выставляли в интерфейсе биржи, а P2P и позиции смотрели в отдельных вкладках; после сделка открывается и состояние читается из Telegram
- 2
- Режима открытия сделкипо команде человека из Telegram и автоматически по заданным правилам: оба режима идут через один и тот же путь исполнения, а не через две независимые реализации
- 0
- Ключей биржи в открытом видеключи API хранятся зашифрованными на сервере заказчика; у нас доступа к ним нет, инфраструктура принадлежит команде
- Своя стратегия
- Чьи правила исполняет систематорговые правила задаёт и меняет команда; мы построили исполнение и наблюдение, а решения о сделках остаются за заказчиком
У каждой величины указано, с чем сравнивали и за какой период.
Что было не так
Команда работала руками через интерфейс биржи. Это значит: увидеть ситуацию, переключиться на вкладку, выставить ордер, проверить, что он прошёл. Каждый шаг занимает секунды, и на спокойном рынке это несущественно. Проблема в том, что именно тогда, когда действовать нужно быстрее всего, эти секунды и стоят дороже всего.
Параллельно шло наблюдение за P2P. Объявления, курсы, разница цен, всё это смотрели глазами, в отдельных вкладках, обновляя вручную. Человек, который следит за рынком, не может смотреть на него непрерывно: он отвлекается, спит, занимается другой сделкой.
Своими открытыми позициями следили так же. Что сейчас открыто, в каком состоянии, что изменилось с утра: ответ собирался переключением между экранами, и у разных людей в команде он мог быть разным, потому что смотрели в разное время.
Отдельная трудность: команда небольшая, до десяти человек, и у неё нет и не должно быть отдельного дежурного, который целый день смотрит в графики вместо работы.
Именно тогда, когда действовать нужно быстрее всего, переключение между вкладками и стоит дороже всего.
Что мы построили
Систему, которая стоит между командой и биржей. С одной стороны у неё Telegram, где работают люди, с другой стороны API Bybit, где исполняются сделки.
Сделку можно открыть двумя путями. Первый: человек даёт команду из чата, и система выставляет ордер на бирже. Второй: система делает это сама, когда выполнились заданные командой условия. Второй путь нужен не вместо человека, а для моментов, когда человека нет на месте: правила работают ночью и в выходные.
Мониторинг закрывает вторую половину задачи. Система следит за P2P-рынком и за собственными открытыми позициями команды и сообщает об изменениях в тот же чат: что открылось, что закрылось, что изменилось на рынке. Наблюдение перестало требовать, чтобы кто-то смотрел.
Важная деталь устройства: оба режима открытия сделки идут через один и тот же путь исполнения. Ручная команда и автоматическое правило приводят к одному и тому же коду, который разговаривает с биржей.
Правила работают ночью и в выходные: автоматический режим нужен не вместо человека, а для моментов, когда человека нет на месте.
Что происходит, когда биржа не отвечает
Биржевое API это внешняя система, и она бывает недоступна, отвечает с задержкой или ограничивает частоту обращений. В обычной интеграции это неприятность, которую переживают повтором через минуту. В торговой нет: повторно отправленный ордер, который на самом деле уже исполнился, это вторая сделка вместо одной.
Поэтому повтор здесь устроен не как «отправить ещё раз». Прежде чем повторять, система выясняет, чем закончилась предыдущая попытка: прошёл ордер или нет. Ответ берётся у биржи, а не предполагается по тому, дошёл ли до нас её ответ. Отсутствие ответа означает, что мы не знаем результат, а не что результата не было.
Ограничения на частоту обращений система соблюдает сама, выдерживая темп запросов, а не упираясь в лимит и получая отказ в момент, когда нужно действовать.
Состояние позиций система тоже не держит на веру. То, что она показывает команде, сверяется с тем, что говорит биржа: расхождение между своим представлением и действительностью это ровно та ошибка, которая обходится дороже всего.
Отсутствие ответа означает, что мы не знаем результат, а не что результата не было.
Ключи от биржи и где проходит наша граница
Ключи API от биржи это доступ к деньгам команды, и обращение с ними определялось до первой строки кода. Ключи хранятся зашифрованными на сервере заказчика. Инфраструктура принадлежит команде, и доступа к ключам у нас нет ни во время работы, ни после сдачи.
Это не формальность и не пункт договора для спокойствия. Подрядчик, у которого есть ключи от биржевого счёта, это риск, который не закрывается доверием и репутацией: он закрывается тем, что ключей у подрядчика нет.
Вторая граница содержательная. Мы построили исполнение и наблюдение: как ордер доходит до биржи, что делать при сбое, как показать состояние. Торговые правила, то есть что покупать, когда входить и когда выходить, задаёт команда. Они меняются, и меняет их заказчик, а не мы релизом.
Из этого следует и то, чего в кейсе нет. Мы не утверждаем, что торговля стала прибыльнее: это результат стратегии команды, а не инструмента, и приписывать его себе было бы неправдой.
Подрядчик с ключами от биржевого счёта это риск, который закрывается не доверием, а тем, что ключей у подрядчика нет.
Что это дало
Работа со сделками переехала туда, где команда и так находится. Открыть позицию, посмотреть состояние, узнать об изменении, всё это происходит в Telegram, а не в переключении между вкладками биржи и P2P-раздела.
Наблюдение перестало быть чьей-то обязанностью. За рынком и позициями следит система, а люди получают сообщение, когда что-то изменилось, а не сидят перед графиком, чтобы не пропустить.
У команды из десяти человек появилась общая картина вместо нескольких частных: что открыто и в каком состоянии, видно всем одинаково и в один момент времени.
И часть сценариев перестала зависеть от того, есть ли кто-то за компьютером: заданные правила отрабатывают в любое время суток.
На чём построено
Технологии проекта взяты из общего реестра компании: у каждой описана роль и класс задач, где мы её применяли.
Серверная часть
- PythonВторой серверный язык: данные и ИИ
- FastAPIВеб-слой для Python-сервисов
Данные
- PostgreSQLОсновная база данных
- RedisКеш, сессии и очереди
Интеграции
- API криптобиржОрдера, котировки и состояние позиций
- Telegram Bot APIБоты и мини-приложения
- REST, gRPC, GraphQL, SOAPСтандартные протоколы обмена
Инфраструктура
- DockerУпаковка сервисов в контейнеры
- LinuxСерверная операционная система
Что применяли в проекте
Каждая услуга это отдельный раздел с составом работ и ориентиром по стоимости.
У вас похожая задача?
Первый разговор ни к чему не обязывает: разберём вашу ситуацию и скажем, нужен ли вам такой проект вообще.
Другие проекты
- Корпоративная сеть и разграничение доступа сотрудников в офисе финансовой компанииСеть офиса разделена на сегменты, у каждого сотрудника своя учётная запись, а отдел видит только свои данные
- Личный кабинет клиента и бонусная программа для сети салонов красотыКлиент записывается сам в кабинете или в Telegram-боте, видит историю визитов и баланс бонусов, копит их за визиты и за приведённых друзей и тратит при оплате
- ИИ-обработка входящих заявок: ответы клиентам в Telegram, почте и на сайтеСистема собирает обращения из трёх каналов, отвечает на них сама по материалам заказчика и передаёт человеку то, что должен решать человек