35=XMarket Data Incremental Refresh (35=X)
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 IDnoMDEntries(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 removedmdEntryType(269):0= Bid,1= Offersymbol(55): Product symbolmdEntryPx(270): Price levelmdEntrySize(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
| Tag | Field | Required | Description |
|---|---|---|---|
| 262 | MDReqID | Required | Required. Subscription request ID. |
| 268 | NoMDEntries | Required | Required. Number of updates in this message. |
| MDEntry Updates | GroupRequired | ||
| 279 | MDUpdateAction | Required | Required. |
| 269 | MDEntryType | Required | Required. |
| 55 | Symbol | Required | Required. Product symbol. |
| 270 | MDEntryPx | Required | Required. Price level. |
| 271 | MDEntrySize | Optional | Conditional. New size for New/Change; omitted on Delete ( |
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|