Перейти к содержанию

cTrader FIX engine (Правила взаимодействия)

Введение

Область применения

Эта спецификация предназначена для разработчиков программного обеспечения в качестве руководства по реализации API cTrader FIX engine.

Версия FIX

cTrader поддерживает версию FIX 4.4. Для получения дополнительной информации об этой версии обратитесь к этим спецификациям.

Подключение

Тип подключения

Подключение к FIX engine cTrader доступно через Интернет, VPN-туннель или кросс-коннект к нашим центрам обработки данных в Великобритании. Свяжитесь с нами для получения дополнительной информации.

Сброс порядкового номера

Все стороны FIX-сессии должны сбрасывать порядковые номера при установлении FIX-сессии. См. сообщение Logon.

Сообщения

Как определено в протоколе FIX, сервер FIX cTrader использует два различных уровня данных (системный и прикладной). Обратите внимание, что это минимальный набор сообщений, необходимых для поддержки необходимых рабочих процессов. Он может изменяться со временем по мере развития как бизнес-потребностей, так и стандартов FIX.

cTrader FIX engine

Системные сообщения

  • Heartbeat (Client ↔ cTrader)
  • Test Request (Client ↔ cTrader)
  • Logon (Client → cTrader)
  • Logout (Client → cTrader)
  • Resend Request (Client ↔ cTrader)
  • Reject (Client ↔ cTrader)
  • Sequence Reset (Client ↔ cTrader)

Прикладные сообщения

  • Market Data Request (Client → cTrader)
  • Market Data Snapshot/Full Refresh (Client ← cTrader)
  • Market Data Incremental Refresh (Client ← cTrader)
  • New Order Single (Client → cTrader)
  • Order Status Request (Client → cTrader)
  • Order Mass Status Request (Client → cTrader)
  • Execution Report (Client ← cTrader)
  • Business Message Reject (Client ← cTrader)
  • Request for Positions (Client → cTrader)
  • Position Report (Client ← cTrader)
  • Order Cancel Request (Client → cTrader)
  • Order Cancel Reject (Client ← cTrader)
  • Order Cancel/Replace Request (Client → cTrader)
  • Security List Request (Client → cTrader)
  • Security List (Client ← cTrader)

Стандартный заголовок

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

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

Тег Название поля Обязательное Значение FIX формат Комментарии
8 BeginString Да FIX.4.4 Строка Всегда нешифрованное, должно быть первым полем в сообщении.
9 BodyLength Да Любое допустимое значение Целое число Длина тела сообщения. Всегда нешифрованное, должно быть вторым полем в сообщении.
35 MsgType Да A Строка Тип сообщения. Всегда нешифрованное, должно быть третьим полем в сообщении.
49 SenderCompID Да Любое допустимое значение Строка ID торговой стороны в следующем формате: <Environment>.<BrokerUID>.<TraderLogin>., где Environment - определение сервера, например demo или live; BrokerUID предоставляется cTrader, а Trader Login - числовой идентификатор счета трейдера.
56 TargetCompID Да CSERVER Строка Цель сообщения. The valid value is CSERVER.
57 TargetSubID Да QUOTE или TRADE Строка Дополнительный идентификатор сессии. Возможные значения: QUOTE и TRADE.
50 SenderSubID Нет Любое допустимое значение Строка Присвоенное значение, используемое для идентификации конкретного отправителя сообщения. Должно быть установлено на QUOTE, если TargetSubID=QUOTE.
34 MsgSeqNum Да 1 Целое число Порядковый номер сообщения.
52 SendingTime Да 20131129-15:40:08.155 UTCTimestamp Время передачи сообщения, всегда выражается в UTC (Всемирное координированное время, также известное как GMT).

Стандартный трейлер

Каждое сообщение, административное или прикладное, завершается стандартным трейлером. Трейлер используется для разделения сообщений и содержит трехзначное представление значения CheckSum (тег=10).

Тег Название поля Обязательное Значение FIX формат Комментарии
10 CheckSum Да 054 Строка Трехбайтовая простая контрольная сумма. Всегда последнее поле в сообщении (например, служит), с завершающим <SOH> в качестве разделителя конца сообщения. Определяется как три символа (всегда нешифрованные).

Сообщения сессии

Heartbeat (MsgType(35)=0)

Сообщения Heartbeat отправляются как cTrader, так и клиентским приложением для подтверждения активного соединения.

Клиентское приложение провайдера передает повторяющийся heartbeat с интервалом, определенным полем HeartBtInt (тег=108) в сообщении Logon, или в ответ на сообщение Test Request.

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
112 TestReqID Нет Любое допустимое значение Строка Если heartbeat является результатом сообщения Test Request, требуется TestReqID.
Standard Trailer Да

Test Request (MsgType(35)=1)

Оно вынуждает получателя запроса отправить heartbeat. Ответ отправляется принимающей системой в виде сообщения Heartbeat, содержащего TestReqID.

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
112 TestReqID Да Любое допустимое значение Строка ID сообщения heartbeat. TestReqID должен быть инкрементным.
Standard Trailer Да

Logon (bidirectional) (MsgType(35)=A)

Сообщение Logon отправляется со стороны клиентского приложения для начала сессии cTrader FIX, а ответ отправляется cTrader клиентскому приложению. После завершения входа в систему потоки котировок и сделок могут продолжаться в течение всего жизненного цикла сессии.

Если cTrader получает недействительное сообщение Logon (с недопустимыми полями), cTrader отправляет в ответ сообщение Logout.

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
98 EncryptMethod Да 0 Целое число Определяет схему шифрования сообщений. В настоящее время поддерживается только безопасность на транспортном уровне. Допустимое значение: 0 = NONE_OTHER (шифрование не используется).
108 HeartBtInt Да Любое допустимое значение Целое число Интервал heartbeat в секундах. Значение устанавливается в файле config.properties (на стороне клиента) как SERVER.POLLING.INTERVAL. Значение интервала по умолчанию - 30 секунд. Если HeartBtInt установлен на 0, сообщение heartbeat не требуется.
141 ResetSeqNumFlag Нет Y Логическое Все стороны сессии FIX должны сбросить порядковые номера. Допустимое значение: Y (сброс).
553 Username Нет Любое допустимое значение Строка Числовой ID пользователя. Пользователь связан со значением SenderCompID (организация пользователя, тег=49).
554 Password Нет Любое допустимое значение Строка Пароль пользователя.
Standard Trailer Да

