Блог им. bcs

FIX ≠ DMA: три способа отправить заявку

FIX ≠ DMA: три способа отправить заявку

Содержание статьи

  1. FIX — протокол, а не способ подключения
  2. FIX к серверу брокера
  3. FIX Gate: прямой вход на срочный рынок
  4. MFIX: прямой вход на фондовый и валютный рынки
  5. Drop Copy: копия потока заявок на обоих рынках
  6. А при чем тут «самые быстрые» шлюзы
  7. Как понять, какой FIX нужен вам
  8. Можно ли перевести FIX-робота с брокера на биржу, не меняя код
  9. Что дальше

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

Разберем, чем они отличаются и как понять, какой из них нужен именно вам.

FIX — протокол, а не способ подключения

FIX (Financial Information eXchange) — протокол обмена сообщениями о заявках и сделках. Он описывает, как выглядит сообщение: какие поля в заявке, как приходит подтверждение, как передается информация об исполнении. Торговые системы по всему миру используют его как общий стандарт, поэтому многие платформы и готовые роботы «говорят» на FIX из коробки.

Чего протокол не описывает — это маршрута. Одно и то же FIX-сообщение может уйти на сервер брокера, а может сразу в торговое ядро биржи. От маршрута зависит все остальное: задержка, оформление, требования к вашему ПО и цена.

Поэтому вопрос «есть ли FIX» стоит переформулировать: куда вы хотите отправлять заявки по FIX? Вариантов три.

FIX к серверу брокера

Ваша платформа подключается по FIX к серверу QUIK брокера. Терминал при этом не нужен: робот работает с сервером программно, без запущенного QUIK и привязки к рабочему месту.

Маршрут заявки: робот → сервер QUIK брокера → торговая система брокера → биржа.

Это не DMA. Заявка проходит через ту же инфраструктуру, что и заявки из терминала, и потолок по скорости задает она. Зато и требований меньше: отдельная сеть не нужна, сертифицировать свое ПО на бирже тоже не нужно.

У БКС этот вариант реализован двумя модулями к QUIK:

  • FIX Connector — базовый вариант. До 10 счетов, одна FIX-сессия. Не поддерживает алгоритмические и OMS-заявки, РПС и репо, кроме безадресного с центральным контрагентом.
  • FIX Adapter — для тех, кому этого мало: добавляет алгоритмические заявки и OMS-заявки QUIK.

Кому подходит: у вас уже есть система, которая работает по FIX, нужно торговать с нескольких счетов по единым правилам, а скорость вторична. Главное здесь — совместимость: не переписывать то, что уже работает.

FIX Gate: прямой вход на срочный рынок

FIX Gate — шлюз Московской биржи на срочном рынке (торговая система SPECTRA), работает по FIX версии 4.4. Ваше ПО подключается к нему напрямую, минуя торговую систему брокера.

Маршрут заявки: робот → шлюз биржи → торговое ядро.

Это уже DMA, и вместе с ним приходят три обязательных элемента:

  • Свой логин на шлюзе. Его производительность заказывается в единицах: одна единица — 30 заявок в секунду.
  • Сертифицированное ПО. Транзакционные шлюзы принимают только программы, прошедшие сертификацию на бирже. Проходит ее владелец ПО: если это ваша разработка — вы, если готовое решение — обычно вендор.
  • Сеть до биржи. Здесь у FIX Gate выбор шире, чем у остальных транзакционных шлюзов. Кроме колокации и выделенных каналов, биржа допускает подключение через интернет с шифрованием или VPN. Среди транзакционных шлюзов это единственный такой вариант, у TWIME и MFIX его нет. Подойдет ли он вашей стратегии, зависит от ее требований к задержке.

Важная деталь: FIX Gate — шлюз транзакционный. Он принимает заявки и возвращает ответы по ним, но котировки и стакан не отдает. Рыночные данные подключаются отдельно — через FAST или более быструю SIMBA.

MFIX: прямой вход на фондовый и валютный рынки

