Market Data Subscription
1. Send Logon message with valid credentials.
2. Receive LogonResult with result_code='SUCCESS'.
3. Send InformationRequest with symbol_resolution_request for symbol=’F.US.ZUC’.
4. Receive InformationReport with SymbolResolutionReport with status_code=’SUCCESS’ and contract_metadata for the symbol.
5. Send MarketDataSubscription with level=’TRADES’ with contract_id from step 4.
6. Receive MarketDataSubscriptionStatus with status_code=’SUCCESS’, level=Trades, and RealTimeMarketData with is_snapshot = true. Check displaying of trade, settlement and MarketValues.
7. Send MarketDataSubscription with level= ‘TRADES_BBA’.
8. Receive MarketDataSubscriptionStatus with status_code=’SUCCESS’ and level= TRADES_BBA, and RealTimeMarketData with is_snapshot=true. Check displaying of trade, best bid, best ask, settlement and MarketValues.
9. Send MarketDataSubscription with level= ‘TRADES_BBA_VOLUMES’.
10. Receive MarketDataSubscriptionStatus with status_code=’SUCCESS’ and level=TRADES_BBA_VOLUMES, and RealTimeMarketData with is_snapshot=true. Check displaying of trade, best bid, best ask, settlement, volumes and MarketValues.
11. Send MarketDataSubscription with level= ‘TRADES_BBA_DOM’.
12. Receive MarketDataSubscriptionStatus with status_code=’SUCCESS’ and level= TRADES_BBA_DOM, and RealTimeMarketData with is_snapshot=true. Check displaying of trade, best bid, best ask, settlement, DOM and MarketValues.
13. After initial subscription start receiving RealTimeMarketData with is_snapshot = false. Make sure the application correctly updates OHLC, DOM, contract volume.
14. Send MarketDataSubscription with level=’NONE’.
15. Receive MarketDataSubscriptionStatus with status_code=’SUCCESS’ and level=‘NONE’.
16. Send Logoff message.
Discuss DOM vs. Best Bid/Ask Subscription
DOM and BBA come from different sources and should not be mixed on the client side. BID and ASK quotes should be used to the maintain DOM book. One can expect BID/ASK with volume = 0 when DOM level is cleared.
BESTBID/BESTASK should be used to maintain BBA only. There will not be a “best bid/ask clear” when prices change, but only when the DOM book becomes empty on either side, i.e. when there are no bids at all, there will be a BESTBID with volume = 0.
DOM/BBA mixing can lead to incorrect DOM and/or crossed markets, for example if a snapshot is taken between update types or server-side quote collapsing occurs.