Skip to content
Last updated

1. Introduction


Xpansiv Marketplace Server API (rules of engagement) are based on FIX 4.4 specification and best practice guidelines as published by the FIX Trading Community. Unless specifically stated, field numbers, names, and data types are as published by the FIX specification. A full explanation of the FIX protocol is beyond the scope of portal, and therefore customers should refer to the FIX Trading Community for the full specification and guidelines.

This portal describes the supported administrative and application messages. Xpansiv Marketplace Server can support 3 distinct specialised session types configured on FIX Server side: Transaction, DropCopy and MarketData, or any combination. Each such session type supports the administrative and a subset of application messages described in this portal. Incoming messages that are not listed in this portal or are not supported by a specific session type will be rejected with a BusinessMessageReject (35=j). Malformed incoming messages will be rejected with a session level Reject (35=3). If a message listed in this specification is received with a tag that is not in the specification, the value of the field will be ignored. Xpansiv may include additional tags not listed in the standard specification in the messages sent to the counter parties as described in this portal.

All messages described in this portal, as defined in the FIX protocol, include standard header followed by the message body fields and terminated with a standard trailer.

Data types in the tables presented below follow the FIX protocol guidelines, however in some cases the length of String values is limited. As such, Xpansiv Marketplace Server will truncate long values in the incoming messages if their length exceeds the maximum size specified in parentheses below.

1.1. Standard Header

TagNameData typeRequiredComment
8BeginStringString(10)YIdentifies the beginning of new message and protocol version. Always first field in a message. Valid value: FIX.4.4
9BodyLengthLengthYMessage length (in bytes) forward to the CheckSum field. Always second field in a message.
35MsgTypeStringYDefines the message type. Always third field in a message.
49SenderCompIDString(60)YIdentifies the sender of the message.
56TargetCompIDString(60)YIdentifies the receiver of the message.
34MsgSeqNumSeqNumYMessage sequence number.
43PosDupFlagBooleanCRequired for retransmitted messages as a result of ResendRequest.
97PossResendBooleanCRequired when message may be duplicate of another message sent under different sequence number.
52SendingTimeTimeStampYTime of transmission in UTC.
122OrigSendingTimeTimeStampCRequired for messages sent as a result of ResendRequest. Time of original transmission in UTC.

1.2. Standard Trailer

TagNameData typeRequiredComment
10CheckSumStringYAlways the last field in a message, always defined as three characters.

2. Administrative messages


2.1. Logon request and acknowledgment

Bidirectional message, supported by all session types. A client initiates Logon request and FIX Server replies with Logon acknowledgment if a client is authorized. Only after receiving Logon acknowledgment a client may send appropriate administrative and application messages. Alternatively, depending on circumstances, if a client is not authorized, trading session is not ready, Logon request is malformed or message flow issues have been detected, FIX Server may send a Logout (35=5), Reject (35=3) or BusinessMessageReject (35=j) message with the description of a problem or simply terminate the connection.
Following FIX protocol guidelines, FIX Server accepts secondary Logon messages issued by clients with ResetSeqNumFlag set (141=Y) and MsgSeqNum set to 1 (34=1) during active FIX session. FIX Server will respond with similar Logon acknowledgement (141=Y and 34=1), thus both sides will continue with following messages carrying 35=2 and increasing. Secondary Logon messages issued by clients during active FIX session without required 141=Y and 34=1 will cause FIX Server to terminate the connection.

TagNameData typeRequiredComment
Standard HeaderY35=A
108HeartBtIntIntYHeartbeat interval in seconds set by the initiator and reflected by FIX Server.
98EncryptMethodIntYValid value: 0 (Not encrypted)
141ResetSeqNumFlagBooleanNValid values:
N - no (default value is the tag is not specified);
Y - yes, indicates both sides of a FIX session should reset sequence numbers to 1.
553UsernameString(200)CUsername of a client.
554PasswordString(40)CPassword associated with a client’s Username.
95RawDataLengthIntN
96RawDataDataN
58TextStringNFree format text string.
Standard TrailerY

2.2. Heartbeat

Bidirectional message, supported by all session types. The heartbeat interval is declared in the initial Logon (35=A) message sent by a client and is used by both parties.

TagNameData typeRequiredComment
Standard HeaderY35=0
---------------
112TestReqIDStringCRequired when the heartbeat is the result of a TestRequest (35=1). Reflects the identifier value set in the TestRequest.
---------------
Standard TrailerY
---------------
TagNameData typeRequiredComment
Standard HeaderY35=0
112TestReqIDStringCRequired when the heartbeat is the result of a TestRequest (35=1). Reflects the identifier value set in the TestRequest.
Standard TrailerY

2.3. TestRequest

Bidirectional message, supported by all session types. The TestRequest message forces a heartbeat from the opposing application. The opposite side responds to the TestRequest with a Heartbeat (35=0) message containing the initial TestReqID (112).

TagNameData typeRequiredComment
Standard HeaderY35=1
112TestReqIDStringYIdentifier of the TestRequest. To be returned in the Heartbeat (35=0) generated by counter party upon receipt of this TestRequest.
Standard TrailerY

2.4. ResendRequest

Bidirectional message, supported by all session types. The ResendRequest is sent by the receiving application to initiate the retransmission of messages if a sequence number gap is detected. The ResendRequest can be used to request a single message, a range of messages or all messages subsequent to a particular message.

TagNameData typeRequiredComment
Standard HeaderY35=2
7BeginSeqNoSeqNumYMsgSeqNum (34) of first message in a range to be resent.
16EndSeqNoSeqNumYMsgSeqNum (34) of last message in a range to be resent. Set EndSeqNo=0 if all messages subsequent to BeginSeqNo are required.
Standard TrailerY

2.5. Reject

Bidirectional message, supported by all session types. The Reject message should be issued when a message is received but cannot be properly processed due to a session-level rule violation. Standard defined values of SessionRejectReason (373) field describe such violations. Rejected messages should be logged and the incoming sequence number incremented.

TagNameData typeRequiredComment
Standard HeaderY35=3
45RefSeqNumSeqNumYMsgSeqNum (34) of rejected message.
371RefTagIDIntNThe tag number of the FIX field being referenced.
372RefMsgTypeStringNThe MsgType (35) of the message being referenced.
373SessionRejectReasonIntNCode to identify the reason for the session level Reject message.
58TextStringNFree format text string to explain the reason for rejection.
Standard TrailerY

2.6. SequenceReset

Bidirectional message, supported by all session types. The SequenceReset message has two modes depending on the value of GapFillFlag (123) field: Gap Fill mode (123=Y) and Reset mode (123=N or the tag is absent).
Gap Fill mode is used in response to a ResendRequest (35=2) when sending application chooses not to send a message or a continuous group of messages (such as administrative messages, aged orders, etc).
Reset mode involves specifying an arbitrarily higher new sequence number to be expected by the receiver of the SequenceReset message, and is used to reestablish a FIX session after an unrecoverable application failure to recover from an out-of-sequence condition and should not generate resend requests.
The SequenceReset message can only increase the sequence number. If a SequenceReset is received attempting to decrease the next expected sequence number the message should be rejected and treated as a serious error.

TagNameData typeRequiredComment
Standard HeaderY35=4
123GapFillFlagBooleanNIndicates that the SequenceReset message is replacing administrative or application messages, which which will not be resent.
Valid values:
N - sequence reset, ignore MsgSeqNum (34);
Y - gap fill message, MsgSeqNum (34) field is valid.
36NewSeqNumSeqNumYNew sequence number.
Standard TrailerY

2.7. Logout

Bidirectional message, supported by all session types. The Logout message initiates or confirms the termination of a FIX session.

TagNameData typeRequiredComment
Standard HeaderY35=5
58TextStringNFree format text string.
Standard TrailerY

2.8. BusinessMessageReject

Bidirectional message, supported by all session types. The BusinessMessageReject should be issued when a message is received but cannot be processed due to a business-level rule violation. Standard defined values of BusinessRejectReason (380) field describe such violations. Rejected messages should be logged and the incoming sequence number incremented.

TagNameData typeRequiredComment
Standard HeaderY35=j
45RefSeqNumSeqNumNMsgSeqNum (34) of rejected message.
372RefMsgTypeStringYThe MsgType (35) of the message being referenced.
380BusinessRejectReasonIntYCode to identify the reason for the BusinessRejectReject message.
379BusinessRejectRefIDStringNThe value of the business level “ID” field on the message being referenced.
58TextStringNFree format text string to explain the reason for rejection.
Standard TrailerY

3. Application messages


3.1. NewOrderSingle

The message is initiated by a client wishing to submit an order and applicable only to a session configured as a Transaction session type.

TagNameData typeRequiredComment
Standard HeaderY35=D
11ClOrdIDString(60)YUnique identifier for the order as assigned by a client. The allowed max length is 60 chars.
1AccountString(40)NAccount mnemonics as agreed between trading parties.
55SymbolStringYTicker symbol.
54SideCharYSide of the order.
Valid values:
1 - Buy;
2 - Sell.
60TransactTimeTimeStampYTime the order was initiated by a client in UTC.
38OrderQtyQtyYTotal order quantity.
40OrderTypeCharYOrder type.
Valid values:
1 - Market;
2 - Limit.
44PricePriceCPrice per unit quantity.
Required for Limit orders (40=2). The value is ignored if present for Market orders.
423PriceTypeIntNCode to represent the price type.
Valid value:
2 - Per unit (i.e. per share or contract)
59TimeInForceCharNSpecifies how long the order remains in effect. Absence of the field is interpreted as Day (0).
Valid values:
0 - Day;
1 - Good Till Cancel (GTC);
3 - Immediate or Cancel (IOC);
4 - Fill or Kill (FOK);
6 - Good Till Date (GTD).Note: Xpansiv Marketplace Trading Engine considers all Market orders as a FOK (59=4) and ignores TimeInForce value in NewOrderSingle and OrderCancelReplace messages with 40=1.
126ExpireTimeTimeStampCDate/time of order expiration (UTC). Required if TimeInForce is GTD (59=6) and ExpireDate (432) is not present in the message.
432ExpireDateLocalMktDateCThe date of order expiration (local market date). Required if TimeInForce is GTD (59=6) and ExpireTime (126) is not present in the message.
110MinQtyQtyNMinimum quantity of the order to be executed.
111MaxFloorQtyNMaximum quantity within the order to be shown on the exchange at any given time.
453NoPartyIDsNumInGroupNNumber of repeating group entries.
448PartyIDString(20)CIdentifies the party. Required when NoPatryIDs (453) > 0 and PartyIDSource (447) is specified and must be the first field in this group.
447PartyIDSourceCharNIdentifies the class or source of the PartyID (448) value.
Valid value: D - Proprietary.
452PartyRoleIntNThe role of the party in the transaction.
Standard TrailerY

3.2. OrderCancelRequest

The message is initiated by a client wishing to cancel all of the remaining quantity of previously submitted order and applicable only to a session configured as a Transaction session type.

TagNameData typeRequiredComment
Standard HeaderY35=F
41OrigClOrdIDString(60)YClOrdID (11) of the previous non-rejected order (NOT the initial order of the day).
37OrderIDStringNUnique identifier for the order as assigned by Xpansiv Marketplace.
11ClOrdIDString(60)YUnique ID of this OrderCancelRequest as assigned by a client.
54SideCharYThis tag is required to comply with the FIX protocol. The value is ignored.
38OrderQtyQtyYThis tag is required to comply with the FIX protocol. The value is ignored.
55SymbolStringYThis tag is required to comply with the FIX protocol. The value is ignored.
60TransactTimeTimeStampYTime this OrderCancelRequest was initiated by a client.
Standard TrailerY

3.3. OrderCancelReplaceRequest

The message is initiated by a client wishing to change the parameters of previously submitted order and applicable only to a session configured as a Transaction session type.

TagNameData typeRequiredComment
Standard HeaderY35=G
41OrigClOrdIDString(60)YClOrdID (11) of the previous non-rejected order (NOT the initial order of the day).
37OrderIDStringNUnique identifier for the order as assigned by Xpansiv Marketplace.
11ClOrdIDString(60)YUnique ID of this OrderCancelReplaceRequest as assigned by a client.
1AccountString(40)NAccount mnemonics as agreed between trading parties.
55SymbolStringYTicker symbol.
54SideCharYSide of the order.
Valid values:
1 - Buy;
2 - Sell.
38OrderQtyQtyNTotal intended order quantity, including the amount already executed for this chain of orders.
40OrdTypeCharYOrder type.
Valid values:
1 - Market;
2 - Limit.
60TransactTimeTimeStampYTime this OrderCancelReplaceRequest was initiated by a client.
44PricePriceNPrice per unit quantity. Required for Limit orders (40=2).
59TimeInForceCharNSpecifies how long the order remains in effect. Absence of the field is interpreted as Day (0).Note: Xpansiv Marketplace Trading Engine considers all Market orders as a FOK (59=4) and ignores TimeInForce value in NewOrderSingle and OrderCancelReplace messages with 40=1.
126ExpireTimeTimeStampCDate/time of order expiration (UTC). Required if TimeInForce is GTD (59=6) and ExpireDate (432) is not present in the message.
432ExpireDateLocalMktDateCThe date of order expiration (local market date). Required if TimeInForce is GTD (59=6) and ExpireTime (126) is not present in the message.
110MinQtyQtyNMinimum quantity of the order to be executed.
111MaxFloorQtyNMaximum quantity within the order to be shown on the exchange at any given time
453NoPartyIDsNumInGroupNNumber of repeating group entries.
448PartyIDString(20)CIdentifies the party. Required when NoPatryIDs (453) > 0 and PartyIDSource (447) is specified and must be the first field in this group.
447PartyIDSourceCharNIdentifies the class or source of the PartyID (448) value.
Valid value: D - Proprietary.
452PartyRoleIntNThe role of the party in the transaction.
Standard TrailerY

3.4. OrderCancelReject

The message is issued by the exchange upon receipt of a OrderCancelRequest (35=F) or OrderCancelReplaceRequest (35=G) message which cannot be honoured and applicable only to a session configured as a Transaction session type.

TagNameData typeRequiredComment
Standard HeaderY35=9
37OrderIDStringYUnique identifier as assigned by Xpansiv Marketplace if available, otherwise “NONE”
11ClOrdIDString(60)YThe value of ClOrdID (11) referred in the corresponding OrderCancelRequest (35=F) or OrderCancelReplaceRequest (35=G).
41OrigClOrdIDString(60)YThe value of OrigClOrdID (41) referred in the corresponding OrderCancelRequest (35=F) or OrderCancelReplaceRequest (35=G)
39OrdStatusCharYThe current state of the order when applicable.
For unknown orders the value is: 8 - Rejected.
434CxlRejResponceToCharYIdentifies the type of request that OrderCancelReject is in response to.
Valid values:
1 - OrderCancelRequest (35=F);
2 - OrderCancelReplaceRequest (35=G).
102CxlRejReasonIntNCode to identify reason for cancel rejection.
58TextStringNFree format text string to explain the reason for rejection.
Standard TrailerY

3.5. OrderStatusRequest

The message is issued by institution to generate an ExecutionReport (35=8) message with current order status back from the exchange. This request applicable only to a session configured as a Transaction session type.

TagNameData typeRequiredComment
Standard HeaderY35=H
37OrderIDStringCUnique identifier as assigned by Xpansiv Marketplace.
Note: at least one of the tags OrderID (37) or ClOrdID (11) must be provided in the request.
11ClOrdIDString(60)CUnique identifier for the order as assigned by a client.
Required for electronically submitted orders.
Note: at least one of the tags OrderID (37) or ClOrdID (11) must be provided in the request.
790OrderStatusReqIDStringNOptional, can be used to identify a specific OrderStatusRequest message. Echoed back on ExecutionReport (35=8) if provided.
55SymbolStringYTicker symbol.
54SideCharYSide of the order.
Valid values:
1 - Buy;
2 - Sell.
Standard TrailerY

3.6. OrderMassStatusRequest

The message requests the status of orders matching criteria specified withing request.
ExecutionReport (35=8) messages with ExecType (150=”current order status on the moment of receiving this request”). This request applicable only to a session configured as a Transacti session type .