MFIX — FIX-шлюз фондового и валютного рынков, которые работают на торговой системе ASTS. Проще всего описать его через сравнение с FIX Gate.

Что общего: FIX 4.4, прямое подключение к ядру биржи, свой логин, сертификация ПО, котировки и стакан подключаются отдельно.

Чем отличается:

  • Через интернет не подключиться — только колокация или выделенный канал.
  • Это не один сервис, а набор: торговый MFIX Trade, его версия с гарантией порядка заявок FIFO MFIX Trade, Trade Capture со сделками и Drop Copy с копией всех заявок и сделок.
  • Для доступа нужны статус квалифицированного инвестора и торгово-клиринговый счет. На срочном рынке этого не требуется.

Котировки к MFIX обычно подключают через FAST.

Drop Copy: копия потока заявок на обоих рынках

Drop Copy есть на обоих рынках. Это отдельная FIX-сессия, через которую приходят отчеты о заявках и сделках — не только ваших собственных, а в пределах заданного круга: по фирме, брокеру или набору счетов. Торговать через нее нельзя, она только для чтения.

На срочном рынке Drop Copy — отдельный сервис со своим FIX-логином, и он транслирует заявки и сделки, прошедшие через любой шлюз: FIX Gate, Plaza II и TWIME. То есть даже робот на бинарном TWIME может получать контрольную копию своего потока по FIX. На фондовом и валютном рынках Drop Copy входит в семейство MFIX.

Используют его для контроля: например, чтобы риск-менеджмент видел весь поток заявок независимо от торговых сессий и чтобы восстановить данные после обрыва. Скорость у него не главное: на фондовом рынке задержка в обычных условиях до 100 миллисекунд.

А при чем тут «самые быстрые» шлюзы

Иногда FIX вспоминают и в разговоре о самых быстрых шлюзах биржи — TWIME и FIFO TWIME. Формально они относятся к тому же семейству стандартов: TWIME построен на FIX Simple Binary Encoding (бинарное кодирование сообщений) и сессионном протоколе FIXP. Но это другой протокол со своей спецификацией. FIX Gate и MFIX обмениваются текстовыми сообщениями FIX 4.4, TWIME — бинарными, и сессия устроена иначе. Робот, написанный под FIX Gate, на TWIME без доработки не заработает.

Так что если вам нужна минимальная задержка, разговор уже не о FIX, а о TWIME и колокации.

Как понять, какой FIX нужен вам

