Способы передачи финансовых данных #3: протокол Plaza II



    Помимо международных стандартов и протоколов передачи финансовой информации вроде FIX и FAST, о которых мы рассказывали ранее, на фондовом рынке функционируют и так называемые «нативные» протоколы передачи финансовых данных. Их используют для получения нужной информации как частные торговцы, так и брокерские компании — такие нативные протоколы более функциональны, чем общепринятые стандарты (вроде того же FIX), что привлекает брокеров.

    Существовавшие в России биржи ММВБ И РТС ныне объединившиеся в «Московскую биржу» также разработали собственные нативные протоколы. Сегодня мы поговорим о проекте протокола Plaza II, который был создан специалистами РТС.

    Инфраструктура Plaza II


    Для связи торговой системы биржи (она называется Spectra) и клиентского программного обеспечения используется так называемый шлюз Plaza II — специальный софт, который принимает и отправляет данные по соответствующему протоколу. Шлюз устанавливается на компьютер, который должен иметь подключение как к корпоративной сети биржи, так и к сети, где расположено клиентское приложение пользователя.



    Как правило трейдеры устанавливают свои сервера либо прямо в дата-центр биржи, либо размещают их в дата-центрах своих брокеров, которые связаны с биржей выделенными каналами связи — это позволяет сэкономить деньги (колокация в биржевом ЦОД стоит дорого), сохраняя высокий уровень скорости обмена данными.

    Шлюз SPECTRA Plaza-2 включает в себя две программные компоненты:

    • Модуль P2MQRouter, который обеспечивает установку TCP-соединений с серверами биржи, прием и отправку сообщений в формате Plaza II, шифрование информации, отправляемую участником, и дешифрацию информации, принимаемую от биржи, а также аутентификацию участника в сети биржи.
    • Библиотеку P2ClientGate, которую сторонние компании как раз и используют для создания софта для работы на фондовом рынке.

    Библиотека P2ClientGate существует в двух вариантах, поддерживающих разные потоковые модели COM: STA и MTA-модели.
    Помимо этого библиотека P2ClientGate выпускается для 32х разрядных и 64х разрядных систем Windows (аналогично для CGate).



    У биржи есть специальный документ, в котором подробно описаны требования к железу и софту для нормальной работы приложений. Например, если нам надо будет сохранять данные на диск, то требования будут звучать так: операционная память 4 Гб, SAS-контролер с режимом кеширования write-back, минимум 4 диска в RAID10 и т.д).

    Передача данных


    Основным способом распространения данных на платформе Plaza II является репликация — данные транслируется сервером клиентам в push-режиме (т.е. клиент не запрашивает изменения данных явно). Данные транслируются в виде последовательности изменений в реляционных таблицах, то есть потоков репликационных данных.

    Клиентский софт осуществляет подписку на нужные данные, основываясь на имени потока (на уровне потока задаются и права на доступ к конкретным данным).

    Поток может находиться в нескольких состояниях, включая получение снапшота (истории изменений данных), онлайн-режим (обновление данных в режиме real-time) и режиме ошибки (это значит, что по каким-либо причинам поток не может быть открыт).

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

    Каждая реплицируемая таблица имеет в своей структуре три первых поля фиксированного типа i8, предназначенных для обеспечения механизма репликации:

    • replID — уникальный идентификатор записи в таблице. При вставке в таблицу новой записи ей присваивается идентификатор.
    • replRev — уникальный номер изменения в таблице. При любом изменении в таблице (вставке, редактировании, удалении записи) затронутая запись получает значение replRev, равное максимальному replRev в таблице до изменения +1.
    • replAct — признак того, что запись удалена. При удалении записи на сервере в поле replAct заносится значение ее replID. Если replAct = 0 — запись активна (не удалена).


    Типы Plaza-II Строковое представление
    i1, i2, i4, i8 Знаковое целое
    u1, u2, u4, u8 Беззнаковое целое
    d, s Знаковое число с фиксированной точкой вида [знак]nnnn.mmmm
    t Дата и время в формате YYYY/MM/DD HH:NN:SS.XXX
    c Строка символов с нулем в конце
    a Односимвольная строка
    f Знаковое число с плавающей точкой вида [знак]dddd.dddd

    После осуществления согласования схем данных, клиентское приложение отсылает на сервер максимальные значения полей replRev для каждой таблицы. Начальная синхронизация заключается в передаче сервером клиенту всех данных с проверками («ревиженами»), большими чем те, что указал клиент.

    После начальной синхронизации поток переходит в режим онлайн (для всех таблиц максимальные ревижены клиента совпали с максимальными ревиженами сервера).

    Это означает, что данные в таблицах после получения уведомления StreamDataEnd и до получения следующего уведомления StreamDataBegin консистентны.

    Уведомления об изменении данных могут приходить только в промежутке между StreamDataBegin и StreamDataEnd и в этом промежутке данные в таблице не консистентны.

    Представление информации


    Все данные, проходящие через шлюз Plaza II, разделена на несколько логических групп:

    • Справочная информация — расписание и статус торговых сессий, справочники инструментов, облигаций, фирм и клиентов;
    • Торговая информация — агрегирование «стаканы» (транслируются несколькими потоками репликации), общерыночные показатели, журналы заявок и сделок пользователя (и торговой системы);
    • Информация для восстановления;
    • Информация о средствах и лимитах;
    • Клиринговая информация — расчетные цены клиринга, вариационная маржа, отчеты о поставке, средства клиентов по результатам клиринга;
    • Информация об индексах и курсах — текущие значения индексов РТС, значения курсов валют;
    • Вспомогательные информационные потоки — текущие значения волатильности и теоретические цены опционов, значения вариационной маржи.

    Для осуществления операций на рынках, работающих на торговой системе Spectra, система пользователя должна получать в режиме онлайн расписание сессий (session) и справочник инструментов (fut_sess_contents, opt_sess_contents).

    Потоки данных


    Рассмотрим конкретные потоки данных протокола Plaza II. Например, поток FORTS_FUTTRADE_REPL содержит информацию о заявках и сделках по фьючерсам на срочном рынке «Московской Биржи» (FORTS).
    Схема данных потока включает таблицы:
    • orders_log — журнал заявок;
    • deal — журнал сделок;
    • multileg_orders_log — журнал заявок по связкам;
    • multileg_deal — журнал сделок по связкам;
    • heartbeat — служебная таблица cерверных часов;
    • sys_events — таблица событий.

    Таблица orders_log выглядит следующим образом:

    Поле Тип Описание
    replID i8 Служебное поле подсистемы репликации
    replRev i8 Служебное поле подсистемы репликации
    replAct i8 Служебное поле подсистемы репликации
    id_deal i8 Номер сделки
    sess_id i4 Идентификатор торговой сессии
    isin_id i4 Уникальный числовой идентификатор инструмента
    price d16.5 Цена
    amount i4 Объем, кол-во единиц инструмента
    moment t Время заключения сделки
    code_sell c7 Код продавца
    code_buy c7 Код покупателя
    id_ord_sell i8 Номер заявки продавца
    ext_id_sell i4 Внешний номер из заявки продавца
    comment_sell c20 Комментарий из заявки продавца
    trust_sell i1 Признак ДУ (доверительного управления) из заявки продавца
    status_sell i4 Статус сделки со стороны продавца
    id_ord_buy i8 Номер заявки покупателя
    ext_id_buy i4 Внешний номер из заявки покупателя
    trust_buy i1 Признак ДУ (доверительного управления) из заявки покупателя
    status_buy i4 Статус сделки со стороны покупателя
    pos i4 Кол-во позиций по инструменту на рынке после сделки
    nosystem i1 Признак внесистемной сделки
    hedge_sell i1 Признак хеджевой сделки со стороны продавца
    hedge_buy i1 Признак хеджевой сделки со стороны покупателя
    login_sell c20 Логин пользователя продавца
    login_buy c20 Логин пользователя покупателя
    code_rts_buy c7 Код РТС покупателя
    code_rts_sell c7 Код РТС продавца
    free_sell d26.2 Сбор по сделке продавца
    free_buy d26.2 Сбор по сделке покупателя
    id_deal_multileg i8 Номер сделки по связке

    Существуют и другие потоки данных:

    • FORTS_FUTTRADE_REPL — фьючерсы: заявки и сделки;
    • FORTS_OPTTRADE_REPL — опционы: заявки и сделки;
    • FORTS_ORDLOG_REPL — поток анонимных заявок;
    • FORTS_DEALS_REPL — поток анонимных сделок;
    • FORTS_FUTORDERBOOK_REPL — фьючерсы: срез стакана;
    • FORTS_OPTORDERBOOK_REPL — опционы: срез стакана;
    • FORTS_FUTCOMMON_REPL — фьючерсы: общая информация;
    • FORTS_OPTCOMMON_REPL — опционы: общаяинформация.

    Также клиент может подисываться на получение данных из потоков агрегированных стаканов:
    • FORTS_POS_REPL — информация о позициях;
    • FORTS_PART_REPL — информация о средствах и лимитах;
    • FORTS_FUTINFO_REPL — фьючерсы: справочная и сессионная информация;
    • FORTS_OPTINFO_REPL — опционы: справочная и сессионная информация;
    • FORTS_MISCINFO_REPL — дополнительная справочная информация;
    • RTS_INDEX_REPL — биржевые индексы;
    • RTS_INDEXLOG_REPL — история значений индексов;
    • FORTS_VM_REPL — вариационная маржа;
    • FORTS_VOLAT_REPL — волатильность;
    • FORTS_INFO_REPL — дополнительная справочная информация;
    • FORTS_TNPENALTY_REPL — информация о сборах затранзакции;
    • MOEX_RATES_REPL — курсы валют в режиме онлайн.

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

    С помощью протокола Plaza II осуществляется не только прием информации, но и передаются команды для совершения операций на фондовом рынке. Например, добавление заявки осуществляется с помощью специального метода (FutAddOrder), который представлен отдельной таблицей (для библиотеки CGate названия таблиц могут отличаться).

    Таблица для результата выполнения действия выглядит так:

    Имя параметра Тип Значение по умолчанию Описание
    code i4 Код возврата
    message c255 Текст сообщения
    order_id i8 Код заявки в системе

    Успех операции описывается кодом 0, любое другое значение говорит об ошибке. Аналогичным образом осуществляется удаление заявки или перемещение заявок.

    Работа с Plaza II


    С помощью протокола Plaza II можно по-разному работать с биржей: например, существует просмотровый режим, который используется только для получения данных, но не совершения операций с ценными бумагами. Чтобы работать в системе в разных режимах используются специальные логины разных типов.

    Подключиться к торгам по этому нативному протоколу можно через брокеров, чьи системы сертифицированы биржей (ITinvest входит в этот список).

    Другие протоколы


    Помимо протокола Plaza II, который был разработан сотрудниками биржи РТС, существует протокол для работы, созданный на бирже ММВБ (как сказано выше, впоследствии две эти площадки объединились в «Московскую биржу»). Для выполнения торговых операций и получения биржевых данных на валютном и фондовом рынке, используется двунаправленный шлюз ASTS Bridge (TEAP) — речь о нем пойдет в одном из наших следующих материалов. Кроме того, мы расскажем о протоколе Simple Binary Encoding, который, в определенной степени, является продолжателем дела FIX.

    На сегодня все, спасибо за внимание, будем рады ответить на вопросы в комментариях.

    P. S. Если вы заметили опечатку или ошибку — напишите личным сообщением, и мы оперативно все исправим.
    • +9
    • 10,9k
    • 2
    ITI Capital 151,88
    Лучший онлайн-брокер для работы на бирже
    Поделиться публикацией
    Комментарии 2
    • 0
      А про Teap будете писать?
      • 0
        Да, в ближайшее время подготовим такой материал

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое