Along with Market By Price (MBP), CME MDP 3.0 exposes Market By Order (MBO ) functionality. MBO disseminates individual orders and quotes at every price level for a particular instrument.
The OnixS::CME::MDH::MboBook class provides access to bids and offers for the given instrument with the help of OnixS::CME::MDH::MboBook::bids and OnixS::CME::MDH::MboBook::offers members, respectively. All bids and offers are sorted in the same way as price levels in the MBP books.
The OnixS::CME::MDH::Order class encapsulates bids and offers. It exposes order primary details like id, priority, price and display quantity. In contrast to MBP books, an MBO book may contain multiple entries having the same price value. Orders with the same price are sorted by priority, starting from the lowest to highest, no matter whether a particular order represents a bid or offer.
To get subscribed to MBO book updates, it is necessary to override the OnixS::CME::MDH::SecurityListener::onBookUpdate member of OnixS::CME::MDH::SecurityListener and bind the listener instance to the OnixS::CME::MDH::Handler instance using the handler.settings().listeners().security(&listener)
path.
MBO book maintenance is configured by the parameter that can be accessed using the handler.settings().bookManagement().mboBooks().maintain(bool status)
path.
The handler supports both accurate maintenance and Natural Refresh for MBO books. Users should not experience any difference in MBP and MBO order book maintenance.
In case of late join or data loss, the handler performs a large-scale market state recovery using Market Recovery Feeds.
In contrast to real-time updates, when data for all kinds of books are transmitted using the same Incremental Feeds, the MBO recovery uses separate "MBO" Market Recovery Feeds. The handler processes market data from two sources (MBP and MBO Market Recovery Feeds) if the user subscribed to both MBO and MBP books. Two separate recovery procedures (for MBP and MBO books) may increase the recovery time because the handler must wait until both procedures are finished before switching to real-time data processing.