Error: [31m The Parser function of type «table» is not defined. Define your custom parser functions as: [34mhttps://github.com/pavittarx/editorjs-html#extend-for-custom-blocks [0m

Можно ли перевести FIX-робота с брокера на биржу, не меняя код

Частично. FIX — общий стандарт, но каждый шлюз публикует свою спецификацию поверх него: какие сообщения и поля обязательны, как указывать инструмент и счет, какие дополнительные поля используются. В спецификации FIX Gate отличия от стандартного протокола прямо отмечены, и в ней есть собственные поля, которых нет у FIX-подключения к серверу QUIK. Поэтому при переходе:

  • остается FIX-движок робота — установка сессии, контроль нумерации сообщений, heartbeat — и вся торговая логика
  • переписывается слой, который собирает и разбирает сообщения: его нужно привести к спецификации FIX Gate
  • добавляется сертификация программы на бирже — без нее транзакционный логин не выдадут.

Как это выглядит на практике. Так устроена заявка New Order Single (тип сообщения D) для FIX Gate — поля взяты из спецификации биржи, значения условные, разделитель полей SOH для читаемости заменен на |:

8=FIX.4.4|9=…|35=D|49=<ваш логин>|56=<TargetCompID из спецификации>|34=215|52=20261001-07:15:03.120|11=ord-000215|1=A01|55=SiZ6|54=1|38=5|40=2|44=81250|59=0|60=20261001-07:15:03.120000000|10=…|
—

Большая часть здесь — стандартный FIX 4.4: 11 — идентификатор заявки, 54 — направление, 38 — количество, 44 — цена. Но есть и детали, которые задает именно биржа:

  • 40=2 — шлюз принимает только лимитные заявки
  • 1 (Account) — трехсимвольный код клиента, формат задан биржей
  • 55 (Symbol) — короткий код инструмента в формате биржи, например SiZ6
  • 59 (TimeInForce) — значение 0 означает котировочную заявку, которая остается в стакане после частичного исполнения, а для пассивных заявок есть нестандартное значение z (Book-or-cancel)
  • собственные поля с номерами от 20000: 20008 Flags, 20021 MatchRef, 20035 NccRequest, 20036 DisplayVarianceQty для айсбергов.

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

from dataclasses import dataclass

SOH = "\x01" @data classclass Order:

order_id: str
 instrument: str   # код инструмента в терминах робота
 side: str         # «buy» / «sell»
 qty: int
 price: float

 def fix_message(fields: list[tuple[int, str]], header: list[tuple[int, str]]) -> str:
""«Собирает FIX 4.4: считает BodyLength (9) и CheckSum (10).»""
 body = "".join(f"{tag}={val}{SOH}" for tag, val in header + fields)
 head = f«8=FIX.4.4{SOH}9={len(body.encode())}{SOH}»
 checksum = sum((head + body).encode()) % 256
 return f"{head}{body}10={checksum:03d}{SOH}"

 class FixGateAdapter: """
Всё, что специфично для FIX Gate, живёт здесь."""
 def __init__(self, sender: str, target: str, client_code: str):
 self.sender, self.target, self.client_code = sender, target, client_code
 self.seq = 0

 def new_order(self, o: Order, sending_time: str, transact_time: str) -> str:
 self.seq += 1 header = [(35, «D»), (49, self.sender), (56, self.target),
 (34, str(self.seq)), (52, sending_time)]
 fields = [(11, o.order_id), (1, self.client_code), (55, o.instrument),
 (54, «1» if o.side == «buy» else «2»), (38, str(o.qty)),
 (40, «2»),        # FIX Gate: только лимитные заявки
 (44, f"{o.price:g}"), (59, «0»), (60, transact_time)]
 return fix_message(fields, header)
—

При переходе на другой шлюз меняется только класс адаптера и настройки сессии, а торговая логика, которая создает Order, остается прежней. Готовый FIX-движок в реальном роботе все равно нужен: этот пример показывает разделение ответственности, а не заменяет библиотеку.

Объем доработки зависит от того, как написан робот. Если работа с конкретным шлюзом вынесена в отдельный модуль, переход сводится к новому модулю и сертификации. Если поля брокерского FIX разбросаны по всему коду, работы больше.

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
  • обсудить на форуме:
  • БКС
2.7К | ★1
#102 по плюсам

Читайте на SMART-LAB:
Фото
🥇 ДОМ.PФ — в топ-100 рейтинга Forbes
Вошли в число крупнейших компаний России по размеру чистой прибыли — 88,8 млрд рублей за 2025 год. Причём поднялись вверх сразу на 7 позиций за...
Фото
Итоги первичных размещений ВДО и некоторых розничных выпусков на 30 сентября 2026 г.
Следите за нашими новостями в удобном формате: Telegram , Youtube , RuTube, Smart-lab , ВКонтакте , Сайт ,...
Фото
Часть 5. Сектор акций, в котором инвесторы не потеряли деньги за 10 лет.
Продолжаю серию заметок на тему: «Какие бизнесы на Мосбирже смогли успешно „впитать“ инфляцию за 10 лет?».  Мы уже с вами посмотрели: Часть 1:...
Фото
РусГидро. МСФО 1Н 2026г. Отличный отчет, но проблемы не ушли…
Компания РусГидро опубликовала финансовые результаты за 1 полугодие 2026г. по МСФО: 👉Выручка — 387,2 млрд руб. (+18,9% г/г) 👉Субсидии —...

теги блога БКС Мир Инвестиций

....все тэги



UPDONW
Новый дизайн