OnixS C++ CME Market Data Handler  5.4.0
API documentation
Manipulating Books

Inner Contents

 Book Update Notification Strategies
 
 Maintaining Books by Natural Refresh
 
 Building and Maintaining Books by Yourself
 
 Tracking Best Bids and Offers Only
 
 Constructing And Copying Books
 

Detailed Description

Order Books in the SDK

There are several types of books available for each security: Market By Order (MBO), Direct, Implied and Consolidated. The SDK exposes the corresponding classes for each of book type: OnixS::CME::MDH::MboBook, OnixS::CME::MDH::DirectBook, OnixS::CME::MDH::ImpliedBook, and OnixS::CME::MDH::ConsolidatedBook. Each class exposes data solely available for a particular kind of order book.

Note
Although there are four different types of books, the MDP transmits data for only MBO, direct, and implied types of books. Consolidated books are being maintained by the Handler locally using direct and implied books for a particular security.

The Handler notifies a client code through the OnixS::CME::MDH::SecurityListener::onBookUpdate callback once a security's book of any type is updated.

The instrument definition defines the book depth for market by price (MBP) books, which the direct, implied, and consolidated books are. It is exposed as the OnixS::CME::MDH::MbpBook::depth member. The returned value defines the maximum number of price levels that may exist in the book.

The OnixS::CME::MDH::MbpBook::bids and OnixS::CME::MDH::MbpBook::offers members of the OnixS::CME::MDH::MbpBook class are exposed to access price value and quantity information for all levels available in the book.

Similarly, the OnixS::CME::MDH::MboBook class interface includes the OnixS::CME::MDH::MboBook::bids and OnixS::CME::MDH::MboBook::offers members to access details for all orders available in the book.

Also, order book maintenance is explicitly defined by the Handler configuration.

The following code sample defines how to manage maintenance of order books using Handler settings:

// An instance to be configured.
Handler handler;
// Quicker access to book-related settings.
BookManagement& bookManagement =
handler.settings().bookManagement();
// Let Handler to maintain direct books. Once parameter is set
// to 'true', Handler will invoke SecurityListener::onBookUpdate()
// member passing instance of a valid direct book.
bookManagement.directBooks().maintain(true);
// Given statement suppresses implied order book maintenance.
// However, if consolidated order book maintenance is enabled,
// implied order book will also be maintained. Therefore, given
// statement only suppresses order book update event triggering.
bookManagement.impliedBooks().maintain(false);
// Let Handler to maintain consolidated books. Once parameter
// is set to 'true', Handler will invoke SecurityListener::onBookUpdate()
// member passing instance of a valid consolidated book.
bookManagement.consolidatedBooks().maintain(true);

Behavioral Traits

The Handler constructs books for each security since the moment it receives a definition for that security. Books are changed in time, and their members are not thread-safe. The Handler uses its synchronization primitives while updating the books. Therefore, do not access price levels information outside of book-related event handling and do not store references to any book instance and data returned by its members like offers and bids collections. This restriction exists because the Handler may change internal book structures at the same time. If any data exposed by a instance instance must be used outside of event handling, it must be copied before later use.

See also
Constructing And Copying Books, OnixS::CME::MDH::SecurityListener