Московская Биржа corporate blog
Development of communication systems
29 June 2015

Протоколы передачи финансовых данных. Инструкция по применению

Написано множество статей и «гидов» о том, как стать трейдером и начать торговать на Бирже. Алготрейдинг, роботы, опционные стратегии – эти термины слышали многие. К сожалению, в большинстве таких «roadmap» забывают предупредить о технической стороне вопроса, с которой многим предстоит столкнуться – выбор торговой стратегии и соответствующего протокола передачи данных.


КЕМ БЫТЬ?
Для начала определяемся с выбором направления в торговле и оцениваем свои технические навыки.
Существуют 4 основных вида торговли:
  1. Ручная торговля (долгосрочные инвестиции/мало сделок). Здесь используется «клиент» брокерской системы. Это не требует практически никаких специальных знаний и больших затрат.
  2. Алгоритмическая торговля со стратегией, не требующей высокоскоростных подключений. Этот вид торговли предполагает использование средств автоматизации от брокера. Они обойдутся дешевле по деньгам, и к тому же не требуют особых навыков.
  3. Алгоритмическая торговля с высокоскоростной стратегией. Этот вид торговли предусматривает самописный робот поверх шлюзов биржи (через инфраструктуру брокера, либо через удаленное подключение напрямую к серверам биржи). Такой вариант дороже по деньгам, чем первые два, и требует навыков программирования.
  4. HFT трейдинг. Этот вид торговли предусматривает колокацию, либо собственную разработку поверх шлюзов биржи. Достаточно дорогостоящий вариант, аналогично третьему.


1 и 2 ВИДЫ
По первому и второму видам торговли вы будете взаимодействовать только с брокером и использовать тот софт, который он предоставляет (поэтому на данный критерий стоит обратить особое внимание при выборе брокерской компании). При выборе этих видов, решения, разработанные самой Биржей, вам будут недоступны.
Предоставленное брокером ПО (клиентское место для брокерской системы, система технического анализа и т.п.) устанавливается на ваш ПК или мобильное устройство, а подключение (как правило, через Интернет) выполняется к серверам брокера.
Также во втором виде некоторые брокеры, помимо стандартного клиентского софта, могут давать возможность подключения через программный интерфейс (API) своих систем с целью разработки клиентом собственного ПО для торговли.

3 И 4 ВИДЫ
Здесь клиенты используют прямые протоколы, предоставляемые биржей. В плане технологий и протоколов эти виды торговли не отличаются друг от друга, кроме как местом расположения серверов, программных компонентов и каналами подключения. Важно учитывать поддержку брокерами способов подключения в целом и конкретных биржевых протоколов, в частности.

Немного о способах подключения. Как выглядит топология расположения программных компонентов при использовании самой популярной «Универсальной схемы» подключения? В офисе/дата-центре брокерской компании размещается маршрутизатор, подключенный к биржевой инфраструктуре по выделенному каналу через L3 оператора связи. На этом маршрутизаторе организуется три VLANa: DMZ (является DMZ-сегментом торговой сети биржи), CLT (сеть для клиентского ПО), TST (сегмент для доступа к тестовым биржевым сервисам-не так важен в данном контексте, поэтому не изображен на схеме). Иконка с подписью «ВПТС» — это и есть разработанная вами система. Аббревиатура расшифровывается как «внешнее программно-техническое средство» – это наш официальный термин для обозначения любого софта, подключающегося к биржевой инфраструктуре. Подробнее про Универсальное подключение смотрите Схему 1.
Схема 1.
image

В отличие от подключения по Универсальной схеме, схема размещения сервера с роботом на колокации гораздо проще:
Схема 2.
image

Проще говоря, всё что нужно сделать (не считая «бумажной работы» :) ) – это разместить сервер в биржевом дата-центре (сейчас это дата-центр М1 на Варшавке, но полным ходом идёт переезд в ЦОД DataSpace на Дубровке, который станет основным). Одним сетевым интерфейсом сервер смотрит на специально выделенный для скоростных роботов пул наших серверов доступа, а вторым интерфейсом – в Интернет – это так называемый управляющий канал, предназначенный для обслуживания робота.
Это было небольшое отступление в сторону «железно-сетевой» истории, а теперь, о главном…

