Cпособы передачи финансовых данных: протокол FIX

imageФондовый рынок является высокотехнологичной отраслью — помимо физической ИТ-инфраструктуры и технологичных торговых роботов игроки этого рынка занимаются развитием технических стандартов протоколов передачи данных. Сегодняшним материалом мы открываем серию топиков о протоколах передачи финансовой информаци. В первом выпуске представлена информация об одном из старейших протоколов — Financial Information eXchange или сокращенно FIX.

Немного историиСоздание протокола FIX было инициировано рядом финансовых организаций США в 1992 году — брокеры и инвестфонды хотели ускорить процесс осуществления торговых операций на бирже. В то время значительная часть торговых операций совершалась с помощью телефона, а протокол FIX позволил перевести взаимодействия в электронный вид.В результате родился открытый стандарт передачи информации в электронном виде, который не контролирует ни одна из крупных организаций. Сегодня FIX стал отраслевым стандартом, который используется участниками финансового рынка разных стран для связи своих продуктов.

Как это работает В настоящий момент протокол определен на двух уровнях — сессии (работа над доставкой данных) и приложения (описание содержимого данных). Существует два варианта синтаксиса протокола — традиционный, вида Tag=Value и в формате XML (FIXML). Рассмотрим каждый из них.Синтаксис Tag Value Сообщения протокола FIX обычно содержат заголовок и, собственно, тело сообщения. Каждое сообщение представляет собой поток полей =, отделенных друг от друга специальными символами — в спецификации FIX для разделения данных использован ASCII-символ SOH (#001, 0×01).Теги содержат данные в формате TagNum, а поле тега не может быть пустым (кроме того, значение должно быть положительным и не начинаться с нулей). Сообщение с пустым полем Tag будет отклонено.

Тело сообщения обычно состоит из заголовка, тела сообщения и завершающего элемента (трейлера). Первым полем сообщения всегда является обозначение начала строки (BeginString, тег #8), затем указывается длина тела сообщения (BodyLength тег #9) и тип сообщения (MsgType, тег #35). Последним символом трейлера всегда является контрольная сумма (тег #10).

Часто сообщения содержат, как зашифрованную часть, так и символы, переданные в текстовом виде — данная схема обычно используется для валидации и верификации данных. Например, передача зашифрованного значения SenderCompID, указывающего на отправителя, является устаревшим способом валидации.

Для обеспечения большей гибкости FIX протокол содержит так называемые пользовательские поля — User Defined Fields. Они используются при передачи данных между сотрудничающими финансовыми организациями. Номера тегов с 5000 до 9999 были зарезервированы под пользовательские поля — зарезервировать их можно было на официальном сайте стандарта. В дальнейшем эти номера были израсходованы, поэтому был выделен новый интервал — с 20000 до 39999.

Сообщения в формате Tag Value выглядят следующим образом (символ ^ — это разделитель SOH):

8=FIX.4.2^9=251^35=D^49=AFUNDMGR^56=ABROKER^34=2^52=20030615–01:14:49^11=12345^ 1=111111^63=0^64=20030621^21=3^110=1000^111=50000^ 55=IBM^48=459200101^22=1^54=1^60=2003061501:14:49 38=5000^40=1^44=15.75^15=USD^59=0^10=127

Синтаксис FIXML Работы по созданию синтаксиса в формате XML начались в 1998 году, а первая версия FIXML появилась в январе 1999 года.Новая заявка на совершение операции в формате FIXML описывается следующим образом:

Здесь ClOrdID — id-ордера, side=»2» означает заявку на продажу, далее указывается время транзакции, тип заявки (2 соответствует Limit-ордеру) и его цена pX. Поле Acct означет номер счета пользователя.Далее в сообщении указывается информация о ценной бумаге и число ценных бумаг, которые нужно купить или продать. В итоге простое сообщение будет выглядеть примерно так:

В начале пути XML-версии FIX использовался только механизм определения синтаксиса DTD. В дальнейшем организация W3C разработала новый механизм — XML Schema, что заставило разработчиков FIX адаптировать стандарт для использования этого варианта синтаксиса.Этот шаг позволил добиться улучшения XML-версии протокола FIX, в частности, пользователи получили возможность добавления в сообщения атрибутов и контекстных сокращений.

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

image

Пример сообщения об отправке заявки на FIXML (Schema):

Сообщения FIX Каждое сообщение, отправленное в формате протокола FIX, состоит из обязательных, необязательных и условно обязательных (в зависимости от значения других частей сообщения) полей.Сообщения делятся на три категории:

Пре-торговые сообщения; Торговые сообщения (заявки и передача информации о сделках); Пост-торговые сообщения. FIX на российских биржах C помощью протокола FIX любой желающий может напрямую подключиться к «Московской бирже». Кроме того, биржа работает над унификацией доступа по FIX для всех доступных рынков (акции, срочный, валютный).ITinvest также предоставляет своим клиентам доступ к рынкам «Московской биржи» с помощью прямого подключения по протоколу FIX. Кроме того, для высокочастотных торговцев и алготрейдеров созданы специальные ИТ-услуги от колокации серверов в дата-центре M1 до предоставления доступа к виртуальным машинам для размещения торгового робота.

[embedded content]

Другие протоколы Для получения рыночной информации (Market Data) используется протокол FAST (Fix Adapted for STreaming) — стандарт, разработанный создателями протокола FIX, который позволяет добиться значительных возможностей компрессии данных для передачи больших объемов рыночной информации с минимальными временными задержками. Помимо Московской биржи, используется на NYSE, Nasdaq-OMX и многих других мировых площадках.Также для прямого подключения используются так называемые нативные протоколы, которые возникли еще до объединения бирж ММВБ и РТС в «Московскую биржу».

Так на рынках относившихся к бирже РТС (FORTS — фьючерсы и опционы, Standard), для прямого совершения операций и получения данных в режиме подключения используется протокол Plaza II. Для выполнения торговых операций и получения биржевых данных на площадках, ранее относившихся к бирже ММВБ (валютный и фондовый рынки) используется двунаправленный шлюз MICEXBridge (TEAP).

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

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

© Habrahabr.ru