Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 16 Следующий »

Вступление

Dropcopy ляляля


RuTerminal Fix апи используется для получения информации торгового характера из системы RuTerminal. 


https://www.fixtrading.org/packages/fix-5-0-sp2-volume-1-w-errata-20110818/

Подготовка


DataDictionary.xml


Подключение



Описание полей и их допустимых значений

Многие сообщения содержат пересекающийся набор полей. Так, например, каждое сообщение должно содержать поля группы Standard Header и Standard Trailer, несущие служебную информацию. Далее следует описание некоторых используемых групп и полей. Для каждого поля указаны:

• Тэг – уникальный идентификатор поля; используется при формировании FIX сообщения.

• Поле – имя поля; не используется при формировании FIX сообщения, введено для удобства, в качестве краткого описания.

• Наличие – признак, который показывает, должно ли поле обязательно присутствовать в сообщении:

• Y - обязательное поле;

• N - необязательное поле;

• C - обязательно при выполнении условия (указано в графе Описание).

• Тип - тип поля.

• Описание - детальное описание поля.

• Допустимые значения - дополнительные ограничения.

Символ "*" - признак отличия от стандартного FIX протокола.

Типы данных

Char

Символьный тип данных. Значение состоит из одного символа. Может содержать любую букву, цифру или знак препинания, кроме символа разделителя. Все значения этого типа являются чувствительными к регистру (m ! = M).

String

Строковый тип данных. Произвольная последовательность букв алфавита. Может содержать любой символ и знак препинания, кроме символа разделителя. Все значения этого типа являются чувствительными к регистру (value != Value)

Float

Число с плавающей запятой. Состоит из последовательности цифр с плавающей десятичной запятой и символа знака (символы ASCII «-«, «0» - «9» и «.»). При отсутствии десятичной запятой значение будет интерпретировано как целое число. Количество знаков справа от запятой устанавливается в соответствии с требованиями бизнеса и рынка, а также по договорённости между участниками. Обратите внимание, что числа с плавающей запятой допускают наличие ведущих нулей в начале числа в левой его части (00023.23" = "23.23"), а правая часть числа с плавающей точкой может содержать конечные нули (23.0" = "23.0000" = "23" = "23.").

Price

Число с плавающей запятой, показатель цены. Содержит 16 знаков слева от запятой и 5 знаков справа от запятой.

Int

Целочисленный тип данных. Последовательность цифр без десятичного разделителя, может содержать символ знака (символы ASCII «-«, «0» - «9» и «.»), который занимает один байт (положительное значение «99999», отрицательное значение «-99999»). Обратите внимание, что целочисленные значения могут содержать ведущие нули ("00023" = "23"). Пример записи: значение «723», записанное в поле «21» будет представлено как |21=723|, значение «-723», записанное в поле «21» будет представлено как |21=-723|.

LocalMktDate

Дата по местному времени в формате ГГГГММДД. Допустимые значения: ГГГГ = 0000-9999, ММ = 01-12, ДД = 01-31

UTCTimestamp

«Время/Дата» по стандарту UTC в формате ГГГГММДД-ЧЧ:ММ:СС:ссс (миллисекунды) или ГГГГММДД-ЧЧ:ММ:СС:ссссссссс (наносекунды).

RT_PRODUCT

Продукт в нотации системы RuTerminal. 

ЗначениеОписание
Fx
FxNdf
FxSwap

Группа Standard header

Стандартный заголовок, который должно содержать каждое сообщение.

ТэгПолеНаличиеТипОписаниеДопустимые значения






Группа Standard trailer

Протокол сессионного уровня

Протокол сессионного уровня обеспечивает идентификацию сторон взаимодействия, гарантированную доставку и последовательную обработку сообщений, контроль состояния соединения и возможность восстановления сессии в случае сбоев.

Logon - Инициирует сессию и соединение.

Logout - Инициирует или подтверждает разрыв соединения.

Heartbeat - Передаётся периодически для контроля состояния соединения.

Test Request - Запрос внеочередного Heartbeat от противоположной стороны.

Reject - Отправляется в ответ на неверное сообщение (некорректный заголовок, контрольная сумма и т.п.), пришедшее от другой стороны.

Resend Request - Запрос повторной передачи сообщений в определённом интервале номеров. 

Sequence Reset - Используется при повторной пересылке для пропуска административных сообщений - Gap Fill mode. Используется для сброса счётчика номеров сообщений - Reset mode. Все сообщения могут передаваться в обоих направлениях.

Logon

Logout

Heartbeat

Получение сделок

TradeCaptureReportRequest

The optional date or time range-specific filter criteria (within NoDates <580> repeating group) can be used in one of two modes:

"Since" a time period. NoDates <580>=1 with first TradeDate <75> (and optional TransactTime <60>) indicating the "since" (greater than or equal to operation) point in time.

"Between" time periods. NoDates <580>=2 with first TradeDate <75> (and optional TransactTime <60>) indicating the "beginning" (greater than or equal to operation) point in time and the second TradeDate <75> (and optional TransactTime <60>) indicating the "ending" (less than or equal to operation) point in time.

Для подписки не передается TradeDate



ТэгПолеНаличиеТипОписаниеДопустимые значения

TradeRequestID
String


TradeRequestType


0 = All Trades

SubscriptionRequestType


0 = Snapshot

1 = Snapshot + Updates (Subscribe)

2 = Disable previous Snapshot + Update Request (Unsubscribe)


NoDatesНет
Количество переданных дат. Если передана одна дата, то вернуться сделки за эту дату, если передано две даты, то будет возвращены сделки за выбранный период включительно1 или 2
=>TradeDate



Ошибки

TradeCaptureReportAck

ТэгПолеНаличиеТипОписаниеДопустимые значения
568TradeRequestIDДаStringУникальный идентификатор запроса
569TradeRequestTypeДаIntТип запроса0 = All Trades
749TradeRequestResultДаIntРезультат запроса
750TradeRequestStatusДаIntСтатус запроса2
58TextДаString

Причины отклонения (TradeRequestResult)

КодТекстОписание
101Duplicate TradeRequestIDИдентификатор сообщения был использован ранее
8TradeRequestType={value} not supportedНедопустимое значение TradeRequestType
99Something went wrongНепредвиденная ошибка.

Результат

TradeCaptureReportAck

ТэгПолеНаличиеТипОписаниеДопустимые значения
568TradeRequestIDДаStringУникальный идентификатор запроса
569TradeRequestTypeДаIntТип запроса0 = All Trades
749TradeRequestResultДаIntРезультат запроса0
750TradeRequestStatusДаIntСтатус запроса

0 = Запрос принят

1 = Запрос выполнен

TradeCaptureReport

ТэгПолеНаличиеТипОписаниеДопустимые значения
571TradeReportIDДаStringУникальный идентификатор сделки в системе RuTerminal
487

TradeReportTransType

ДаIntТип отчета0 - New

TradeRequestIDДа


75TradeDateДаLocalMktDateДата регистрации сделки
60TransactTimeДаUTCTimestampВремя регистрации сделки в UTC.

MaturityDate




Currency

Валюта

SettlCurrency




LastPx

Цена

LastQty

Сумма сделки
150ExecType


0 - New
460Product


9 - MoneyMarket
167SecurityType


MM

Text




PriceType



11001RT_PRODUCT
RT_PRODUCTПродукт в нотации RuTerminal

Получение индикативных котировок

MarketDataRequest (35=V)

ТэгПолеНаличиеТипОписаниеДопустимые значения
262MDReqIDДаStringУникальный идентификатор запроса
263SubscriptionRequestTypeДаCharТип подписки

0 = Текущее значение

1 = Текущее значение + подписка на обновления

2 = Отписка от обновлений

263MarketDepthДаintГлубина запроса

1 = top of book

265MDUpdateTypeДаCharТип запрошенных обновлений1 = Частичное обновление
267NoMDEntryTypesДаintКоличество запрошенных полей

=>

269

MDEntryTypeДаintТип котировки

0 = Bid

1 = Offer

146NoRelatedSymДаintКоличество групп символов

=>

48

SecurityIDДаStringИдентификатор инструмента в схеме SecurityIDSourceRuTerminal. Instruments & Codes

=>

22

SecurityIDSourceДаStringСхема идентификаторов177 = HiHiClubCode
1070MDQuoteTypeДаint

Identifies market data quote type.

0 = Indicative

Parties



=>NoPartyIDs



==>PartyIDДа
Идентификатор источника котировок в схеме (PartyIDSource)
==>PartyIDSourceДа
Схема идентификаторов
==>PartyRoleДа
Роль источника

61 = Market data market

Ошибки

Формат ответа с ошибкой

MarketDataRequestReject

ТэгПолеНаличиеТипОписаниеДопустимые значения
262MDReqIDДаStringУникальный идентификатор запроса
281MDReqRejReasonДаStringПричина отклонения

Причины отклонения (MDReqRejReason)

КодТекстОписание
1Duplicate MDReqIDИдентификатор сообщения был использован ранее
0SecurityID={SecurityIDSource}(SecurityIDSource={SecurityIDSource}) Not foundНе найден интрумент
4SubscriptionRequestType={value} not supportedНедопустимое значение SubscriptionRequestType
5MarketDepth={value} not supportedНедопустимое значение MarketDepth
6MDUpdateType={value} not supportedНедопустимое значение MDUpdateType
8MDEntryType={value} not supportedНедопустимое значение MDEntryType

Результат

MarketDataSnapshotFullRefresh

ТэгПолеНаличиеТипОписаниеДопустимые значения
262MDReqIDДаStringИдентификатор запроса

NoMDEntries



=>SecurityIDДа
Идентификатор инструмента в системе SecurityIDSource
=>SecurityIDSourceДа
Тип источника идентификаторов
=>MDEntryTypeДа
Тип котировки

0 - Bid

1 - Offer

=>MDEntryPx

Цена
=>MDEntryDateДа
Дата котировки
=>MDEntryTimeДа
Время котировки
=>MDEntrySizeДа
Объем котирования

0 - Если предыдущая цена не актуальна

>0 - Объем котировки, на данный момент отправляется только 1

=>PriceTypeДа
Тип цены

Parties



=>NoPartyIDs



==>PartyIDДа
Идентификатор источника котировок в схеме (PartyIDSource)
==>PartyIDSourceДа
Схема идентификаторов
==>PartyRoleДа
Роль источника

61 = Market data market

MarketDataIncrementalRefresh

ТэгПолеНаличиеТипОписаниеДопустимые значения

MDReqID




NoMDEntries



=>SecurityID



=>SecurityIDSource



=>MDEntryType



=>

MDEntryPx





=>MDEntryDate



=>MDEntryTime



=>PriceType



=>

MDUpdateAction






Parties



=>NoPartyIDs



==>PartyIDДа
Идентификатор источника котировок в схеме (PartyIDSource)
==>PartyIDSourceДа
Схема идентификаторов
==>PartyRoleДа
Роль источника

61 = Market data market

Регистрация индикативных котировок

В разработке

Приемочные испытания

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

  1. Подключиться, создать сессию
  2. Получить сделку Fx
  3. Получить сделку FxSwap
  4. Получить сделку Dp
  5. Отключиться
  6. Подключиться, проверить что не сброшен счетчик


  • Нет меток