ПРОТОКОЛЫ ПЕРЕДАЧИ ФИНАНСОВЫХ ДАННЫХ
Определились с видом торговли и подключением? Теперь выбираем подходящий протокол передачи финансовой информации.
В настоящий момент биржа предлагает для разработчиков следующие протоколы прямого доступа к биржевым рынкам:

Протокол Рынки Доступные возможности
ASTS Bridge Фондовый, Валютный Торговля+получение всех рыночных данных. 100% поддержка всех операций.
Plaza II Срочный Торговля+получение всех рыночных данных. 100% поддержка всех операций.
FIX Фондовый, Валютный, Cрочный, ОТС Торговые операции в основных режимах торгов (без поддержки переговорных сделок), Trade Capture (только фондовый и валютный), Drop Copy
FAST Фондовый, Валютный, Срочный Получение анонимных рыночных данных.
Информационно-статистический сервер (ИСС) Все Получение анонимных рыночных данных через веб-сервисы биржи.


ASTS Bridge
Сразу проясним небольшую терминологическую путаницу в названиях и переводах: биржевой шлюз – это Bridge. Gateway, который тоже очень хочется перевести как шлюз – это уже другая история (см.нашу первую публикацию на Хабре). Его мы называем сервером доступа.
Шлюз — это нативный протокол торгово-клиринговой системы ASTS, существующий с 1998 года (ранее решение именовалось TEAP (TCP/IP версия) или TEServer (RS-232 версия, более не поддерживаемая). Многим разработчикам протокол известен под именем MTESRL, по названию соответствующей DLL. В силу «нативности» этого протокола его основная особенность – это поддержка всех транзакций и всех рыночных данных со всех рынков, работающих на торгово-клиринговой системе ASTS.
Использование данного протокола рекомендуется, в первую очередь, тем, кому необходим доступ к клиринговым данным и операциям (просмотр своих позиций, обязательств, риск-параметров, установка разного рода лимитов, перевод бумаг и денег между счетами и т.п.), а также участие в торгах в режимах переговорных сделок (то есть не «быстрые» анонимные торги в «стакане», а прямое заключение сделок с конкретным контрагентом).
API предоставляется в виде динамической библиотеки – в 32- и 64-битных версиях для Windows и Linux.
Архитектура подключения выглядит следующим образом: динамическая библиотека попадает в пакет разработанного вами софта, этот пакет устанавливается на ПК/сервер, имеющий сетевой доступ к так называемой серверной части шлюза. Серверная часть – это своего рода прокси-сервер, который находится у брокера и подключен к биржевой инфраструктуре по выделенным сетевым каналам.
В случае же упомянутого выше HFT-трейдинга, когда ваш софт установлен в дата-центре биржи на условиях колокации, промежуточное звено в виде серверной части шлюза уже не требуется – вы подключаетесь напрямую на биржевые Gateway’и.
Интересной особенностью шлюзового протокола является поддержка «интерфейсов». Интерфейс – это имеющий версию набор доступных пользователю таблиц и транзакций, с соответствующей структурой и типами данных. Практически при каждом обновлении торгово-клиринговой системы появляются новые возможности для пользователей, которые требуют модификации структуры таблиц или изменения формата транзакций. Наличие версионированных интерфейсов позволяет пользователям, не готовым к изменениям, остаться на старой версии интерфейса и не дорабатывать свой софт. На текущий момент мы поддерживаем возможность подключения всеми версиями интерфейсов, созданными за все прошедшие годы (десятилетия!), но в следующем году планируем стать строже – см. ниже.

Plaza II
Основным протоколом подключения к срочному рынку на текущий момент является протокол Plaza II.
Для подключения по этому протоколу биржа предоставляет API CGate. Что это дает? С одной стороны, это позволяет участникам торгов реализовать полноценный функционал для доступа к торгам, включая клиринговую функциональность по лимитированию разделов, установок ограничений по инструментам и просмотру обязательств маркет-мейкера. С другой стороны, это позволяет клиентам участников торгов реализовывать собственных высокоскоростных роботов с минимальным набором функций (поставить заявку/снять заявку).
API предоставляется в виде набора динамических библиотек – в 32- и 64-битных версиях для Windows и Linux.

Архитектура подключения предусматривает две опции:
  1. Ваш ВПТС, установленный на вашем ПК/сервере, подключается на серверы брокера и попадает в инфраструктуру биржи через сервер брокера.
  2. Ваш ВПТС напрямую (используя интернет/выделенные каналы связи или доступ из зоны колокации) попадает на публичные серверы биржи и работает непосредственно с биржей, минуя инфраструктуру брокера.


Практически с каждым релизом срочного рынка биржа вносит изменения и улучшения в свой собственный программный код, который передается клиентам в виде API. Для пользователя это выглядит как новый дистрибутив с новыми версиями библиотек внутри. Помимо самого кода, периодически вместе с релизом меняется и структура отдаваемых пользователям данных. Разумеется, мы почти во всех случаях старается сохранить обратную совместимость структуры данных и дать пользователям достаточное количество времени на адаптацию к новым структурам.

FIX и FAST
Это стандартные международные протоколы обмена данными. На просторах Рунета и на Хабре, в частности, про них есть масса информации, поэтому не будем перегружать ими наш краткий обзор. Всем желающие могут прочитать их тут и, например, тут.

Кто быстрее?
Один из самых популярных вопросов в нашу службу поддержки: кто быстрее — FIX/FAST или нативный протокол. Чаще всего его задают создатели «роботов». О скоростях и задержках в передаче данных можно говорить много и долго, – это тема для целой статьи (берем на заметку!). Поэтому пока ограничимся статистикой. Статистика, полученная в результате замеров, говорит о том, что на валютном рынке за первые полтора года существования протокола FIX его доля по числу заявок выросла до 92%, за последующие два года – превысила 99%. На фондовом рынке доля заявок, полученных через FIX достигает 60%, но это объясняется другим составом и числом инвесторов. В зоне колокации практически все системы используют FIX/FAST.
Немного иная ситуация на срочном рынке: FIX тут пользуется меньшей популярностью. В силу его архитектурного расположения в системе его скорость слегка уступает скорости нативного протокола, но мы ведем работу по улучшению его характеристик по latency.

ИСС
Не путать с «ИИС»! :) Этот протокол несколько выбивается из общего ряда, так как охватывает сегмент задач, связанных не с осуществлением сделок, а с работой с биржевыми данными. По сути, это API к веб-сервисам биржи, реализованный по концепции Restful. Он даёт возможность получения общей рыночной информации — котировки, сделки, индексы, объёмы, итоги торгов и так далее- по протоколу http/https. Сервис доступен только через Интернет, поэтому минимизация задержек в получении данных к нему не применима.
Используется этот протокол для показа биржевых котировок на сайтах (в том числе, все данные на сайте moex.com транслируются именно оттуда), загрузки итогов торгов для аналитики, отрисовки графиков на различных демо-панелях и табло, да и в любых других работающих через Интернет приложениях. Также из числа доступных всем пользователям продуктов через ИСС работает наш информационный терминал MOEX Trade Info и мобильные приложения (пользуясь случаем, хотим сказать всем пользователям наших приложений под iOS/Android, что да, мы знаем, что текущие версии этих приложений уже безнадёжно морально устарели :) но мы работаем над полностью новыми версиями, с учётом всех ваших пожеланий).

