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|