TagNameData typeRequiredComment
Standard HeaderY35=AF
584MassStatusReqIDStringYUnique ID as assigned by institution to identify a specific OrderMassStatusReques message. Echoed back on series of ExecutionReport (35=8) messages in response.
585MassStatusReqTypeYSpecifies the scope of the OrderMassStatusReques message.
Supported values are:
1 - status for all active orders for a security. Symbol (55) field must be present in the message in such case. Side (54) field is accounted if it is present in the request;
7 - status for all active orders. Symbol (55) and Side (54) fields are accounted as filters if they are present in the request.
55SymbolStringCTicker symbol. Required when 585=1 (see above).
54SideCharNSide of the order.
Valid values:
1 - Buy;
2 - Sell.
Standard TrailerY

3.7. ExecutionReport

The message is issued by the exchange to convey the current state of submitted order and applicable only to a session configured as a Transaction or DropCopy session type.
Each execution report contains two fields which are used to communicate the current state of the order: OrdStatus (39) and the purpose of the message: ExecType (150).

TagNameData typeRequiredComment
Standard HeaderY35=8
37OrderIDStringYUnique identifier as assigned by Xpansiv Marketplace. For rejected orders returns value of ClOrdID (11)
11ClOrdIDString(60)CUnique identifier for the order as assigned by a client.
Required for electronically submitted orders.
41OrigClOrdIDString(60)CClOrdID (11) of the previous order. Provided in response to a OrderCancelRequest (35=F) or OrderCancelReplaceRequest (35=G) messages.
790OrdStatusReqIDStringCRequired in response on OrderStatusRequest (35=H) if provided in the request.
584MassStatusReqIDStringCRequired in response on OrderMassStatusRequest (35=AF) message.
911TotNumReportsIntCWill be used in response on OrderMassStatusRequest (35=AF) message to identify the total number of ExecutionReport messages which will be returned.
912LastRptRequestedBooleanCWill be used in response on OrderMassStatusRequest (35=AF) message to indicate (912=Y) that this is the last ExecutionReport message which will be returned.
17ExecIDStringYUnique identifier of execution message as assigned by Xpansiv Marketplace.
If ExecutionReport was issued as a reply on OrderStatusRequest (35=H) or OrderMassStatusRequest (35=AF), then the value of this tag is “0”.
150ExecTypeCharYIs used to identify the purpose of the ExecutionReport.
If ExecutionReport was issued as a reply on OrderStatusRequest (35=H) or OrderMassStatusRequest (35=AF), then the value of this tag is “I”.
39OrdStatusCharYIs used to convey the current state of the order.
103OrdRejReasonIntNCode to identify the reason for order rejection.
54SideCharYSide of the order.
Valid values:
1 - Buy;
2 - Sell.
31LastPxPriceCThe price of this trade. Required if ExecType = Trade (150=F).
32LastQtyQtyCThe quantity bought/sold on this trade. Required if ExecType = Trade (150=F).
151LeavesQtyQtyYThe quantity open for further execution.
14CumQtyQtyYCurrently executed quantity for the order.
6AvgPxPriceYCalculated average price of all fills on this order.
453NoPartyIDsNumInGroupNNumber of repeating group entries.
448PartyIDString(20)CIdentifies the party. Required when NoPatryIDs (453) > 0 and PartyIDSource (447) is specified and must be the first field in this group.
447PartyIDSourceCharNIdentifies the class or source of the PartyID (448) value.
Valid value: D - Proprietary.
452PartyRoleIntNThe role of the party in the transaction.
198SecondaryOrderIDString(20)NCan be used to provide additional order info by executing system (MarketGrid Order.Reference).
527SecondaryExecIDString(20)NCan be used to provide additional trade info by executing system (MarketGrid Trade.Reference).
382NoContraBrokersNumInGroupNNumber of repeating group entries.
375ContraBrokerString(20)NCan be used to provide additional trade info by executing system (MarketGrid Trade.CounterPartyMpId).
Required if NoContraBroker (382) > 0
1AccountString(40)NAccount supplied on the order.
660AcctIDSourceIntNValid value: 99 - Other.
63SettlTypeCharNIndicated order settlement period.
55SymbolStringYTicker symbol.
854QtyTypeIntNType of quantity specified in a quantity field.
Valid value:
0 - Units (shares, par, currency).
231ContractMultiplierFloatCSpecifies the ratio or multiply factor to convert from “nominal” units to total units.
Required if QtyType 854=1.
38OrderQtyQtyNTotal order quantity.
423PriceTypeIntNCode to represent the price type.
Valid value:
2 - Per unit (i.e. per share or contract)
44PricePriceCPrice per unit of quantity. Required if present on the order.
1057AggressorIndicatorBooleanNThis value represents if the record is the aggressor.
Valid values:
Y - yes;
N - no.
40OrderTypeCharNMirrors the value provided in the NewOrderSingle.
59TimeInForceCharNMirrors the value provided in the NewOrderSingle for Limit orders.The tag is not present in the ExecutionReport for Market orders, because Xpansiv Marketplace Trading Engine considers all Market orders as a FOK and ignores TimeInForce value.
126ExpireTimeTimeStampCDate/time of order expiration (UTC). Required if TimeInForce is GTD (59=6) and ExpireDate (432) is not present in the message.
432ExpireDateLocalMktDateNThe date of order expiration (local market date). Required if TimeInForce is GTD (59=6) and ExpireTime (126) is not present in the message.
75TradeDateLocalMktDateNIndicates date of trade referenced in this message in YYYYMMDD format. Absence of the field indicates current day.
60TransactTimeTimeStampNTime this ExecutionReport was initiated by Xpansiv Marketplace.
381GrossTradeAmtAmtNTotal amount traded (e.g. CumQty (14) * AvgPx (6)) expressed in units of currency.
119SettlCurrAmtAmtNTotal amount due expressed in settlement currency.
120SettlCurrencyCurrencyNCurrency code of settlement denomination.
155SettlCurrFxRateFloatNForeign exchange rate used to compute SettlCurrAmt (119) from Currency (15) to SettlCurrency (120)
156SettlCurrFxRateCalsCharNSpecifies whether or not SettlCurrFxRate (155) should be multiplied or divided.
Valid values:
M - Multiply;
D - Divide.
110MinQtyQtyNMinimum quantity of the order to be executed.
111MaxFloorQtyNMaximum quantity within the order to be shown on the exchange at any given time.
136NoMiscFeesNumInGroupNNumber of repeating group entries of miscellaneous fees.
137MiscFeeAmtAmtCMiscellaneous fee value. Required if NoMiscFees > 0 and must be the first field in this group.
138MiscFeeCurrCurrencyNCurrency code of miscellaneous fees.
139MiscFeeTypeIntNIndicates type of miscellaneous fees.
Standard TrailerY

