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

в 8:26, , рубрики: fast, FIX, Plaza II, TEAP, Блог компании ITinvest, ит-инфраструктура, прямой доступ на биржу, разработка, фондовый рынок

image

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

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

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

image

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

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

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

Библиотека P2ClientGate существует в двух вариантах, поддерживающих разные потоковые модели COM: STA и MTA-модели.

Помимо этого библиотека P2ClientGate выпускается для 32х разрядных и 64х разрядных систем Windows (аналогично для CGate).

image

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

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

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

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

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

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

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

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

image

После осуществления согласования схем данных, клиентское приложение отсылает на сервер максимальные значения полей 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 выглядит следующим образом:

image

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

  • 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 названия таблиц могут отличаться):

image

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

image

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

Аналогичным образом осуществляется удаление заявки или перемещение заявок.

Работа с Plaza II

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

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

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

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

P. S. Если вы заметили опечатку или ошибку — напишите личным сообщением, и мы оперативно все исправим.

Автор: IT_invest

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js