Примечание

Поле Username (тег=553) должно содержать числовое значение логина трейдера, в то время как SenderCompID (тег=49) должно содержать среду, BrokerUID и логин трейдера, разделенные точкой (например, live.theBroker.12345).

См. примеры сообщений Logon ниже.

Запрос:

8=FIX.4.4|9=126|35=A|49=live.theBroker.12345|56=CSERVER|34=1|52=20170117-08:03:04|57=TRADE|50=any_string|98=0|108=30|141=Y|553=12345|554=passw0rd!|10=131|

Ответ (успешно):

8=FIX.4.4|9=106|35=A|34=1|49=CSERVER|50=TRADE|52=20170117-08:03:04.509|56=live.theBroker.12345|57=any_string|98=0|108=30|141=Y|10=066|

Ответ (неудачно):

8=FIX.4.4|9=109|35=5|34=1|49=CSERVER|50=TRADE|52=20170117-08:03:04.509|56=live.theBroker.12345|58=InternalError: RET_INVALID_DATA|10=033|

Logout (MsgType(35)=5)

Сообщение Logout отправляется из клиентского приложения для запроса завершения сессии с cTrader и в качестве ответа cTrader. Выход из сессии происходит в ответ на отправку участником рынка сообщения Logout в cTrader. Перед завершением сессии cTrader отменит все цены, которые все еще активно передаются запрашивающей стороне. Если cTrader получает недействительное сообщение Logon (с недопустимыми полями), cTrader отправляет в ответ сообщение Logout с подробностями об ошибке в поле Text (тег=58).

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
58 Text Нет Любое допустимое значение Строка Подробности отклонения Logon. Используется только для сообщений от cTrader клиенту в ответ на недействительное сообщение Logon.
Standard Trailer Да

Смотрите примеры сообщений Logout ниже.

Запрос:

8=FIX.4.4|9=86|35=5|49=live.theBroker.12345|56=CSERVER|34=161|52=20170117-09:22:33|57=TRADE|50=any_string|10=102|

Ответ:

8=FIX.4.4|9=90|35=5|34=160|49=CSERVER|50=TRADE|52=20170117-09:22:33.077|56=live.theBroker.12345|57=any_string|10=044|

Resend Request (MsgType(35)=2)

Входящее/исходящее сообщение используется для запроса повторной отправки сообщения (или сообщений), обычно при обнаружении разрыва в нумерации последовательности.

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
7 BeginSeqNo Да Любое допустимое значение Целое число Порядковый номер сообщения первой записи в диапазоне для повторной отправки.
16 EndSeqNo Да Любое допустимое значение Целое число Порядковый номер сообщения последней записи в диапазоне для повторной отправки.
Standard Trailer Да

Reject (bidirectional) (MsgType(35)=3)

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

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
45 RefSeqNum Да Любое допустимое значение SeqNum Порядковый номер указанного сообщения.
58 Text Нет Любое допустимое значение Строка Текстовая строка произвольного формата.
354 EncodedTextLen Нет Любое допустимое значение Длина Длина поля EncodedText (не ASCII-символы) в байтах.
355 EncodedText Нет Любое допустимое значение Данные Представление поля Text (тег=58), закодированное с использованием формата, указанного в поле MessageEncoding (тег=347) (из стандартного заголовка). Если используется представление ASCII, оно также должно быть указано в поле Text (тег=58).
371 RefTagID Нет Любое допустимое значение Целое число Номер тега поля FIX, которое инициировало отказ сообщения.
372 RefMsgType Нет Любое допустимое значение Строка MsgType (тег=35) указанного сообщения FIX.
373 SessionRejectReason Нет Любое допустимое значение Целое число Кодированные причины отклонения. Допустимые значения:
0 = Недопустимый номер тега
1 = Отсутствует обязательный тег
2 = Тег не определен для этого типа сообщения
3 = Неопределенный тег
4 = Нет значения для указанного тега
5 = Значение для этого тега вне диапазона
6 = Неверный формат данных для значения
7 = Проблема с расшифровкой
8 = Ошибка подписи
9 = Ошибка CompID
10 = Ошибка точности SendingTime
11 = Недопустимый MsgType
12 = Ошибка проверки XML
13 = Тег повторяется
14 = Указанный тег находится в неправильном порядке
15 = Поля повторяющейся группы в неправильном порядке
16 = Неверный счетчик NumInGroup для повторяющейся группы
17 = Разделитель полей (символ SOH) включен в значение, не являющееся данными
Standard Trailer Да

Sequence Reset (MsgType(35)=4)

Входящее/исходящее сообщение не должно использоваться на уровне приложения. Сообщение Sequence Reset может только увеличивать порядковый номер.

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
123 GapFillFlag Нет Yes или No Строка Указывает, что сообщение Sequence Reset заменяет административные сообщения или сообщения приложения, которые не будут повторно отправлены.
36 NewSeqNo Да 1 Целое число Новый порядковый номер.
Standard Trailer Да

Прикладные сообщения

Market Data Request (MsgType(35)=V)

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
262 MDReqID Да Любое допустимое значение Строка Уникальный ID запроса котировки. Новый ID для новой подписки, тот же ID, что использовался ранее для отмены подписки.
263 SubscriptionRequestType Да 1 или 2 Char 1 = Снимок плюс обновления (подписаться).
2 = Отключить предыдущий запрос снимка плюс обновление (отписаться).
264 MarketDepth Да 0 или 1 Целое число Будет предоставлена полная книга.
0 = Подписка на глубину
1 = Подписка на спот
265 MDUpdateType Да Любое допустимое значение Целое число Поддерживается только инкрементное обновление.
267 NoMDEntryTypes Да 2 Целое число Всегда установлено на 2 (будут отправлены и бид, и аск).
269 MDEntryType Да 0 или 1 Char Эта повторяющаяся группа содержит список всех типов записей рыночных данных, которые запрашивающая сторона хочет получить.
0 = Bid
1 = Offer
146 NoRelatedSym Да Любое допустимое значение Целое число Количество запрошенных инструментов.
55 Symbol Да Любое допустимое значение Long Идентификаторы инструментов предоставляются Spotware.
Standard Trailer Да

