Протокол был создан в 1992 году специально для обмена биржевой информацией между участниками торгов как замена торговле через телефон, преобладающей на тот момент. fix api На данный момент поддерживается большинством крупнейших бирж мира, в том числе и московской. Со дня основания прошло не мало времени, естественно и сам протокол все это время совершенствовался. Постепенно в протокол добавлялся новый функционал, поддержка новых классов инструментов.
Протокол FAST: от технаря технарям
При этом не важна последовательность полей внутри тела сообщения, хотя в реализациях принято придерживаться определенных традиций в порядке следования тегов друг за другом. Биржевая торговля иностранной валютой, спот-торговля драгоценными металлами и любыми другими инструментами на платформе Форекс предполагает значительный риск потерь и подходит не всем инвесторам. Прежде чем открыть счёт в Swissquote, оцените свой уровень опыта, инвестиционные цели, активы, доходы и аппетит к риску. Вы должны быть осведомлены обо всех рисках, связанных с биржевой торговлей иностранной валютой, и обратиться за советом к независимому финансовому консультанту, если у вас имеются какие-либо сомнения. Контент данного веб-сайта представляет собой рекламный материал.
Торговля с помощью протокола FIX. Часть вторая: создание FIX-клиента
В следующей части расскажу, какими финансовыми инструментами торгуют на бирже и как правильно указать параметры для этих инструментов при размещении торговой заявки. Для тех, кому интересны технические подробности и написание собственного клиента, – продолжение. Закончил недавно делать коннектор к OsEngine, который использует FIX protocol напрямую. Ну а для тех кому этого будет недостаточно, напишу подробнее об использовании Fix протокола.
Протокол FIX/FAST: От Технаря OSA Engines
Чтобы труды Андрея не потерялись, я решил написать об этом отдельно, собрав все статьи и дополнив их массой открытых примеров. Вы можете найти эти материалы как у себя на сайте, так и в своем блоге. FIX Trading Community – некоммерческая организация, обладающая правами и поддерживающая спецификацию протокола. По состоянию на 2009 год спецификация находилась в состоянии общественного достояния. Просто заполните приведённую ниже форму, и мы свяжемся с вами в ближайшее время и предоставим всю необходимую информацию для начала работы. Мы также предоставим вам тестовую среду, чтобы вы могли убедиться, что соединение является безупречным, прежде чем начинать торговлю в режиме реального времени.
FIX-Engine и запуск тестового сервера
Эти части называются полями(fields), каждое поле также состоит из двух частей, разделенных знаком «равно». Tag – всегда целое положительное число, которое является по сути указателем на имя поля. Большинство полей являются стандартными и всегда будут иметь один и тот же смысл на всех биржах.
Отправка запроса на получение рыночных данных
Например, процедура, когда брокер-дилер звонит другому с намерением купить или продать пакет акций, в протоколе FIX отражена в обмене IOI-сообщениями. Протокол FIX является стандартом обмена финансовыми сообщениями, его поддерживает большинство крупных бирж. У него есть несколько версий, которые появлялись по мере внедрения улучшений и поддержки новых классов торговых инструментов.
Биржи, поддерживающие FAST протокол
- В предыдущей статье мы использовали приложение MiniFIX для подключения и отправки сообщений на тестовую биржу с помощью протокола FIX.
- Протокол FIX определяет обязательные и необязательные поля.
- Далее будет использоваться формат сообщений с помощью тегов и значений и стандартная спецификация протокола FIX 4.2.
- Сообщение состоит из неких частей, разделенных вертикальной чертой.
- Вызвав метод start() запустим подключение и сможем получать сообщения.
- Tag – всегда целое положительное число, которое является по сути указателем на имя поля.
Ниже список источников, на которых Вы сможете более подробно ознакомиться с протоколом. В этом случае разработчики предоставляют свою документацию, в которой описывают особенности своей реализации FIX[3][4][5][6], чтобы клиенты могли настроить свои клиентские программы под эти особенности. Протокол обмена финансовой информацией (FIX) является международным стандартом для электронной торговли и разработан для обеспечения большего взаимодействия между участниками рынка. В этом цикле статей создадим окружение для работы с тестовой биржей и обмена сообщениями с ней, разберёмся с основными биржевыми терминами и закрепим знания на практике. Напишем метод для создания сообщения типа MarketDataRequest (о тегах сообщения можно почитать в спецификации).
Можно создать экземпляр класса нужного нам сообщения и с помощью метода set() заполнить теги. Теги также представляют собой классы с обязательным полем FIELD, в котором хранится соответствующее числовое значение. Когда мы создали реализацию FIX-приложения, можно приступить к сервису для подключения к серверу – ConnectorService. При запуске приложения он будет создавать и запускать сокет для обмена сообщениями. Протокол FAST был разработан организацией FIX Protocol Limited (FPL) в начале 2000-х годов как улучшенная версия протокола FIX (Financial Information eXchange). Основная цель разработки FAST заключалась в снижении объема передаваемых данных и увеличении скорости их передачи, что стало критически важным с ростом объемов торгов и появлением высокочастотной торговли (HFT).
Создание сервиса для подключения к серверу
Когда дело доходит до протокола FAST, UDP делает свою магию, но также приносит немного хаоса в виде потерь пакетов. В финансовом мире это не просто допустимо, но и решаемо с помощью multicast подписок на снэпшоты и инкрементальные обновления. Давайте разберемся, как это работает и что делать, когда данные решают сыграть в прятки.
Кофе, монитор, постер со Страуструпом, удобное кресло и начало создания своего FAST коннектор – что может быть более лучшим началом рабочего дня? Реализация такого протокола, конечно же, требует языка C++ (и никаких шуток про Python здесь не будет). Если говорить о высокой производительности, то даже всплывает такое страшное слово, как FPGA. Для Московской Биржи таких решений честно не встречал, обычно писали на C++, но для этого и существуют комментарии, чтобы внести дополнительную информацию.
API от Swissquote может быть подключён к вашей торговой платформе для обмена торговой информацией с нашим сервером на основе протокола FIX 4.4. (вверху — типы сообщений, внизу — теги выбранного сообщения). Транспортный уровень протокола описывает структуру FIX сообщений, а именно то, каким образом они строится. Человеку, не знакомому с синтаксисом fix сообщений, эта строка покажется неким шифром, оно так и есть на самом деле. Требования к FAST обусловлены производительностью, поэтому почти всегда универсальные решения идут лесом.
С помощью класса MessageUtils библиотеки QuickFix/J можно получить тип входящего сообщения и далее обработать каждый случай (здесь для примера я указала несколько типов сообщений и вывела их в лог). В этой статье реализуем получение рыночных данных и их сохранение в кэш, остальные типы сообщений и их обработку более подробно разберем в следующих статьях и дополним логику нашего клиента. В предыдущей части я использовала пример Executor из модуля examples, но в нем обрабатываются только сообщения на создание торговых заявок.
Самой последней версией протокола является версия 5.0.SP2. Разные торговые системы поддерживают разные протоколы, а иногда и несколько протоколов параллельно. Кроме описанных, Fix поддерживает кучу других сообщений для разного рода потребностей. Тут уже нужно исходить из документации биржи и собственных предпочтений.
Протокол SBE (Simple Binary Encoding), который является современным продолжением FAST, уже внедрен в даже такие казалось бы совсем далекие от HFT компании, как Binance. SBE отличается от FAST более гибкой структурой и улучшенной эффективностью сжатия данных. Существует несколько открытых реализаций протокола FAST, таких как QuickFAST и OpenFAST.net (под C#, и снова никаких шуток про Python). Протокол FAST настолько редкий, что простых материалов практически не существует, кроме спецификаций. Редкость обусловлена тем, что протокол работает, как правило, на базе UDP в интранет-зоне (называемой колокацией на бирже), что делает требования к программисту очень серьезными.
Он не подавался на рассмотрение и не получал одобрения надзорных органов. Метод fromApp срабатывает при получении сообщений с сервера, то есть в нем происходит основная логика. В настройках конкретной сессии (в блоке [session]) главное – заполнить параметр BeginString, в котором указывается версия протокола FIX, использующегося в сообщениях. По аналогии с файлом настроек на сервере, создадим файл resources/config/client.cfg с настройками нашего приложения. Содержимое “тела” сообщения зависит от типа сообщения, которое обозначено в заголовке (тег 35, MsgType).
Выясним что это такое, разберемся как им пользоваться для обмена данными с торговыми площадками. Статья в первую очередь будет полезна для тех, кто собирается писать свое подключение к какой-либо бирже при помощи fix протокола, при чем не зависимо от выбранного языка программирования. Вы поймете какую структуру должны иметь fix сообщения и много других нюансов. Все примеры сообщений по-прежнему можно создавать с помощью приложения MiniFIX, если не хотите писать реализацию своего клиента.
Статьи на сайте подробно описывают текстовый формат протокола, и у этих статей есть продолжения. Для кодирования FIX сообщений в бинарном виде используется FAST протокол. Заменим в этом файле идентификатор клиента на MINIFIX_CLIENT (можно указать любое другое значение). В качестве разделителя полей между собой выступает символ SOH (Start of Heading) из кодировки ASCII.