FIXMarket Data FIX

FIXMsgType 35=X
FIX 4.4 Gateway TLS/TCP

The server sends MarketDataIncrementalRefresh (35=X) to the client over TLS/TCP. This is not an HTTP response.

Sent on each orderbook update cycle (~300 ms) when prices or quantities change. Only changed levels are included in the message.

Fields:

  • mdReqID (262): Your subscription request ID
  • noMDEntries (268): Number of updates in this message
  • MDEntry Repeating Group (one entry per changed level):
    • mdUpdateAction (279): 0 = New level, 1 = Size changed, 2 = Level removed
    • mdEntryType (269): 0 = Bid, 1 = Offer
    • symbol (55): Product symbol
    • mdEntryPx (270): Price level
    • mdEntrySize (271): New size (only for New/Changed actions; omitted for removals)

Gap Detection: Tag 83 (RptSeq) is not present on incremental updates. Use session-level MsgSeqNum (tag 34) for gap detection. QuickFIX manages this automatically. On detected gap, resubscribe with SubscriptionRequestType=1 to receive a fresh snapshot.

Message fields

TagFieldRequiredDescription
262 MDReqID Required

Required. Subscription request ID.

268 NoMDEntries Required

Required. Number of updates in this message.

MDEntry Updates GroupRequired
279 MDUpdateAction Required

Required. 0 New, 1 Change, 2 Delete.

269 MDEntryType Required

Required. 0 Bid, 1 Offer.

55 Symbol Required

Required. Product symbol.

270 MDEntryPx Required

Required. Price level.

271 MDEntrySize Optional

Conditional. New size for New/Change; omitted on Delete (279=2).

Examples

Example — Bid changed, offer removed (pipe-delimited FIX body tags):

35=X|262=md-req-001|268=2|279=1|269=0|55=BTC-USD|270=45100.00|271=0.8|279=2|269=1|55=BTC-USD|270=45105.00|