Смотрите примеры сообщений Market Data Request ниже.

Для спотов

Запрос:

8=FIX.4.4|9=131|35=V|49=live.theBroker.12345|56=CSERVER|34=3|52=20170117-10:26:54|50=QUOTE|262=876316403|263=1|264=1|265=1|146=1|55=1|267=2|269=0|269=1|10=094|

Ответ:

8=FIX.4.4|9=134|35=W|34=2|49=CSERVER|50=QUOTE|52=20170117-10:26:54.630|56=live.theBroker.12345|57=any_string|55=1|268=2|269=0|270=1.06625|269=1|270=1.0663|10=118|

Для глубины

Запрос:

8=FIX.4.4|9=131|35=V|49=live.theBroker.12345|56=CSERVER|34=2|52=20170117-11:13:44|50=QUOTE|262=876316411|263=1|264=0|265=1|146=1|55=1|267=2|269=0|269=1|10=087|

Ответы:

8=FIX.4.4|9=310|35=W|34=2|49=CSERVER|50=QUOTE|52=20180925-12:05:28.284|56=live.theBroker.12345|57=Quote|55=1|268=6|269=1|270=1.11132|271=3000000|278=16|269=1|270=1.11134|271=5000000|278=17|269=1|270=1.11133|271=3000000|278=15|269=0|270=1.1112|271=2000000|278=12|269=0|270=1.11121|271=1000000|278=13|269=0|270=1.11122|271=3000000|278=14|10=247|
8=FIX.4.4|9=693|35=X|34=2|49=CSERVER|50=QUOTE|52=20170117-11:13:44.461|56=live.theBroker.12345|57=any_string|268=12|279=0|269=1|278=7475|55=1|270=1.0691|271=2000000|279=0|269=1|278=7476|55=1|270=1.06911|271=3000000|279=0|269=1|278=7484|55=1|270=1.06931|271=34579000|279=0|269=1|278=7485|55=1|270=1.06908|271=1000000|279=0|269=1|278=7483|55=1|270=1.06906|271=500000|279=0|269=1|278=7482|55=1|270=1.06907|271=500000|279=0|269=1|278=7488|55=1|270=1.06909|271=3000000|279=0|269=0|278=7468|55=1|270=1.06898|271=500000|279=0|269=0|278=7467|55=1|270=1.06874|271=32371000|279=0|269=0|278=7457|55=1|270=1.06899|271=1000000|279=0|269=0|278=7478|55=1|270=1.06896|271=7000000|279=0|269=0|278=7477|55=1|270=1.06897|271=1500000|10=111|
8=FIX.4.4|9=376|35=X|34=3|49=CSERVER|50=QUOTE|52=20170117-11:13:44.555|56=live.theBroker.12345|57=any_string|268=8|279=0|269=0|278=7491|55=1|270=1.06897|271=1000000|279=0|269=0|278=7490|55=1|270=1.06898|271=1000000|279=0|269=0|278=7489|55=1|270=1.06874|271=32373000|279=0|269=1|278=7496|55=1|270=1.06931|271=34580000|279=2|278=7477|55=1|279=2|278=7468|55=1|279=2|278=7467|55=1|279=2|278=7484|55=1|10=192|

Market Data Snapshot/Full Refresh (MsgType(35)=W)

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
262 MDReqID Да Любое допустимое значение Строка ID запроса рыночных данных, отправленного ранее.
55 Symbol Да Любое допустимое значение Long Идентификаторы инструментов предоставляются Spotware.
268 NoMDEntries Да Любое допустимое значение Целое число Количество следующих записей.
269 MDEntryType Нет 0 или 1 Char Допустимые значения:
0 = Бид
1 = Оффер
Требуется только когда NoMDEntries (тег=268) > 0.
299 QuoteEntryID Нет Любое допустимое значение Строка Уникальная идентификация котировки как части QuoteSet.
270 MDEntryPx Нет 1.2345 Price Цена записи рыночных данных. Требуется только когда NoMDEntries (тег=268) > 0.
271 MDEntrySize Нет 500000 Volume Объем записи рыночных данных. Требуется только когда NoMDEntries (тег=268) > 0.
278 MDEntryID Нет Любое допустимое значение Строка Уникальный идентификатор записи рыночных данных.
Standard Trailer Да

Market Data Incremental Refresh (MsgType(35)=X)

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
262 MDReqID Да Любое допустимое значение Строка ID запроса рыночных данных, отправленного ранее.
268 NoMDEntries Да Любое допустимое значение Целое число Количество следующих записей. Эта повторяющаяся группа содержит список всех типов записей рыночных данных, которые запрашивающая сторона хочет получить.
279 MDUpdateAction Да 0 или 2 Char Тип действия обновления рыночных данных. Допустимые значения:
0 = Новый
2 = Удалить
269 MDEntryType Нет 0 или 1 Char Допустимые значения:
0 = Бид
1 = Оффер
278 MDEntryID Да Любое допустимое значение Строка ID записи рыночных данных.
55 Symbol Да Любое допустимое значение Long Идентификаторы инструментов предоставляются Spotware.
270 MDEntryPx Нет 1.2345 Price Требуется только когда MDUpdateAction (тег=279) = 0.
271 MDEntrySize Нет 10000 Double Требуется только когда MDUpdateAction (тег=279) = 0.
Standard Trailer Да

New Order Single (MsgType(35)=D)

