VIZANIXРазработка торгового ПО
Архитектура ботовАрхитектура6 мин чтения

Как добавить вторую биржу, не переписывая первую

Мультибиржевость — это не про поддержку большего числа площадок. Это про то, чтобы в коде было ровно одно место, знающее, чем именно странна конкретная площадка.

Инженеры Vizanix · об авторе

МАТЕРИАЛ
6 минвремя чтения
РАЗДЕЛ
Архитектура ботов
ОПУБЛИКОВАНО
2026-08-31
ГЛАВ
5
ЧИТАТЬ ДАЛЬШЕ
3
ЯЗЫК
написано на русском
Инженерный разбор, а не пересказ документации.
ADAPTERSNORMALISATIONSYMBOLSSHARED RISK

Запрос обычно приходит как «а Binance он тоже сможет?», и ответ полностью зависит от решения, принятого месяцами раньше: было ли поведение, специфичное для площадки, изолировано или размазано по коду.

Граница адаптера

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

python
class Venue(Protocol):
    async def instruments(self) -> list[Instrument]: ...
    async def place(self, order: Order) -> OrderAck: ...
    async def cancel(self, order_id: str) -> None: ...
    async def positions(self) -> list[Position]: ...
    async def subscribe(self, topics: list[Topic]) -> AsyncIterator[Event]: ...

# Всё выше этой линии не зависит от площадки.
# Всё ниже знает причуды ровно одной площадки и больше ничего.

Проверка, настоящая ли граница: можете ли вы написать тест стратегии, использующий фиктивную площадку и не импортирующий ничего биржеспецифичного? Если нет, абстракция протекает, и вторая биржа обернётся переписыванием.

Что на самом деле различается между площадками

АспектКак варьируется
Именование символовBTCUSDT, BTC-USDT, BTC/USDT, XBTUSD
Единицы количестваБазовая валюта, контракты или номинал
Модель позицииOne-way, hedge mode или оба с разными флагами
Типы ордеровReduce-only, post-only, conditional — различаются поддержка и семантика
Лимиты запросовДругие оси, другие окна, другие заголовки
Правила точностиШаг цены и лота и то, где применяется округление
Коды ошибокСовершенно разные пространства с пересекающимися смыслами
ВремяМиллисекунды, микросекунды и разная дисциплина часов

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

Реестр инструментов оправдывает своё место

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

Обновляйте по расписанию. Площадки меняют лотность и добавляют инструменты, а реестр, закэшированный в момент деплоя, со временем начинает ставить ордера, отклоняемые по причинам, которые никто не может воспроизвести.

Риск общий, иначе это не риск

Важнейшее следствие мультибиржевости не техническое. Если у каждой площадки свой учёт риска, то бот, у которого лонг BTC на одной бирже и лонг BTC на другой, считает, что держит две независимые позиции.

Он держит одну. Экспозиция, лимиты просадки и группы корреляции должны считаться по всей книге, в одной валюте, на один момент. Это тот же аргумент, что в риск-движке, и мультибиржевость — то место, где он перестаёт быть теоретическим.

Чего не надо строить

  • Универсальный тип ордера. Поддерживайте реально существующее пересечение. Синтетический тип, эмулируемый по-разному на каждой площадке, — источник сюрпризов.
  • Межбиржевой неттинг, которого биржи не делают. Ваша модель должна совпадать с тем, что площадки реально рассчитывают, а не с тем, что было бы удобно.
  • Агрегированные стаканы, если они вам не нужны. Объединённый стакан по площадкам с разными комиссиями, задержками и расчётами — это не стакан, против которого можно торговать.
  • Абстракцию площадок до появления второй площадки. Постройте первую чисто, с границей на месте. Обобщайте, когда есть два реальных случая, а не один воображаемый.

Последний пункт практический. Хорошо структурированная одноплощадочная система расширяется за дни. Преждевременно обобщённая расширяется неделями и содержит догадки о площадке, которую ещё никто не интегрировал.

Статья описывает инженерную практику. Это не инвестиционная рекомендация. Vizanix разрабатывает программное обеспечение и не обещает торговую доходность.

Блог

Читать дальше

Хотите такое у себя?

Мы пишем о том, что строим. Если нужно построить — напишите, разбор бесплатный.

Бриф

Получить оценку проекта

Четыре вопроса и контакт. Предоплата для разговора не нужна — если задача не наша, скажем сразу.

01Что вам нужно
02Биржа
03Рынок
04Стратегия
05Контакты

Проще написать напрямую? Telegram @vx_ceo

Обсудить систему