3.8. SecurityListRequest

The message is used by a client to request a list of available securities from the exchange and applicable to all session types.

TagNameData typeRequiredComment
Standard HeaderY35=x
320SecurityReqIDStringYUnique identifier of the request.
559SecurityListRequestTypeIntYIdentifies the type/criteria of the request.
This tag is required to comply with the FIX protocol. The value is ignored and considered as: 4 - All Securities.
Standard TrailerY

3.9. SecurityList

The message is used by the exchange to return a list of available securities requested by a client in a SecurityListRequest (35=x) and applicable to all session types.

TagNameData typeRequiredComment
Standard HeaderY35=y
320SecurityReqIDStringYThe identifier provided by a client in the original SecurityListRequest (35=x).
322SecurityResponseIDStringYIdentifier of the SecurityList message.
560SecurityListResultIntYThe result returned to a SecurityListRequest (35=x).
393TotNoRelatedSymIntNTotal number of securities.
893LastFragmentBooleanNIndicates whether this message is the last in a sequence of fragments.
Valid values:
Y - Last message;
N - Not last message.
146NoRelatedSymIntNSpecifies the number of repeating group symbols (instruments) in this fragment.
55SymbolStringCTicker symbol. Required if NoRelatedSym (146) > 0 and must be the first field in this group.
48SecurityIDStringNSecurity identifier value.
22SecurityIDSourceStringCRequired when SecurityID (48) is specified.
Valid value:
8 - Exchange Symbol
460ProductIntNIndicates the type of product the security is associated with.
167SecurityTypeStringNIndicates the type of security.
Standard TrailerY

3.10. SecurityTypeRequest

The message is used by a client to request a list of available security types from the exchange and applicable to all session types.

TagNameData typeRequiredComment
Standard HeaderY35=v
320SecurityReqIDStringYUnique identifier of the request.
Standard TrailerY

3.11. SecurityTypes

The message is used by the exchange to return a list of available security types requested by a client in a SecurityTypeRequest (35=v) and applicable to all session types.

TagNameData typeRequiredComment
Standard HeaderY35=w
320SecurityReqIDStringYThe identifier provided by a client in the original SecurityTypeRequest (35=v).
322SecurityResponseIDStringYIdentifier of the SecurityTypes message.
323SecurityResponseTypeIntYThe result of the security request identified by SecurityReqID (320).
557TotNoSecurityTypesintNTotal number of security types.
893LastFragmentBooleanNIndicates whether this message is the last in a sequence of fragments.
Valid values:
Y - Last message;
N - Not last message.
558NoSecurityTypesIntNNumber of Security Type repeating group instances.
167SecurityTypeStringCIndicates type of security. Required if NoSecurityTypes (558) > 0 and must be the first field in this group.
762SecuritySubTypeStringNSub-type qualification/identification of the SecurityType (167).
460ProductIntNIndicates the type of product the security is associated with.
Standard TrailerY

3.12. MarketDataRequest

The message is used by a client to request a current state of market data snapshot or/and subscribe to real-time market data updates from the exchange and applicable only to a session configured as a MarketData session type.

TagNameData typeRequiredComment
Standard HeaderY35=V
262MDReqIDStringYMust be unique, or the ID of previous MarketDataRequest if SubscriptionRequestType (263) equals '2' (Disable previous Snapshot plus Updates request).
263SubscriptionRequestTypeCharYValid values:
0 - Snapshot;
1 - Snapshot plus Updates;
2 - Disable previous Snapshot plus Updates request (unsubscribe).
264MarketDepthIntYValid values:
0 - Full Book;
1 - Top of the Book;
N - Report best N price tiers of the Book.
Note: Xpansiv Marketplace Server has a configuration option to limit max value of market depth sent to clients. In this case, requested Full Book (264=0) will be capped by this limit, otherwise the MarketDataRequest will be rejected with MarketDataRequestReject (35=Y) message if requested MarketDepth value exceeds the limit set up by the exchange.
265MDUpdateTypeIntCRequired when SubscriptionRequestType (263) equals '1' (Snapshot plus Updates).
Valid values:
0 - Full Refresh;
1 - Incremental Refresh.
266AggregatedBookBooleanNValid value:
Y - one book entry per side per price.
Note: multiple entries per side per price (266=N) are not supported, the message will be rejected.
547MDImplicitDeleteBooleanNDefines what side is responsible for deleting bids or offers (order book levels) falling outside of requested/capped MarketDepth (264). Can be used when MarketDepth (264) > 1 and MDUpdateType (265) = 1 (Incremental Refresh), in other cases the value of this tag is ignored.
Defaults to 547=Y.
Valid values:
Y - Client has responsibility for implicitly deleting such levels;
N - Server must send an explicit delete for such levels.
267NoMDEntryTypesIntYNumber of MDEntryType (269) fields in the repeating group.
269MDEntryTypeCharYType of market data entry.
Valid values:
0 - Bid;
1 - Offer;
2 - Trade;
4 - Opening Price;
5 - Closing Price:
7 - Trading Session High Price;
8 - Trading Session Low Price:
B - Trade Volume.
Note: other possible values are not supported and will be ignored by the server.
146NoRelatedSymIntYNumber of symbols (instruments) requested.
55SymbolStringYTicker symbol.
Standard TrailerY

3.13. MarketDataRequestReject

The message may be sent by the exchange in response to MarketDataRequest (35=V) indicating it cannot be honoured and applicable only to a session configured as a MarketData session type.

TagNameData typeRequiredComment
Standard HeaderY35=Y
262MDReqIDStringYRefers to the value of MDReqID (262) in the original MarketDataRequest (35=V).
281MDReqRejReasonCharNReason for the rejection of a MarketDataRequest (35=V).
58TextStringNFree format text string to explain the reason for rejection.
Standard TrailerY

3.14. MarketDataSnapshotFullRefresh

The message is issued by the exchange in response to MarketDataRequest (35=V) and applicable only to a session configured as a MarketData session type.

TagNameData typeRequiredComment
Standard HeaderY35=W
262MDReqIDStringYRefers to the value of MDReqID (262) in the original MarketDataRequest (35=V).
55SymbolStringYTicker symbol.
268NoMDEntriesIntYNumber of market data entries in the repeating group.
269MDEntryTypeCharYType of market data entry. Must be the first field in this group.
Valid values:
0 - Bid;
1 - Offer;
2 - Trade;
4 - Opening Price;
5 - Closing Price:
7 - Trading Session High Price;
8 - Trading Session Low Price:
B - Trade Volume.
270MDEntryPxPriceCPrice (44) of the market data entry.
Required when MDEntryType (269) is not Trade Volume ('B').
271MDEntrySizeQtyCQuantity (53) or volume represented by the market data entry.
Required when MDEntryType (269) is a Bid ('0'), Offer ('1'), Trade ('2') or Trade Volume ('B').
272MDEntryDateUTCDateOnlyNDate of market data entry.
Actual if MDEntryType (269) is an Opening Price ('4') or Closing Price ('5').
273MDEntryTimeUTCTimeOnlyNTime of market data entry.
Actual if MDEntryType (269) is a Trade ('2').
290MDEntryPositionNoIntNDisplay position of a bid or offer, numbered from most competitive to least competitive, per market side, beginning with 1.
Actual if MDEntryType (269) is a Bid ('0') or Offer ('1').
346NumberOfOrdersIntNIn an Aggregated Book shows how many individual orders make up a market data entry.
Actual if MDEntryType (269) is a Bid ('0') or Offer ('1').
58TextStringNCan appear in the group entry to identify the source of the data (applicable only to order book entries: Bid or Offer).
336TradingSessionIDStringNCan appear in the group entry to identify trading session status.
Standard TrailerY

3.15. MarketDataIncrementalRefresh

The message is issued by the exchange in response to MarketDataRequest (35=V) and applicable only to a session configured as a MarketData session type.

TagNameData typeRequiredComment
Standard HeaderY35=X
262MDReqIDStringYRefers to the value of MDReqID (262) in the original MarketDataRequest (35=V).
268NoMDEntriesIntYNumber of market data entries in the repeating group.
279MDUpdateActionCharYType of market data update action. Must be the first field in this group.
Valid values:
0 - New;
1 - Change;
2 - Delete.
269MDEntryTypeCharYType of market data entry.
Valid values:
0 - Bid;
1 - Offer;
2 - Trade;
4 - Opening Price;
5 - Closing Price:
7 - Trading Session High Price;
8 - Trading Session Low Price:
B - Trade Volume.
55SymbolStringCTicker symbol.
Note: the instrument symbol is identified only for first market data entry
270MDEntryPxPriceCPrice (44) of the market data entry.
Required when MDEntryType (269) is not Trade Volume ('B').
271MDEntrySizeQtyCQuantity (53) or volume represented by the market data entry.
Required when MDEntryType (269) is a Bid ('0'), Offer ('1'), Trade ('2') or Trade Volume ('B').
273MDEntryTimeUTCTimeOnlyNTime of market data entry.
Actual if MDEntryType (269) is a Trade ('2').
290MDEntryPositionNoIntNDisplay position of a bid or offer, numbered from most competitive to least competitive, per market side, beginning with 1.
Actual if MDEntryType (269) is a Bid ('0') or Offer ('1').
346NumberOfOrdersIntNIn an Aggregated Book shows how many individual orders make up a market data entry.
Actual if MDEntryType (269) is a Bid ('0') or Offer ('1').
58TextStringNCan appear in the group entry to identify the source of the data (applicable only to order book entries: Bid or Offer).
336TradingSessionIDStringNCan appear in the group entry to identify trading session status.
54SideCharNCan appear in the group entry with 269=2 (trade) to identify an aggressor.
Valid values:
1 - Buy;
2 - Sell.
Standard TrailerY