Сообщение New Order Single имеет следующий формат.

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
11 ClOrdID Да Любое допустимое значение Строка Уникальный идентификатор ордера, присвоенный клиентом.
55 Symbol Да Любое допустимое значение Long Идентификаторы инструментов предоставляются Spotware.
54 Side Да 1 или 2 Целое число 1 = Buy
2 = Sell
60 TransactTime Да Любое допустимое значение Timestamp Время запроса, сгенерированное клиентом.
38 OrderQty Да Любое допустимое значение Количество Количество заказанных акций. Это представляет количество акций для ценных бумаг или, в соответствии с обычной практикой, количество контрактов для опционов, фьючерсов, конвертируемых облигаций и т.д. Максимальная точность составляет 0,01. До FIX 4.2 тип этого поля был "Integer".
40 OrdType Да 1, 2 или 3 Char 1 = Рыночный, ордер будет обработан по схеме Немедленно или Отмена (IOC) (TimeInForce, тег=59).
2 = Лимитный, ордер будет обработан по схеме Действителен до отмены (GTC) (TimeInForce, тег=59).
3 = Стоп, ордер будет обработан по схеме Действителен до отмены (GTC) (TimeInForce, тег=59).
44 Price Нет Любое допустимое значение Price Наихудшая цена для клиента, которую клиент готов принять. Требуется только когда OrdType (тег=40) = 2, в этом случае ордер не будет исполнен, если эта цена не может быть достигнута.
99 StopPx Нет Любое допустимое значение Price Цена, которая активирует стоп ордер. Требуется только когда OrdType (тег=40) = 3, в этом случае ордер не будет исполнен, если эта цена не может быть достигнута.
59 TimeInForce Нет 1, 3 or 6 Строка Устарело, это значение будет проигнорировано. TimeInForce будет определено автоматически в зависимости от OrdType (тег=40) и ExpireTime (тег=126):
1 = Действителен до отмены (GTC), будет использоваться только для лимитных и стоп ордеров (OrdType, тег=40) только если ExpireTime (тег=126) не определен.
3 = Немедленно или Отмена (IOC), будет использоваться только для рыночных ордеров (OrdType, тег=40).
6 = Действителен до даты (GTD), будет использоваться только для лимитных и стоп ордеров (OrdType, тег=40) только если ExpireTime (тег=126) определен.
126 ExpireTime Нет 20140215-07:24:55 Timestamp Время истечения в формате "YYYYMMDD-HH:MM:SS". Если задано, ордер будет обработан по схеме GTD (TimeInForce: GTD).
721 PosMaintRptID Нет Любое допустимое значение Строка ID позиции, в которую должен быть размещен этот ордер. Если не задан, будет создана новая позиция, и ее ID будет возвращен в сообщении Execution Report. Может быть указан только для хеджированных счетов.
494 Designation Нет Любое допустимое значение Строка Пользовательская метка ордера.
Standard Trailer Да

См. примеры сообщений New Order Single ниже.

Рыночный ордер в новую позицию

Запрос:

8=FIX.4.4|9=143|35=D|49=live.theBroker.12345|56=CSERVER|34=77|52=20170117-10:02:14|50=any_string|57=TRADE|11=876316397|55=1|54=1|60=20170117-10:02:14|40=1|38=10000|10=010|

Ответы:

8=FIX.4.4|9=197|35=8|34=77|49=CSERVER|50=TRADE|52=20170117-10:02:14.720|56=live.theBroker.12345|57=any_string|11=876316397|14=0|37=101|38=10000|39=0|40=1|54=1|55=1|59=3|60=20170117-10:02:14.591|150=0|151=10000|721=101|10=149|
8=FIX.4.4|9=206|35=8|34=78|49=CSERVER|50=TRADE|52=20170117-10:02:15.045|56=live.theBroker.12345|57=any_string|6=1.0674|11=876316397|14=10000|32=10000|37=101|38=10000|39=2|40=1|54=1|55=1|59=3|60=20170117-10:02:14.963|150=F|151=0|721=101|10=077|

Рыночный ордер в существующую позицию

Запрос:

8=FIX.4.4|9=151|35=D|49=live.theBroker.12345|56=CSERVER|34=80|52=20170117-10:02:55|50=any_string|57=TRADE|11=876316398|55=1|54=1|60=20170117-10:02:55|40=1|38=10000|721=101|10=120|

Ответы:

8=FIX.4.4|9=197|35=8|34=80|49=CSERVER|50=TRADE|52=20170117-10:02:56.003|56=live.theBroker.12345|57=any_string|11=876316398|14=0|37=102|38=10000|39=0|40=1|54=1|55=1|59=3|60=20170117-10:02:55.984|150=0|151=10000|721=101|10=156|
8=FIX.4.4|9=207|35=8|34=81|49=CSERVER|50=TRADE|52=20170117-10:02:56.239|56=live.theBroker.12345|57=any_string|6=1.06735|11=876316398|14=10000|32=10000|37=102|38=10000|39=2|40=1|54=1|55=1|59=3|60=20170117-10:02:56.210|150=F|151=0|721=101|10=127

Лимитный ордер в существующую позицию

Запрос:

8=FIX.4.4|9=162|35=D|49=live.theBroker.12345|56=CSERVER|34=89|52=20170117-10:06:22|50=any_string|57=TRADE|11=876316400|55=1|54=2|60=20170117-10:06:22|40=2|44=1.07162|38=50000|721=101|10=122|

Ответ:

8=FIX.4.4|9=208|35=8|34=90|49=CSERVER|50=TRADE|52=20170117-10:06:22.466|56=live.theBroker.12345|57=any_string|11=876316400|14=0|37=104|38=50000|39=0|40=2|44=1.07162|54=2|55=1|59=1|60=20170117-10:06:22.436|150=0|151=50000|721=101|10=149|

Стоп ордер в новую позицию

Запрос:

8=FIX.4.4|9=153|35=D|49=live.theBroker.12345|56=CSERVER|34=9|52=20170117-12:10:48|57=TRADE|50=any_string|11=876316418|55=1|54=1|60=20170117-12:10:48|40=3|38=50000|99=1.07148|10=249|

Ответ:

8=FIX.4.4|9=207|35=8|34=8|49=CSERVER|50=TRADE|52=20170117-12:10:48.400|56=live.theBroker.12345|57=any_string|11=876316418|14=0|37=205|38=50000|39=0|40=3|54=1|55=1|59=1|60=20170117-12:10:48.362|99=1.07148|150=0|151=50000|721=202|10=122|

Order Status Request (MsgType(35)=H)

