ICE provides many market types available for subscription. The full list is available in the Supported Market Types on ICE API document. Please use a value in the first column, ID, as a value for the first constructor's argument of OnixS::ICE::iMpact::MarketData::MarketSubscription
.
When you don't know which market type ID should be used you can check this on All Futures, Options, OTC Products & Physicals site. There are many products available so you can review and select what you need. After this you can click Product Codes to get information about the mapping and find the market type name. With this information you can easily determine which market type ID should be used using Market Type Name column in the Supported Market Types on ICE API document.
The ICE iMpact multicast groups are currently defined based on a set of products (such as Europe Futures Oil) and depth of book (Full Order Depth, Top 5 Price Level). The Handler exposes the flexibility of subscribing to the multicast groups that are best suited to customers individual needs.
Subscribing is a way to start receiving Multicast Price Feed market data. To subscribe to certain multicast groups as well as to select which type of books must be maintained by the Handler, an instance of OnixS::ICE::iMpact::MarketData::MarketSubscriptions
collection must be created and filled with items.
Once the instance of a blank collection is created, subscriptions for a particular market type can be added. This can be achieved by pushing items of type OnixS::ICE::iMpact::MarketData::MarketSubscription
into the collection. Each added item identifies the type of market to which subscription will be performed and kinds of books which the Handler is supposed to build and update while maintaining a subscription.
Depending on security type the following order book depths are available:
Security Type | Order Book Depth |
---|---|
Futures | TOP5PL or FOD |
UdsFuturesMarkets | TOP5PL or FOD |
Options | TOB or TOP10PL |
UdsOptionsMarkets | TOB or TOP10PL |
ICE offers two types of prices: implied and non-implied. You can use OnixS::ICE::iMpact::MarketData::MarketSubType
enum to specify desired market sub-type. Depending on your choice and if the implied multicast group is available you will be using one multicast group for implied prices and another for non-implied.
It is possible to specify one or more market ID for each market subscription using OnixS::ICE::iMpact::MarketData::MarketSubscription::marketIds
. This set will be used as a first-level filter and all product definitions which do not match this list will be ignored.
The second-level filter is a special boolean parameter isInterested
which is available in the following callbacks:
OnixS::ICE::iMpact::MarketData::ExchangeListener::onFuturesProductDefinition
OnixS::ICE::iMpact::MarketData::ExchangeListener::onFuturesStrategyDefinition
OnixS::ICE::iMpact::MarketData::ExchangeListener::onOptionsProductDefinition
OnixS::ICE::iMpact::MarketData::ExchangeListener::onOptionsStrategyDefinition
OnixS::ICE::iMpact::MarketData::ExchangeListener::onNewExpiry
OnixS::ICE::iMpact::MarketData::ExchangeListener::onNewFuturesStrategyDefinition
OnixS::ICE::iMpact::MarketData::ExchangeListener::onNewOptionsMarketDefinition
OnixS::ICE::iMpact::MarketData::ExchangeListener::onNewOptionsStrategyDefinition
This parameter can be used to determine if a subscription for a given product definition should be maintained or not. By default, this value is set to true
. If the given product definition is not interested you just need to set it to false
and it will be removed from market subscription and the Handler won't process any messaged with this market ID.
The Handler can maintain as much first- and second-level filters as needed. There are no limitations to this kind of settings in the Handler implementation.
If you need to filter one set of product definitions depending on information from another set of product definitions like you want to maintain only those Futures
product definitions which related to UdsFuturesMarkets
you are interested in you can use the following approach:
UdsFuturesMarkets
and for Futures
.UdsFuturesMarkets
subscription should be first in the list.UdsFuturesMarkets
with legs you want to subscribe you need to add its IDs to your array.Futures
you need to check if a market ID is in your array and set IsInterested to true.Afterward, the constructed collection must be passed to OnixS::ICE::iMpact::MarketData::Handler::start
member which causes the Handler to receive and process data for the markets specified in the subscription. Since that moment, Handler will notify about all the events through appropriate listeners. In particular, it will notify the subscribers about the reception of the product definitions. Later, about changes in states of markets, new orders added or removed to or from market books, and, surely, about errors if any occurred during processing data from Multicast Price Feed channels.
Below is the example of creating subscription for IPE Brent Futures market of ICE Futures Brent multicast group: