Написано множество статей и «гидов» о том, как стать трейдером и начать торговать на Бирже. Алготрейдинг, роботы, опционные стратегии – эти термины слышали многие. К сожалению, в большинстве таких «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 (исходные коды и ваш софт мы не смотрим, всё только на основе логов).

Комментарии (9)


  1. javapowered
    29.06.2015 11:38

    «Одним сетевым интерфейсом сервер смотрит на специально выделенный для скоростных роботов пул наших серверов доступа, а вторым интерфейсом – в Интернет – это так называемый управляющий канал, предназначенный для обслуживания робота» — под интерфейсом подразумеваются VLAN? в общем случае сейчас ведь задействованно 2 сетевых интерфейса для LACP поверх которых идёт всё — и интернет и торговля. конечно можно брать 4 интерфейса — 2 для торговли, и для для интернет, но это будет немножко дороже по деньгам, да и в сервере не всякий раз имеется 4 порта.

    Когда можно ожидать что FIX на срочке по скорости сравняется с cgate?

    Через 2 года какой способ подключения планируется быть более быстрым, бинарный протокол или cgate? Кстати про бинарный протокол расскажите тоже :)


    1. Moscow_Exchange Автор
      29.06.2015 12:11

      Приветствуем! :) Ответим по пунктам:

      1. Тут подразумевается, что принимающий интерфейс (коммутаторы в зоне колокации, в которые подключается сервер/сетевое оборудование участника) в сторону торговой системы и управляющий интерфейс (который смотрит в интернет и через который можно управлять сервером) это суть разные вещи. Формально комментирующий прав – на сервере в общем случае две сетевых карты, которые собраны в teaming и через которые идет весь трафик
      2. В силу архитектурного устройства системы FIX на срочном рынке вряд ли когда-нибудь будет быстрее CGate, но мы надеемся, что в ближайший год его latency будет планомерно улучшаться.
      3. Бинарный протокол, но об этом мы будем рассказывать подробнее позже, после выдачи данного протокола в публичный тест.


      1. javapowered
        29.06.2015 12:34

        Спасибо. По пункту 2 ещё было бы интересно знать в граммах в микросекундах насколько биржа дольше обрабатывает FIX постановку заявку, чем cgate. Ведь клиент имеет возможность по фиксу транзакции ставить ощутимо быстрее (поскольку нет надобности запускать роутер) и возможно планомерное ускорние fix на стороне бирже приведёт к суммарной задержке «клиент + сервер» для фикса меньшей, чем для cgate.


        1. Moscow_Exchange Автор
          29.06.2015 16:37

          Фикс гейт медленнее CGate на время конвертации фикс сообщения в формат Plaza-2, который является внутренним форматом торговой системы, это время составляет сейчас в районе 50-70 мкс на транзакцию. В то же время обработка сообщения в роутере на стороне клиента занимает, в общем случае, 10-30 мкс. В связи с этим улучшить время RTT заявки через фикс – можно, и мы над этим работаем, но обогнать CGate пока не представляется возможным.


          1. wibotwi
            02.07.2015 14:45

            50-70 — это очень много

            грамотно написанный С++ фикс парсер должен меньше 10-ки давать


  1. dmitrmax
    30.06.2015 10:44

    Зачем вообще вы тащите этот архаичный FIX? Не кривите душой и не называйте это протоколом или стандартом. Нет в мире двух бирж, которые использовали бы совместимые реализации FIX. Это просто некий способ кодирования полей и значений. Способ дурацкий, надо заметить, так как в нём все кодируется тестом, и, очевидно, является пережитком времен прямого модемного подключения к биржам.


    1. Moscow_Exchange Автор
      01.07.2015 17:30

      Формально это всё-таки протокол, имеющий спецификации и версионность. Но протокол этот определяет не формат контента, а скорее транспортный уровень. Протокол сам по себе довольно широкий, потому многие биржи его заимствуют не полностью или берут только что-то прикладное. К тому же у каждой биржи своя специфика инструментов и торгов, поэтому вполне логично, что у каждой есть свои нюансы, несовместимые с другими. И опять же, наличие особенностей реализации и специфики есть и в других международных стандартах (ISO).

      Наличие бинарного протокола именно в этом плане задачу не облегчит. Текст может и считаться архаикой, но например ITCH – это тоже вещь достаточно специфическая. А что рекомендуете вы?

      Поддержка FIX’a, как показывает наша практика, позволяет частным клиентам максимально быстро разработать софт с нуля и выйти на рынок – за счёт его простоты, наличия библиотек и независимых ресурсов, где можно почитать туториалы или получить помощь сообщества. А у большинства крупных зарубежных банков/брокеров FIX считается стандартом де-факто и имеется солидный опыт в его использовании — если имеешь цель сделать фиксовый продукт с подключением ко многим биржам, наличие протокола делает задачу проще — вместо того, чтобы изучать совершенно разные протоколы каждой отдельной биржи, проще адаптировать свое FIX-решение к реалиям конкретной биржи.


      1. dmitrmax
        01.07.2015 18:17

        > Наличие бинарного протокола именно в этом плане задачу не облегчит.

        Вы противоречите сами себе: почему вы собираетесь заменить Plaza2 на бинарный протокол, а не довести до совершенства связку FIX/FAST? )


        1. Moscow_Exchange Автор
          02.07.2015 15:37

          Переход на бинарный протокол обусловлен тем, что особенности его реализации позволяют сделать данный протокол максимально близким по структуре к внутреннему протоколу ТС Спектра ( в отличие от протокола FIX) и тем самым обеспечить максимальное быстродействие протокола внутри с отсутствием библиотек на стороне клиента. При этом работы по усовершенствованию связки FIX/FAST все равно ведутся.