FIXMarket Data FIX

GET

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.

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|

Responses

200
Orderbook updates for changed levels.

Response Body

object

MarketDataIncrementalRefresh (35=X). Server → client (~300 ms cycle). Changed levels only. Tag 83 (RptSeq) is not present. Use session MsgSeqNum (34) for gap detection; on gap, resubscribe with 263=1.
  • mdReqID string required
    Required. Subscription request ID.
  • noMDEntries integer required
    Required. Number of updates in this message.
  • mdUpdates array of objects required
    mdUpdates object
    • mdUpdateAction string enum required
      Required. 0 New, 1 Change, 2 Delete.
      012
    • mdEntryType string enum required
      Required. 0 Bid, 1 Offer.
      01
    • symbol string required
      Required. Product symbol.
    • mdEntryPx string required
      Required. Price level.
    • mdEntrySize string
      Conditional. New size for New/Change; omitted on Delete (279=2).