Сообщение Order Status Request используется учреждением для генерации сообщения о статусе ордера от трейдера. Для правильного взаимодействия очень важно иметь уникальные идентификаторы клиентских ордеров (ClOrdID) для всех ордеров.

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
11 ClOrdID Да Любое допустимое значение Строка Уникальный идентификатор ордера, присвоенный клиентом.
54 Side Нет 1 или 2 Целое число 1 = Buy
2 = Sell
Standard Trailer Да

См. примеры сообщений Order Status Request ниже.

Запрос:

8=FIX.4.4|9=98|35=H|49=live.theBroker.12345|56=CSERVER|34=95|52=20170117-10:08:31|50=any_string|57=TRADE|11=876316400|10=191|

Ответ:

8=FIX.4.4|9=208|35=8|34=95|49=CSERVER|50=TRADE|52=20170117-10:08:31.819|56=live.theBroker.12345|57=any_string|11=876316400|14=0|37=104|38=50000|39=0|40=2|44=1.07162|54=2|55=1|59=1|60=20170117-10:06:22.436|150=0|151=50000|721=101|10=158|

Order Mass Status Request (MsgType(35)=AF)

Сообщение Order Mass Status Request запрашивает статус для ордеров, соответствующих критериям, указанным в запросе. Ответ будет возвращен в виде нескольких сообщений Execution Report (по одному для каждого ордера) или в виде сообщения Business Message Reject, если ордеры не найдены.

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
584 MassStatusReqID Да Любое допустимое значение Строка Уникальный ID Mass Status Request, назначенный клиентом.
585 MassStatusReqType Да Любое допустимое значение Целое число 7 = Статус для всех ордеров.
В настоящее время поддерживается только значение 7.
225 IssueDate Нет Любое допустимое значение Строка Если задано, ответ будет содержать только ордера, созданные до этой даты.
Standard Trailer Да

См. примеры сообщений Order Mass Status Request ниже.

Запрос:

8=FIX.4.4|9=117|35=AF|34=3|49=live.theBroker.12345|52=20170404-07:20:55.325|56=CSERVER|57=TRADE|225=20170404-07:20:44.582|584=mZzEY|585=7|10=065|

Ответ:

8=FIX.4.4|9=199|35=8|34=13|49=CSERVER|50=TRADE|52=20170404-07:20:55.333|56=live.theBroker.12345|14=0|37=635|38=100000|39=0|40=2|44=1.35265|54=2|55=1|59=1|60=20170404-07:20:44.582|150=I|151=100000|584=mZzEY|721=617|911=1|10=152|

Execution Report (MsgType(35)=8)

Сообщение Execution Report для принятого ордера имеет следующий формат.

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
37 OrderID Да Любое допустимое значение Строка ID ордера cTrader.
11 ClOrdID Нет Любое допустимое значение Строка Уникальный идентификатор ордера, присвоенный клиентом.
911 TotNumReports Нет Любое допустимое значение Целое число Общее количество отчетов, возвращенных в ответ на сообщение Order Mass Status Request.
150 ExecType Да Любое допустимое значение Char 0 = New
4 = Canceled
5 = Replace
8 = Rejected
C = Expired
F = Trade
I = Order Status
39 OrdStatus Да Любое допустимое значение Char 0 = Новый
1 = Частично исполнен
2 = Исполнен
8 = Отклонен
4 = Отменен (когда ордер частично исполнен, возвращается Canceled, обозначающий (тег=151), LeavesQty отменен и не будет впоследствии исполнен).
C = Истек
55 Symbol Нет Любое допустимое значение Long Идентификаторы инструментов предоставляются Spotware.
54 Side Нет 1 или 2 Целое число 1 = Купить
2 = Продать
60 TransactTime Нет Любое допустимое значение Timestamp Время исполнения транзакции, представленное сообщением Execution Report (в UTC).
6 AvgPx Нет Любое допустимое значение Целое число Цена, по которой была исполнена сделка. Для ордера IOC или GTD это средневзвешенная цена (VWAP) исполненного ордера.
38 OrderQty Нет Любое допустимое значение Количество Это представляет количество акций для ценных бумаг или, в соответствии с обычной практикой, количество контрактов для опционов, фьючерсов, конвертируемых облигаций и т.д. До FIX 4.2 тип этого поля был "Integer".
151 LeavesQty Нет Любое допустимое значение Количество Количество ордеров, которые еще предстоит исполнить. Возможные значения от 0 (полностью исполнен) до OrderQty (частично исполнен).
14 CumQty Нет Любое допустимое значение Количество Общее количество ордеров, которые были исполнены.
32 LastQty Нет Любое допустимое значение Количество Купленное/проданное количество ордеров, которые были исполнены при этом (последнем) исполнении.
40 OrdType Нет 1 или 2 Char 1 = Рыночный
2 = Лимитный
44 Price Нет Любое допустимое значение Price Если предоставлено в сообщении New Order Single, оно повторяется в этом сообщении Execution Report.
99 StopPx Нет Любое допустимое значение Price Если предоставлено в сообщении New Order Single, оно повторяется в этом сообщении Execution Report.
59 TimeInForce Нет 1, 3 или 6 Строка 1 = Действителен до отмены (GTC)
3 = Немедленно или Отмена (IOC)
6 = Действителен до даты (GTD)
126 ExpireTime Нет 20140215-07:24:55 Timestamp Если предоставлено в сообщении New Order Single, оно повторяется в этом сообщении Execution Report.
58 Text Нет Любое допустимое значение Строка По возможности, сообщение объяснит Execution Report.
103 OrdRejReason Нет 0 Целое число 0 = OrdRejReason.BROKER_EXCHANGE_OPTION
721 PosMaintRptID Нет Любое допустимое значение Строка ID позиции.
494 Designation Нет Любое допустимое значение Строка Пользовательская метка ордера клиента.
584 MassStatusReqID Нет Любое допустимое значение Строка Уникальный ID запроса массового статуса, назначенный клиентом.
1000 AbsoluteTP Нет Любое допустимое значение Price Абсолютная цена, при которой будет активирован тейк-профит.
1001 RelativeTP Нет Любое допустимое значение Price Расстояние в пипах от цены входа, при котором будет активирован тейк-профит.
1002 AbsoluteSL Нет Любое допустимое значение Price Абсолютная цена, при которой будет активирован стоп-лосс.
1003 RelativeSL Нет Любое допустимое значение Price Расстояние в пипах от цены входа, при котором будет активирован стоп-лосс.
1004 TrailingSL Нет N или Y Логическое Указывает, является ли стоп-лосс трейлинговым.
N = Стоп-лосс не является трейлинговым.
Y = Стоп-лосс является трейлинговым.
1005 TriggerMethodSL Нет Любое допустимое значение Целое число Указанный метод активации стоп-лосса.
1 = Стоп-лосс будет активирован по стороне сделки.
2 = Стоп-лосс будет активирован по противоположной стороне (по аску для позиций на покупку и по биду для позиций на продажу).
3 = Стоп-лосс будет активирован после двух последовательных тиков по стороне сделки.
4 = Стоп-лосс будет активирован после двух последовательных тиков по противоположной стороне (второй тик аска для позиций на покупку и второй тик бида для позиций на продажу).
1006 GuaranteedSL Нет N или Y Логическое Указывает, является ли стоп-лосс гарантированным.
N = Стоп-лосс не является гарантированным.
Y = Стоп-лосс является гарантированным.
Standard Trailer Да

