Skip to content

Market Data

After connecting to the FIX server and establishing a live quoting session, the client can send a Market Data Request to subscribe to quote updates streamed by xPro.

On successful subscription, the FIX server sends an initial Market Data — Snapshot/Full Refresh and then continues to push Market Data — Incremental Refresh messages for the duration of the session.

If a subscription request cannot be executed (for example, the symbol is not found), the FIX server responds with a Market Data Request Reject message.

To terminate a subscription, send a Market Data Request with <263> SubscriptionRequestType = 2 (Unsubscribe). Logout closes the session and terminates all active subscriptions.

Sent by the client to start receiving quoting data for a specified ticker symbol.

TagNameReq’dDatatypeDescription
Standard HeaderYMsgType = V
262MDReqIDYStringUnique request identifier. If SubscriptionRequestType = 2, this is the ID of the previous request to discard.
263SubscriptionRequestTypeYint1 — Subscribe. 2 — Unsubscribe.
264MarketDepthYint0 — Full order book. 1 — Top-of-book only.
265MDUpdateTypeYintMust always be 1 (incremental updates for changed price levels only).
267NoMDEntryTypesYintNumber of <269> MDEntryTypes requested.
→ 269MDEntryTypeYintSide: 0 — Bid, 1 — Ask.
146NoRelatedSymYintNumber of symbols in this subscription. Must always be 1.
→ 55SymbolYStringMarket identifier: {marketType}.{baseAssetId}_{quoteAssetId}. Example: cfd.eth_eur.
Standard TrailerY
8=FIX.4.4^9=136^35=V^34=7^52=20231220-08:11:50.000^49=sender_xpro_quoting^56=target_xpro_quoting^262=1235^263=1^264=0^265=1^267=1^269=1^146=1^55=spot.btc_usdt^10=241^

Sent by the FIX server after the client subscribes to a symbol. Subsequent messages will be Incremental Refreshes containing only changes since the snapshot.

TagNameReq’dDatatypeDescription
Standard HeaderYMsgType = W
55SymbolYStringMarket identifier: {marketType}.{baseAssetId}_{quoteAssetId}.
262MDReqIDYStringIdentifier of the originating Market Data Request.
268NoMDEntriesYintNumber of market data entries following. 0 if order book is empty.
→ 269MDEntryTypeCintSide: 0 — Bid, 1 — Ask. Required if NoMDEntries != 0.
→ 270MDEntryPxCPricePrice of the market data entry. Required if NoMDEntries != 0.
→ 271MDEntrySizeCQtyTradable volume. Required if NoMDEntries != 0.
→ 278MDEntryIDCStringUnique market data entry identifier. Required if NoMDEntries != 0.
Standard TrailerY
8=FIX.4.4^9=502^35=W^34=48^49=cServer^50=QUOTE^52=20231222-14:40:39.983^56=demo.xpro.5010634^57=QUOTE^55=spot.btc_usdt^268=9^269=1^270=1.10338^271=3000000^278=4441516524^269=1^270=1.10337^271=1000000^278=4441516521^269=0^270=1.10333^271=500000^278=4441516520^10=036^

Continuously sent by the FIX server after the initial Snapshot. Each message contains only the changes since the previous update.

TagNameReq’dDatatypeDescription
Standard HeaderYMsgType = X
55SymbolYStringMarket identifier: {marketType}.{baseAssetId}_{quoteAssetId}.
262MDReqIDYStringIdentifier of the originating Market Data Request.
268NoMDEntriesYintNumber of market data entries. 0 if order book is empty.
→ 269MDEntryTypeCintSide: 0 — Bid, 1 — Ask. Required if NoMDEntries != 0.
→ 270MDEntryPxCPricePrice of the market data entry. Required if NoMDEntries != 0.
→ 271MDEntrySizeCQtyTradable volume. Required if NoMDEntries != 0.
→ 278MDEntryIDCStringUnique entry ID. Must be unique if MDUpdateAction = 0 (New). Must match the previous ID if = 1 (Change) or = 2 (Delete).
→ 279MDUpdateActionCint0 — New, 1 — Update, 2 — Delete. Required if NoMDEntries != 0.
58TextNStringAdditional information, if applicable.
Standard TrailerY

Sent by the FIX server to reject a Market Data Request due to business or technical reasons.

TagNameReq’dDatatypeDescription
Standard HeaderYMsgType = Y
262MDReqIDYStringIdentifier of the rejected Market Data Request.
281MDReqRejReasonNintReason the request was rejected. See Reject reasons.
58TextNStringDetailed information about the rejection reason.
Standard TrailerY
8=FIX.4.4^9=124^35=Y^34=3^49=target_xpro_quoting^52=20231221-10:25:11.849^56=sender_xpro_quoting^262=1234^58=symbol 'btcusd' is not supported^10=109^
CodeMeaning
0Symbol not recognized
1Duplicate <262> MDReqID
2Insufficient bandwidth
3Insufficient permissions
4SubscriptionRequestType not supported
5MarketDepth not supported
6MDUpdateType not supported
8MDEntryType not supported

Sent by the FIX server for a business-level rejection not addressed by the standard Market Data Request Reject.

TagNameReq’dDatatypeDescription
Standard HeaderYMsgType = j
45RefSeqNumYintSequence number of the rejected message (<34> MsgSeqNum).
372RefMsgTypeNintType of the rejected message (<35> MsgType).
380BusinessRejectReasonYintReason the request was rejected. See Reject reasons.
58TextNStringDetailed information about the rejection reason.
Standard TrailerY
8=FIX.4.4^9=100^35=j^34=2^49=XCD197^52=20231219-22:30:39.617^56=Q005^45=133^58=Unsupported Message Type^372=D^380=3^10=006^
CodeMeaning
0Other
1Unknown ID
2Unknown Security
3Unsupported <35> MsgType
4Application not available
5Conditionally required field missing
6Not authorized
7DeliverTo firm not available at this time