B3 Binary UMDF Market Data Handler is a C++ library that provides access to the B3 Unified Market Data Feed (UMDF). Handler encapsulates all low-level aspects of the market data platform, allowing focusing on implementing trading solutions and market data processing algorithms. High-level C++ API allows building applications quickly to get market data without much involvement in raw protocol specifics.
All Handler classes are encapsulated into the OnixS::B3::MarketData::UMDF namespace. Header files are collected in the master OnixS/B3/MarketData/UMDF/UMDF.h
header file for your convenience.
The typical way of using the Handler is as follows:
- Create an instance of the Handler's settings.
- Create an instance of the Handler class using the previously initialized instance of settings.
- Register listener for errors and warnings to be notified about failures that occur while the Handler processes market data.
- Register listeners for market data messages or order book events.
- Start market data processing by invoking the Handlers' start method.
- Process data of the events for which listeners were previously registered.
- Stop market data processing using the Handler's stop method.
Configuring and Constructing the Handler
HandlerSettings settings;
settings.loggerSettings.logLevel = LogLevel::Debug;
settings.loggerSettings.logSettings = LogSettings::Default;
settings.loggerSettings.logDirectory = "logs";
settings.licenseDirectory = PATH_TO_DIRECTORY_WITH_LICENSE_FILE;
settings.instrumentFeeds.a.address = CHANNEL_80_INSTRUMENT_FEED_A_ADDRESS;
settings.instrumentFeeds.a.port = CHANNEL_80_INSTRUMENT_FEED_A_PORT;
settings.incrementalFeeds.a.address = CHANNEL_80_INCREMENTAL_FEED_A_ADDRESS;
settings.incrementalFeeds.a.port = CHANNEL_80_INCREMENTAL_FEED_A_PORT;
settings.incrementalFeeds.b.address = CHANNEL_80_INCREMENTAL_FEED_B_ADDRESS;
settings.incrementalFeeds.b.port = CHANNEL_80_INCREMENTAL_FEED_B_PORT;
settings.snapshotFeeds.a.address = CHANNEL_80_SNAPSHOT_FEED_A_ADDRESS;
settings.snapshotFeeds.a.port = CHANNEL_80_SNAPSHOT_FEED_A_PORT;
#if !defined(_WIN32)
settings.networkInterfaceA = NETWORK_INTERFACE_FOR_FEEDS_A;
settings.networkInterfaceB = NETWORK_INTERFACE_FOR_FEEDS_B;
#endif
Handler handler(settings);
Registering Event Listeners
handler.registerWarningListener(&issueListener);
handler.registerErrorListener(&issueListener);
handler.registerMessageListener(&messageListener);
handler.registerOrderBookListener(&orderBookListener);
Starting Market Data Processing
handler.start();
handler.stop(true);
- See also
-