См. пример New Order Single в конце руководства.

Business Message Reject (MsgType(35)=j)

Этот тип сообщения отправляется, когда система не может обработать запрос на подписку или ордер не может быть исполнен.

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
45 RefSeqNum Нет Любое допустимое значение Целое число MsgSeqNum (тег=34) отклоненного сообщения.
372 RefMsgType Нет Любое допустимое значение Строка MsgType (тег=35) указанного FIX-сообщения.
379 BusinessRejectRefID Нет Любое допустимое значение Строка Значение поля ID бизнес-уровня в указанном сообщении. Обязательно, если соответствующее поле ID не было указано.
380 BusinessRejectReason Да 0 Целое число Код для идентификации причины сообщения Business Message Reject.
0 = Другое
58 Text Нет Любое допустимое значение Строка По возможности, сообщение с объяснением причины отклонения.
Standard Trailer Да

См. пример сообщения Business Message Reject ниже.

8=FIX.4.4|9=149|35=j|34=2|49=CSERVER|52=20170105-06:36:00.912|56=live.theBroker.12345|57=any_string|58=Message to explain reason for rejection|379=u4Jr7Rr5t2VS7HSP|380=0|10=123|

Request for Positions (MsgType(35)=AN)

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
710 PosReqID Да Любое допустимое значение Строка Уникальный ID запроса (установленный клиентом).
721 PosMaintRptID Нет Любое допустимое значение Строка ID позиции для запроса. Если не установлен, будут возвращены все открытые позиции.
Standard Trailer Да

См. примеры сообщений Request for Positions ниже.

Запрос:

8=FIX.4.4|9=100|35=AN|49=live.theBroker.12345|56=CSERVER|34=99|52=20170117-10:09:54|50=any_string|57=TRADE|710=876316401|10=103|

Ответ:

8=FIX.4.4|9=163|35=AP|34=98|49=CSERVER|50=TRADE|52=20170117-10:09:54.076|56=live.theBroker.12345|57=any_string|55=1|710=876316401|721=101|727=1|728=0|730=1.06671|702=1|704=0|705=30000|10=182|

Position Report (MsgType(35)=AP)

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
710 PosReqID Да Любое допустимое значение Строка ID сообщения Request for Positions.
721 PosMaintRptID Нет Любое допустимое значение Строка ID позиции, который не устанавливается, если PosReqResult (тег=728) не VALID_REQUEST.
727 TotalNumPosReports Да Любое допустимое значение Строка Общее количество Position Reports в последовательности, когда PosReqResult (тег=728) - VALID_REQUEST, в противном случае = 0.
728 PosReqResult Да 0 или 2 Строка 0 = Действительный запрос
2 = Не найдено открытых позиций, соответствующих критериям.
55 Symbol Нет Любое допустимое значение Строка Инструмент, для которого подготовлен текущий Position Report. Не устанавливается, если PosReqResult (тег=728) не VALID_REQUEST.
702 NoPositions Нет 1 Строка 1, когда PosReqResult (тег=728) - VALID_REQUEST, в противном случае не устанавливается.
704 LongQty Нет Любое допустимое значение Строка Открытый объем позиции в случае стороны покупки, равен 0 в случае стороны продажи. Не устанавливается, если PosReqResult (тег=728) не VALID_REQUEST.
705 ShortQty Нет Любое допустимое значение Строка Открытый объем позиции в случае стороны продажи, равен 0 в случае стороны покупки. Не устанавливается, если PosReqResult (тег=728) не VALID_REQUEST.
730 SettlPrice Нет Любое допустимое значение Строка Средняя цена открытого объема в текущем Position Report.
1000 AbsoluteTP Нет Любое допустимое значение Price Абсолютная цена, при которой будет активирован тейк-профит.
1002 AbsoluteSL Нет Любое допустимое значение Price Абсолютная цена, при которой будет активирован стоп-лосс.
1004 TrailingSL Нет Любое допустимое значение Логическое Указывает, является ли стоп-лосс трейлинговым.
N = Стоп-лосс не является трейлинговым.
Y = Стоп-лосс является трейлинговым.
1005 TriggerMethodSL Нет Любое допустимое значение Целое число Указанный метод активации стоп-лосса.
1 = Стоп-лосс будет активирован по стороне сделки.
2 = Стоп-лосс будет активирован по противоположной стороне (по аску для позиций на покупку и по биду для позиций на продажу).
3 = Стоп-лосс будет активирован после двух последовательных тиков по стороне сделки.
4 = Стоп-лосс будет активирован после двух последовательных тиков по противоположной стороне (второй тик аска для позиций на покупку и второй тик бида для позиций на продажу).
1006 GuaranteedSL Нет Любое допустимое значение Логическое Указывает, является ли стоп-лосс гарантированным.
N = Стоп-лосс не является гарантированным.
Y = Стоп-лосс является гарантированным.
Standard Trailer Да