«Old school»: среди существующих протоколов подключения есть такие, которые постепенно становятся историей. К примеру, библиотека Client gate, которая раньше позволяла подключиться к Срочному рынку. К концу следующего года она будет выведена из эксплуатации и разработка систем под неё уже не производится.

Политика поддержки интерфейсов
Сейчас на Бирже реализуется проект по переходу на 2-х годичный жизненный цикл поддержки ПО и соответствующих биржевых интерфейсов. Подробнее об этом есть информация на нашем сайте.

Как разрабатывать и тестировать свой софт
Информация по биржевым протоколам, а также предоставление всего сопутствующего биржевого софта в целях разработки, открыты, бесплатны и доступны всем желающим. Описание основных протоколов можно найти на нашем сайте, а более конкретную техническую документацию на ФТП.
Для целей тестирования доступен ряд круглосуточно работающих тестовых систем и техническая поддержка на help@moex.com, работающая с 8:00 до 24:00.
По завершении разработки, чтобы ваша система была допущена к «боевому» подключению, необходимо пройти процесс сертификации. Заключается он в подключении к тестовой системе со включенным логированием и выполнении некоторых типовых операций. В процессе этого тестового прогона сотрудники тех.поддержки проверяют корректность реализации работы с API (исходные коды и ваш софт мы не смотрим, всё только на основе логов).

+7
14.6k 73
Comments 9