OnixS C++ Eurex T7 Market and Reference Data Interface (EMDI, RDI, EOBI) Handlers  7.4.2
API documentation
MessageDataStructures.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*
4 * Copyright Onix Solutions Limited [OnixS]. All rights reserved.
5 *
6 * This software owned by Onix Solutions Limited [OnixS] and is protected by copyright law
7 * and international copyright treaties.
8 *
9 * Access to and use of the software is governed by the terms of the applicable ONIXS Software
10 * Services Agreement (the Agreement) and Customer end user license agreements granting
11 * a non-assignable, non-transferable and non-exclusive license to use the software
12 * for it's own data processing purposes under the terms defined in the Agreement.
13 *
14 * Except as otherwise granted within the terms of the Agreement, copying or reproduction of any part
15 * of this source code or associated reference material to any other location for further reproduction
16 * or redistribution, and any amendments to this copyright notice, are expressly prohibited.
17 *
18 * Any reproduction or redistribution for sale or hiring of the Software not in accordance with
19 * the terms of the Agreement is a violation of copyright law.
20 */
21 
23 
24 #include "../PacketHeader.h"
25 
26 namespace OnixS {
27 namespace Eurex {
28 namespace MarketData {
29 namespace EOBI {
30 namespace Implementation {
31 
32 #pragma pack(push, 1)
33 
34 #include "EOBILayouts.h"
35 
36 const Int64 UndefinedInt64 = ((Int64)0x8000000000000000LL);
37 const Int32 UndefinedInt32 = ((Int32)0x80000000);
38 const Int16 UndefinedInt16 = ((Int16)0x8000);
39 const Int8 UndefinedInt8 = ((Int8)0x80);
40 
41 const UInt64 UndefinedUInt64 = ((Int64)0xFFFFFFFFFFFFFFFFLL);
42 const UInt32 UndefinedUInt32 = ((Int32)0xFFFFFFFF);
43 const UInt16 UndefinedUInt16 = ((Int16)0xFFFF);
44 const UInt8 UndefinedUInt8 = ((Int8)0xFFFF);
45 
48 
49 struct BaseMsgData : public MessageHeaderCompT // Common header for all messages
50 {
52  {
53  Invalid = 0,
76  };
77 };
78 
101 
102 
103 
104 
107 
108 
109 //struct HeartbeatMsgData : HeartbeatT
110 //{
111 // UInt32 LastMsgSeqNumProcessed; // Last Message Sequence number that was processed, regardless of message type.
112 // UInt8 Pad4[4]; // Not used
113 //};
114 
115 //struct OrderAddMsgData : BaseMsgData
116 //{
117 // UInt64 TrdRegTSTimeIn; // Matching engine In timestamp.
118 // UInt64 SecurityID; // Unique instrument identifier.
119 // UInt64 TrdRegTSTimePriority; // Priority timestamp.
120 // UInt32 DisplayQty; // Quantity.
121 // UInt8 Side; // Side of the order. Value description: 1 - Buy, 2 - Sell
122 // UInt8 OrdType;
123 // UInt8 Pad2[2]; // Not used
124 // Int64 Price; // Price.
125 //};
126 
127 //struct OrderModifyMsgData : BaseMsgData
128 //{
129 // UInt64 TrdRegTSTimeIn; // Matching engine In timestamp.
130 // UInt64 TrdRegTSPrevTimePriority;// Previous order priority timestamp.
131 // Int64 PrevPrice; // Previous order price.
132 // UInt32 PrevDisplayQty;
133 // UInt8 Pad4[4]; // Fixed String Data structure padding (4 bytes). Valid characters: \x01-\x7E
134 // UInt64 SecurityID; // Unique instrument identifier.
135 // UInt64 TrdRegTSTimePriority; // Priority timestamp (new)
136 // UInt32 DisplayQty; // Quantity.
137 // UInt8 Side; // Side of the order. Value description: 1 - Buy, 2 - Sell
138 // UInt8 OrdType;
139 // UInt8 Pad2[2]; // Not used
140 // Int64 Price; // Double implied
141 //};
142 
143 //struct OrderModifySamePriorityMsgData : BaseMsgData
144 //{
145 // UInt64 TrdRegTSTimeIn; // Matching engine In timestamp.
146 // UInt64 TransactTime; // Transaction timestamp.
147 // UInt32 PrevDisplayQty;
148 // UInt8 Pad4[4]; // Fixed String Data structure padding (4 bytes). Valid characters: \x01-\x7E
149 // UInt64 SecurityID; // Unique instrument identifier.
150 // UInt64 TrdRegTSTimePriority; // Priority timestamp (new)
151 // UInt32 DisplayQty; // Quantity.
152 // UInt8 Side; // Side of the order. Value description: 1 - Buy, 2 - Sell
153 // UInt8 OrdType;
154 // UInt8 Pad2[2]; // Not used
155 // Int64 Price; // Double implied
156 //};
157 
158 //struct OrderDeleteMsgData : BaseMsgData
159 //{
160 // UInt64 TrdRegTSTimeIn; // Matching engine In timestamp.
161 // UInt64 TransactTime; // Transaction timestamp.
162 // UInt64 SecurityID; // Unique instrument identifier.
163 // UInt64 TrdRegTSTimePriority; // Priority timestamp.
164 // UInt32 DisplayQty; // Quantity.
165 // UInt8 Side; // Side of the order. Value description: 1 - Buy, 2 - Sell
166 // UInt8 OrdType;
167 // UInt8 Pad2[2]; // Not used
168 // Int64 Price; // Limit price. Required if OrdType (40) is Limit (2) or Stop Limit (4)
169 //};
170 //
171 //struct OrderMassDeleteMsgData : BaseMsgData
172 //{
173 // UInt64 SecurityID; // Unique instrument identifier.
174 // UInt64 TransactTime; // Transaction timestamp.
175 //};
176 //
177 //struct PartialOrderExecutionMsgData : BaseMsgData
178 //{
179 // UInt8 Side; // Side of the order. Value description: 1 - Buy, 2 - Sell
180 // UInt8 OrdType;
181 // UInt8 AlgorithmicTradeIndicator;
182 // UInt8 Pad5[5]; // Not used
183 // Int64 Px; // Reserved for future use. Currently, this price is equal to LastPx.
184 // UInt64 TrdRegTSTimePriority; // Priority timestamp.
185 // UInt64 SecurityID; // Unique instrument identifier.
186 // UInt32 TrdMatchID; // Unique identifier for each price level (match step) of a match event; it is used for public trade reporting.
187 // UInt32 LastQty; // Quantity executed in this fill.
188 // Int64 LastPx; // Double of this fill.
189 //};
190 //
191 //struct FullOrderExecutionMsgData : BaseMsgData
192 //{
193 // UInt8 Side; // Side of the order. Value description: 1 - Buy, 2 - Sell
194 // UInt8 OrdType;
195 // UInt8 AlgorithmicTradeIndicator;
196 // UInt8 Pad5[5]; // Not used
197 // Int64 Price; //
198 // UInt64 TrdRegTSTimePriority; // Priority timestamp.
199 // UInt64 SecurityID; // Unique instrument identifier.
200 // UInt32 TrdMatchID; // Unique identifier for each price level (match step) of a match event; it is used for public trade reporting.
201 // UInt32 LastQty; // Quantity executed in this fill.
202 // Int64 LastPx; // Double of this fill.
203 //};
204 //
205 //struct TradeReportMsgData : BaseMsgData
206 //{
207 // UInt64 SecurityID; // Unique instrument identifier.
208 // UInt64 TransactTime; // Transaction timestamp.
209 // UInt32 TrdMatchID; // Unique identifier for each price level (match step) of a match event; it is used for public trade reporting.
210 // UInt32 LastQty; // Quantity executed in this fill.
211 // Int64 LastPx; // Double of this fill.
212 // UInt8 MatchType; // The point in the matching process at which this trade was matched. Value description: 3 - Manual Trade Entry, 5 - Trade from Uncrossing, 7 - Trade from Auction
213 // UInt8 MatchSubType; // Indicates the auction type the trade originates from. Not filled for uncrossing, i.e. when a complex instrument switches to the instrument state "Continuous". Value description: 1 - Opening Auction, 2 - Closing Auction, 3 - Intraday Auction, 4 - Circuit Breaker Auction
214 // UInt8 AlgorithmicTradeIndicator; //
215 // UInt8 TradeCondition; //
216 // UInt8 Pad4[4]; // Not used
217 //};
218 //
219 //struct TradeReversalMsgData : BaseMsgData
220 //{
221 // UInt64 SecurityID; // Unique instrument identifier.
222 // UInt64 TransactTime; // Transaction timestamp.
223 // UInt32 TrdMatchID; // Unique identifier for each price level (match step) of a match event; it is used for public trade reporting.
224 // UInt32 LastQty; // Quantity executed in this fill.
225 // Int64 LastPx; // Double of this fill.
226 // UInt64 TrdRegTSExecutionTime; // Matching timestamp of new last trade.
227 // UInt8 TradeCondition; //
228 // UInt8 Pad6[6]; // Not used
229 // UInt8 NoMDEntries; // Counter
230 //
231 // struct MDTradeEntry
232 // {
233 // Int64 Px; // Price.
234 // UInt32 Size; // Quantity.
235 // UInt8 Type; // Type of market data entry. Value description: 2 - Trade, 4 - Opening Price, 5 - Closing Price, 7 - High Price, 8 - Low Price, 66 - Trade Volume
236 // UInt8 Pad3[3]; // Not used
237 // };
238 //
239 // MDTradeEntry MDTradeEntryGrp[1]; // Variable size array, record counter: NoMDEntries
240 //};
241 //
242 //struct ExecutionSummaryMsgData : BaseMsgData
243 //{
244 // UInt64 SecurityID; // Unique instrument identifier.
245 // UInt64 AggressorTime; // UTCTimestamp
246 // UInt64 RequestTime; // Gateway request in timestamp.
247 // UInt64 ExecID; // Matching timestamp.
248 // UInt32 LastQty; // Total quantity of this match.
249 // UInt8 AggressorSide; // Value description: 1 - Triggered by the buy side, 2 - Triggered by the sell side
250 // UInt8 TradeCondition; // Indicates whether a synthetic match is occured. Value description: 1 - Implied Trade,
251 // UInt8 Pad2[2]; // Not used
252 // Int64 LastPx; // Worst price of this match.
253 // UInt32 RestingHiddenQty; // Quantity of matched passive orders that is not displayed to the market.
254 // UInt32 RestingCxlQty; // The deleted quantity due to Self Match Prevention within a Match Event. This quantity is not part of LastQty which could even be 0 in certain cases.
255 //};
256 //
257 //struct ProductStateChangeMsgData : BaseMsgData
258 //{
259 // UInt8 TradingSessionID; // Miscellaneous state information. Value description: 1 - Day, 3 - Morning, 5 - Evening, 7 - Holiday
260 // UInt8 TradingSessionSubID; // Product state information. Value description: 1 - Pre Trading, 3 - Trading, 4 - Closing, 5 - Post Trading, 7 - Quiescent
261 // UInt8 TradSesStatus; // Miscellaneous state information. Value description: 1 - Halted, 2 - Open, 3 - Closed
262 // UInt8 MarketCondition; //
263 // UInt8 FastMarketIndicator; // Indicates if product is in the state Fast Market. Value description: 0 - No, 1 - Yes
264 // UInt8 Pad3[3]; // String not used
265 // UInt64 TransactTime; // Transaction timestamp.
266 //};
267 //
268 //struct InstrumentStateChangeMsgData : BaseMsgData
269 //{
270 // UInt64 SecurityID; // Unique instrument identifier.
271 // UInt8 SecurityStatus; // Instrument status. Value description: 1 - Active, 2 - Inactive, 4 - Expired, 9 - Suspended
272 // UInt8 SecurityTradingStatus; // Instrument state status. Value description: 200 - Closed, 201 - Restricted, 202 - Book, 203 - Continuous, 204 - Opening Auction, 205 - Opening Auction Freeze, 206 - Intraday Auction, 207 - Intraday Auction Freeze, 208 - Circuit Breaker Auction, 209 - Circuit Breaker Auction Freeze, 210 - Closing Auction, 211 - Closing Auction Freeze
273 // UInt8 MarketCondition; // Indicator for stressed market conditions.
274 // UInt8 FastMarketIndicator; // Value description: 0 - No, 1 - Yes
275 // UInt8 SecurityTradingEvent;
276 // UInt8 Pad3[3]; // Not used
277 // UInt64 TransactTime; // Transaction timestamp.
278 //};
279 //
280 //struct AddComplexInstrumentMsgData : BaseMsgData
281 //{
282 // UInt64 SecurityID; // Unique instrument identifier.
283 // UInt64 TransactTime; // Transaction timestamp.
284 // UInt32 SecuritySubType; // Strategy Type.
285 // UInt8 ProductComplex; // This field qualifies an instrument type on Eurex. Value description: 5 Futures Spread
286 // UInt8 ImpliedMarketIndicator; // Indicates that an implied market to be created for either the legs of a multi-leg instrument (Implied-in) or for the multi-leg instrument based on the existence of the legs (Impliedout). Determination as to whether implied markets should be created is generally done at the level of the multileg instrument. Commonly used in listed derivatives. Value description 0 Not Implied, 3 Implied In Out
287 // UInt8 NoLegs; // Counter: number of Legs repeating group instances.
288 // UInt8 Pad1[1]; // Not used
289 //
290 // struct InstrmtLeg
291 // {
292 // UInt32 LegSymbol; // Product identifier of the leg security (only applicable for underlying leg).
293 // UInt8 Pad4[4]; // Not used
294 // UInt64 LegSecurityID; // Instrument identifier of the leg security.
295 // UInt32 LegRatioQty; // The ratio of quantity for this individual leg relative to the entire multi-leg security.
296 // UInt8 LegSide; // The side of the individual leg of a strategy as defined in signature. Value description 1 - Buy, 2 - Sell
297 // UInt8 Pad3[3]; // Not used
298 // };
299 //
300 // InstrmtLeg InstrmtLegGrp[1]; // Variable size array, record counter: NoLegs
301 //};
302 //
303 //struct AuctionBestBidOfferMsgData : BaseMsgData
304 //{
305 // UInt64 TransactTime; // Official timestamp of order book entry.
306 // UInt64 SecurityID; // Unique instrument identifier.
307 // Int64 BidPx; // Bid price/rate.
308 // Int64 OfferPx; // Offer price/rate.
309 // Int32 BidSize;
310 // Int32 OfferSize;
311 // UInt8 PotentialSecurityTradingEvent;
312 // UInt8 Pad7[7]; // Not used
313 //};
314 //
315 //struct AuctionClearingPriceMsgData : BaseMsgData
316 //{
317 // UInt64 TransactTime; // Transaction timestamp.
318 // UInt64 SecurityID; // Unique instrument identifier.
319 // Int64 LastPx; // Indicating the potential Auction price for a crossed order book.
320 // Int32 LastQty;
321 // Int32 ImbalanceQty;
322 // UInt8 SecurityTradingStatus;
323 // UInt8 PotentialSecurityTradingEvent;
324 // UInt8 Pad6[6];
325 //};
326 //
327 //struct QuoteRequestMsgData : BaseMsgData
328 //{
329 // UInt64 SecurityID; // Unique instrument identifier.
330 // UInt32 LastQty; // Defines the requested quantity in a Quote Request.
331 // UInt8 Side; // Side of the order. Value Description: 1 Buy, 2 Sell,
332 // UInt8 Pad3[3]; // Not used
333 // UInt64 TransactTime; // Transaction timestamp.
334 //};
335 //
336 //struct CrossRequestMsgData : BaseMsgData
337 //{
338 // UInt64 SecurityID; // Unique instrument identifier.
339 // UInt32 LastQty; // Defines the requested quantity in a Cross Request.
340 // UInt8 Pad4[4]; // Not used
341 // UInt64 TransactTime; // Transaction timestamp.
342 //};
343 //
344 //struct TopOfBookMsgData : BaseMsgData
345 //{
346 // UInt64 TransactTime; // Transaction timestamp.
347 // UInt64 SecurityID; // Unique instrument identifier.
348 // Int64 BidPx; // PriceType Bid price/rate.
349 // Int64 OfferPx; // Offer price/rate.
350 //};
351 //
352 //struct ProductSummaryMsgData : BaseMsgData
353 //{
354 // UInt32 LastMsgSeqNumProcessed; // Last Message Sequence number that was processed, regardless of message type.
355 // UInt8 TradingSessionID; // Miscellaneous state information. Value Description: 1 Day, 3 Morning, 5 Evening, 7 Holiday
356 // UInt8 TradingSessionSubID; // Product state information. Value Description: 1 Pre Trading, 3 Trading, 4 Closing, 5 Post Trading, 7 Quiescent
357 // UInt8 TradSesStatus; // Miscellaneous state information. Value Description: 1 Halted, 2 Open, 3 Closed
358 // UInt8 FastMarketIndicator; // Indicates if product is in the state Fast Market. Value Description: 0 No, 1 Yes
359 // UInt8 MarketCondition; //
360 // UInt8 Pad7[7]; // Not used
361 //};
362 //
363 //struct InstrumentSummaryMsgData : BaseMsgData
364 //{
365 // UInt64 SecurityID; // Unique instrument identifier.
366 // UInt64 LastUpdateTime; // Last update time of the corresponding order book.
367 // UInt64 TrdRegTSExecutionTime; // Last matching execution timestamp.
368 // UInt16 TotNoOrders; // Corresponding number of orders for this instrument.
369 // UInt8 SecurityStatus; // Instrument status. Value Description: 1 Active, 2 Inactive, 4 Expired, 9 Suspended
370 // UInt8 SecurityTradingStatus; // Instrument state status. Value Description: 200 Closed, 201 Restricted, 202 Book, 203 Continuous, 204 Opening Auction, 205 Opening Auction Freeze, 206 Intraday Auction, 207 Intraday Auction Freeze, 208 Circuit Breaker Auction, 209 Circuit Breaker Auction Freeze, 210 Closing Auction, 211 Closing Auction Freeze
371 // UInt8 MarketCondition; //
372 // UInt8 FastMarketIndicator; // Value Description: 0 No, 1 Yes
373 // UInt8 SecurityTradingEvent;
374 // UInt8 NoMDEntries; // Number of entries in Market Data message for MDEntryGrp.
375 //
376 // struct MDInstrumentEntry
377 // {
378 // Int64 MDEntryPx; // Price.
379 // UInt32 MDEntrySize; // Quantity.
380 // UInt8 MDEntryType; // Type of market data entry. Value Description: 2 Trade, 4 Opening Price, 5 Closing Price, 7 High Price, 8 Low Price, 66 Trade Volume, 101 Previous Closing Price, 200 Opening Auction, 201 Intraday Auction, 202 Circuit Breaker Auction, 203 Closing Auction
381 // UInt8 TradeCondition; //
382 // UInt8 Pad2[2]; // Not used
383 // };
384 //
385 // MDInstrumentEntry MDInstrumentEntryGrp[1]; // Variable size array, record counter: NoMDEntries
386 //};
387 //
388 //struct SnapshotOrderMsgData : BaseMsgData
389 //{
390 // UInt64 TrdRegTSTimePriority; // Priority timestamp.
391 // UInt32 DisplayQty; // Quantity.
392 // UInt8 Side; // Side of the order. Value Description: 1 Buy, 2 Sell
393 // UInt8 OrdType;
394 // UInt8 Pad2[2]; // Not used
395 // Int64 Price; // Limit price. Required if OrdType (40) is Limit (2) or Stop Limit (4).
396 //};
398 #pragma pack(pop)
399 
401 
402 }}}}}
unsigned char UInt8
Definition: Numeric.h:35
#define TID_PRODUCT_STATE_CHANGE
#define TID_CROSS_REQUEST
#define TID_EXECUTION_SUMMARY
#define TID_ADD_COMPLEX_INSTRUMENT
#define TID_TRADE_REPORT
#define TID_HEARTBEAT
#define TID_SNAPSHOT_ORDER
#define TID_PACKET_HEADER
#define TID_PARTIAL_ORDER_EXECUTION
BOOST_STATIC_ASSERT(MarketData::Implementation::PacketHeaderForEobi::TemplateIdValue==13005)
unsigned int UInt32
Definition: Numeric.h:41
Definition: Defines.h:30
#define TID_ORDER_MASS_DELETE
#define TID_ORDER_MODIFY_SAME_PRIO
#define TID_INSTRUMENT_STATE_CHANGE
unsigned short UInt16
Definition: Numeric.h:38
#define TID_PRODUCT_SUMMARY
#define TID_AUCTION_CLEARING_PRICE
#define TID_TOP_OF_BOOK
#define TID_ORDER_MODIFY
#define TID_ORDER_ADD
#define TID_QUOTE_REQUEST
#define TID_AUCTION_BBO
#define TID_INSTRUMENT_SUMMARY
#define TID_ORDER_DELETE
#define TID_TRADE_REVERSAL
#define TID_FULL_ORDER_EXECUTION