Order Cancel Request (MsgType(35)=F)

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
41 OrigClOrdID Да Любое допустимое значение Строка Уникальный идентификатор ордера, который будет отменен, назначенный клиентом.
37 OrderID Нет Любое допустимое значение Строка Уникальный ID ордера, возвращенный cServer.
11 ClOrdID Да Любое допустимое значение Строка Уникальный ID запроса на отмену, назначенный клиентом.
Standard Trailer Да

См. примеры сообщений Order Cancel Request ниже.

Запрос:

8=FIX.4.4|9=115|35=F|34=2|49=live.theBroker.12345|50=Trade|52=20170721-13:41:21.694|56=CSERVER|57=TRADE|11=jR8dBPcZEQa9|41=n9Tm8x1AavO5|10=182|

Ответ (успешно):

8=FIX.4.4|9=221|35=8|34=3|49=CSERVER|50=TRADE|52=20170721-13:41:21.784|56=live.theBroker.12345|57=Trade|11=jR8dBPcZEQa9|14=0|37=641|38=100000|39=4|40=2|41=n9Tm8x1AavO5|44=1.499|54=1|55=1|59=1|60=20170721-13:41:21.760|150=4|151=100000|721=624|10=180|

Ответ (неудачно):

8=FIX.4.4|9=174|35=j|34=3|49=CSERVER|50=TRADE|52=20170721-13:41:21.856|56=live.theBroker.12345|57=Trade|58=ORDER_NOT_FOUND:Order with clientOrderId=n9Tm8x1AavO5 not found.|379=jR8dBPcZEQa9|380=0|10=075|

Order Cancel Reject (MsgType(35)=9)

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
37 OrderID Да Любое допустимое значение Строка Уникальный идентификатор ордера, который система не смогла отменить.
11 ClOrdID Да Любое допустимое значение Строка Уникальный идентификатор Order Cancel Request.
41 OrigClOrdID Нет Любое допустимое значение Строка Уникальный идентификатор ордера, который пытались отменить, назначенный клиентом.
39 OrdStatus Да Любое допустимое значение Char 0 = Новый
1 = Частично исполнен
2 = Исполнен
8 = Отклонен
4 = Отменен (когда ордер частично исполнен, возвращается Canceled, обозначающий (тег=151), LeavesQty отменен и не будет впоследствии исполнен).
C = Истек
434 CxlRejResponseTo Да 1 или 2 Char 1 = Отклонить отмену ордера.
2 = Отклонить изменение ордера с другого терминала.
58 Text Нет Любое допустимое значение Строка Ордер находится в процессе исполнения.
Standard Trailer Да

См. пример сообщения Order Cancel Reject ниже.

Ответ:

8=FIX.4.4|9=156|35=9|34=3|49=CSERVER|50=TRADE|52=20181024-12:35:02.896|56=live.theBroker.12345|57=Trade|11=gBljx7YOg5jY|37=629|39=0|41=FdXLfS0tTyUL|58=Order is under execution|434=1|10=109|

Order Cancel/Replace Request (MsgType(35)=G)

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
41 OrigClOrdID Да Any valid value Строка Уникальный идентификатор ордера, который будет изменен, назначенный клиентом.
37 OrderID Нет Любое допустимое значение Строка Уникальный ID исходного ордера, который будет изменен, назначенный сервером. Предпочтительный метод для использования.
11 ClOrdID Да Любое допустимое значение Строка Уникальный ID запроса на изменение, назначенный клиентом.
38 OrderQty Да Любое допустимое значение Количество Существующее или вновь указанное количество для замены старого значения.
44 Price Нет Любое допустимое значение Price Существующая или вновь указанная лимитная цена для замены старого значения. Действительно только для лимитных ордеров.
99 StopPx Нет Любое допустимое значение Price Существующая или вновь указанная стоп-цена для замены старого значения. Действительно только для стоп-ордеров.
126 ExpireTime Нет 20140215-07:24:55 Timestamp Существующее или вновь указанное время истечения срока действия. Действительно только для отложенных ордеров.
Standard Trailer Да

См. примеры сообщений Order Cancel/Replace Request ниже.

Запрос:

8=FIX.4.4|9=123|35=G|34=3|49=live.theBroker.12345|50=Trade|52=20170721-13:42:17.680|56=CSERVER|57=TRADE|11=Is03AvsknNYK|38=5000|41=n9Tm8x1AavO5|44=1.1|10=010|

Ответ (успешно):

8=FIX.4.4|9=192|35=8|34=3|49=CSERVER|50=TRADE|52=20170721-13:42:18.784|56=live.theBroker.12345|57=Trade|11=Is03AvsknNYK|14=0|37=629|38=5000|39=0|40=2|44=1.1|54=1|55=1|59=1|60=20170721-13:42:18.760|150=5|151=5000|721=624|10=150|

Ответ (неудачно):

8=FIX.4.4|9=171|35=j|34=3|49=CSERVER|50=TRADE|52=20170721-13:42:18.784|56=live.theBroker.12345|57=Trade|58=ORDER_NOT_FOUND:Order with orderId:4429421711699105367 isn't found|379=NXek3EzJvMme|380=0|10=245|

Market Data Request Reject (MsgType(35)=Y)

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
262 MDReqID Да Любое допустимое значение Строка Должен ссылаться на MDReqID (тег=262) запроса.
281 MDReqRejReason Нет Любое допустимое значение Целое число 0 = Неизвестный инструмент
4 = Неподдерживаемый SubscriptionRequestType (тег=263)
5 = Неподдерживаемый MarketDepth (тег=264)
Standard Trailer Да

См. примеры сообщений Market Data Request Reject ниже.

Запрос:

8=FIX.4.4|9=148|35=V|34=2|49=live.theBroker.12345|50=Quote|52=20170920-09:52:13.032|56=CSERVER|57=QUOTE|262=CS8260:sXlXex|263=1|264=0|265=1|146=1|55=CS8260|267=2|269=0|269=1|10=129|

Отклонить:

8=FIX.4.4|9=164|35=Y|34=2|49=CSERVER|50=QUOTE|52=20170920-09:52:13.036|56=live.theBroker.12345|57=Quote|58=INVALID_REQUEST: Expected numeric symbolId, but got CS8260|262=CS8260:sXlXex|281=0|10=236|

