Market connectivity: Подключение к бирже

Для того, чтобы участник торгов (брокер) мог вести торги на бирже, ему надо установить соединение с биржей. Этим занимается у брокера специальный отдел программистов и технологов, который называется market connectivity team. Организационно эта команда входит в отдел электронной торговли (electronic trading technology division, ETT), в ведении которой находятся все системы обработки, маршрутизации ордеров, системы алгоритмической торговли и системы подключения к рынкам.

Шлюзы биржи

Участник торгов подключается к бирже через так называемые шлюзы (gateways). Только через них он может передавать ордера, получать отчеты о сделках, получать клиринговую информацию и «сырые» рыночные данные.

Шлюзы — это своеобразные ворота, которые охраняют движок биржи от внешнего мира, от неверной, вредоносной и неавторизованной входящей информации. Они занимаются первичной валидацией входящих сообщений на соответствие спецификациям биржи, освобождая движок биржи от этой обязанности.

У биржи есть несколько типов шлюзов:

  • OE-шлюзы (orders & executions gateways) — шлюзы по которым участник торгов посылает свои ордера и получает отчеты об их исполнении, шлюзы
  • market data-шлюзы, по которым участник торгов получает рыночные данные с данной биржи;
  • drop-copy-шлюзы, по которым участник торгов получает копию всех сообщений, которые поступают на биржу по его логином
  • clearing-шлюзы, по которым участник торгов получает данные от клиринговой системы биржи

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

Те, для кого это критично, могут заказать у биржи услугу выделенного шлюза (dedicated gateway). К этому шлюзу подключается только данный участник торгов, и ни он ни на кого не оказывает влияния, ни на него.

Все типы шлюзов принимают и отправляют сообщения в соответствии с каким-то определенным протоколом. Это может какой-то специальный протокол, изобретенный самой биржей (native protocol), так и FIX-protocol определенной версии с дополнениями. На сайте биржи в особом техническом разделе всегда есть подборка документов, в которой представлены порядок подключеняи к бирже, спецификации протокола соединения и спецификации FIX-протокола, поддерживаемого биржей. Чаще всего это FIX-protocol определнной версии (например, FIX 4.4 или FIX 5.0) с дополнительными тегами, введенными самой биржей.

Шлюзы также считают количество сообщений, принимаемых от одного клиента. На шлюзе выставляется определенный порог количества сообщений в секунду (threshold), и когда этот порог превышен, шлюз включает throttling. Те участники торгов, кому надо передавать больше сообщений, чем выставлено в пороге шлюза, подключаются к нескольким шлюзам и «размазывают» поток сообщений между ними по алгоритму round robin.

Процедура подключения

Подключение к OE-шлюзу осуществляется по протоколу TCP/IP. К market-data шлюзу — по протоколу UDP/IP. После оформления всех юридических формальностей технический персонал биржи сообщает техническому пересоналу брокера IP-адреса и порты подключения, выдает логины и пароли, которые должны присутствовать в первом сообщении при установлении сессии, а также параметры подключения к тестовой системе биржи, на которой программисты брокера могут тестировать новые версии своей клиентской части.

Процесс написания клиентской части

Для того, чтобы брокер мог посылать сообщения на биржу и получть от нее данные кто-то должен на стороне брокера настроить или написать клиентскую программу. Есть биржи, которые сами выдают клиентскую программу, многие биржи предлагают написать такую программу самому брокеру. Так как спецификация протокола сообщений имеется, брокер поручает команде программистов реализовать эту спецификацию, чем они и занимаются в течение скажем полугода. Все зависит от сложности протокола с подготовки программистов.

Если у биржи протокол соединения нативный, то биржа предоставляет dll- и so-библиотеки для такого соединения. Чаще всего это C/C++ библиотеки и header- файлы для вызова ее методов. Если клиентская часть пишется на Java, то приходится прибегать к JNI и совмещать знания Java-программисита и C/C++ программиста. Да еще бывает, что нет библиотек под Windows, так что приходится писать под Linux и отлаживать код под ним.

Гораздо проще, если надо реализовать соединение по FIX-протоколу. FIX-протокол — протокол текстовый (ASCII) и нейтрален к языку программирования. Шлюз биржи может быть написан на C++, а брокер может написать клиента на чистой Java. Ничто не мешает взять уже готовую реализацию FIX-протокола и адаптировать ее под спецификацию конкретной биржи, что чаще всего и делают. Реализация может быть как внутренняя, которой пользуются у брокера для подключения и к другим биржам, так и внешняя — купленная коммерческая или вообще open-source реализация, например, QuickFIX/J.

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

Поддержка соединения

То, что написали разработчики, потом выносится на PROD и становится частью market access, market connectivity layer общей системы электронных торгов брокера. Отдел поддержки (PROD support) постоянно мониторит состояние подключения к бирже и если подключение теряется это production issue.

Ссылки

 

 

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s