Запрос:

8=FIX.4.4|9=136|35=V|34=6|49=live.theBroker.12345|50=Quote|52=20170920-09:52:13.199|56=CSERVER|57=QUOTE|262=EwOhiWvMdCpc|263=1|264=3|146=1|55=1|267=2|269=0|269=1|10=182|

Отклонить:

8=FIX.4.4|9=157|35=Y|34=6|49=CSERVER|50=QUOTE|52=20170920-09:52:13.201|56=live.theBroker.12345|57=Quote|58=INVALID_REQUEST: MarketDepth should be either 0 or 1|262=EwOhiWvMdCpc|281=5|10=088|

Security List Request (MsgType(35)=x)

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
320 SecurityReqID Да Любое допустимое значение Строка Уникальный ID запроса Security Definition Request.
559 SecurityListRequestType Да 0 Целое число Тип запроса Security List Request. Поддерживается только 0 = Symbol (тег=55).
55 Symbol Нет Любое допустимое значение Целое число ID для разрешения имени инструмента.
Standard Trailer Да

См. примеры сообщений Security List Request ниже.

Запрос:

8=FIX.4.4|9=107|35=x|34=3|49=live.theBroker.12345|50=Trade|52=20180427-12:24:27.106|56=CSERVER|57=TRADE|55=39|320=ILCea0JkdQEm|559=0|10=248|

Ответ:

8=FIX.4.4|9=158|35=y|34=3|49=CSERVER|50=TRADE|52=20180427-12:24:27.107|56=live.theBroker.12345|57=Trade|320=ILCea0JkdQEm|322=responce:ILCea0JkdQEm|560=0|146=1|55=39|1007=NZDCHF|1008=4|10=088|

Security List (MsgType(35)=y)

Тег Название поля Обязательное Значение FIX формат Комментарии
Standard Header Да
320 SecurityReqID Да Любое допустимое значение Строка Уникальный ID запроса Security Definition Request.
322 SecurityResponseID Да Любое допустимое значение Строка Уникальный ID ответа Security List.
560 SecurityRequestResult Да 0 Целое число Результаты, возвращаемые на сообщение Security Request. Допустимые значения:
0 = Действительный запрос.
1 = Недействительный или неподдерживаемый запрос.
2 = Не найдено инструментов, соответствующих критериям выбора.
3 = Нет авторизации для получения данных об инструменте.
4 = Данные об инструменте временно недоступны.
5 = Запрос данных об инструменте не поддерживается.
146 NoRelatedSym Нет Любое допустимое значение Целое число Указывает количество повторяющихся инструментов.
55 Symbol Нет Любое допустимое значение Целое число Идентификаторы инструментов предоставляются Spotware.
1007 SymbolName Нет Любое допустимое значение Строка Название инструмента.
1008 SymbolDigits Нет Любое допустимое значение Целое число Количество знаков после запятой для инструмента. Возможные значения от 0 до 5.
Standard Trailer Да

См. пример сообщения Security List ниже.

Ответ:

8=FIX.4.4|9=3977|35=y|34=2|49=CSERVER|50=TRADE|52=20180426-12:07:37.816|56=live.theBroker.12345|57=Trade|320=Sxo2Xlb1jzJC|322=responce:Sxo2Xlb1jzJC|560=0|146=143|55=1|1007=EURUSD|1008=5|55=2|1007=GBPUSD|1008=5|55=3|1007=EURJPY|1008=3|55=4|1007=USDJPY|1008=3|55=5|1007=AUDUSD|1008=5|55=6|1007=USDCHF|1008=5|55=7|1007=GBPJPY|1008=3|55=8|1007=USDCAD|1008=5|55=9|1007=EURGBP|1008=5|55=10|1007=EURCHF|1008=5|55=11|1007=AUDJPY|1008=2|55=12|1007=NZDUSD|1008=5|55=13|1007=CHFJPY|1008=2|55=14|1007=EURAUD|1008=4|55=15|1007=CADJPY|1008=2|55=16|1007=GBPAUD|1008=4|55=17|1007=EURCAD|1008=4|55=10001|1007=USDCFDSAX|1008=5|55=18|1007=AUDCAD|1008=4|55=10002|1007=CD3295|1008=5|55=19|1007=GBPCAD|1008=4|55=10003|1007=DU3295|1008=5|55=20|1007=AUDNZD|1008=4|55=10004|1007=CS5965|1008=2|55=21|1007=NZDJPY|1008=2|55=10005|1007=CS6014_3|1008=5|55=22|1007=USDNOK|1008=4|55=10006|1007=DU6014_3|1008=5|55=23|1007=AUDCHF|1008=4|55=10007|1007=CS6014_4|1008=5|55=24|1007=USDMXN|1008=4|55=10008|1007=DU6014_4|1008=5|55=25|1007=GBPNZD|1008=4|55=10009|1007=CS5953|1008=5|55=26|1007=EURNZD|1008=4|55=10010|1007=CS6407_01_EURUSD|1008=5|55=27|1007=CADCHF|1008=4|55=10011|1007=CS6407_01_GBPUSD|1008=5|55=28|1007=USDSGD|1008=5|55=10012|1007=CS6407_02_EURUSD|1008=5|55=29|1007=USDSEK|1008=4|55=10013|1007=CS6407_03_EURUSD|1008=5|55=30|1007=NZDCAD|1008=4|55=31|1007=EURSEK|1008=4|55=10015|1007=CS7847_01_EURUSD|1008=5|55=32|1007=GBPSGD|1008=4|55=10016|1007=CS7847_01_GBPUSD|1008=5|55=33|1007=EURNOK|1008=4|55=10017|1007=CS7847_02_EURUSD|1008=5|55=34|1007=EURHUF|1008=2|55=10018|1007=CS7847_03_EURUSD|1008=5|55=35|1007=USDPLN|1008=4|55=10019|1007=CS7847_04_GBPUSD|1008=5|55=36|1007=USDDKK|1008=4|55=10020|1007=CS9004S|1008=2|10=096|