OnixS C++ Eurex T7 Market and Reference Data (EMDI, MDI, RDI, EOBI) Handlers  17.0.1
API documentation
Defines.h
Go to the documentation of this file.
1 /*
2 * Copyright Onix Solutions Limited [OnixS]. All rights reserved.
3 *
4 * This software owned by Onix Solutions Limited [OnixS] and is protected by copyright law
5 * and international copyright treaties.
6 *
7 * Access to and use of the software is governed by the terms of the applicable ONIXS Software
8 * Services Agreement (the Agreement) and Customer end user license agreements granting
9 * a non-assignable, non-transferable and non-exclusive license to use the software
10 * for it's own data processing purposes under the terms defined in the Agreement.
11 *
12 * Except as otherwise granted within the terms of the Agreement, copying or reproduction of any part
13 * of this source code or associated reference material to any other location for further reproduction
14 * or redistribution, and any amendments to this copyright notice, are expressly prohibited.
15 *
16 * Any reproduction or redistribution for sale or hiring of the Software not in accordance with
17 * the terms of the Agreement is a violation of copyright law.
18 */
19 
20 #pragma once
21 
22 #include <string>
23 
29 
30 namespace OnixS
31 {
32  namespace Eurex
33  {
34  namespace MarketData
35  {
36  /// Alias for Market Segment type (Product name).
37  typedef std::string MarketSegment;
38 
39  /// Alias for Market Segment ID type.
41 
42  /// Alias for Market depth type.
44 
45  const MarketSegmentId UndefinedMarketSegmentId = 0;
46 
47  /// Alias for Partition ID type.
49 
50  /// Alias for Security Id type.
51  typedef Int64 SecurityId;
52 
53  /// Alias for Quantity type.
54  typedef UInt64 Quantity;
55 
56  /// Feed types based on type of market data service.
57  struct NetFeedType
58  {
59  /// Integral base type of enumeration.
60  typedef char Base;
61 
62  /// Feed types based on type of market data service.
63  enum Enum
64  {
65  /// Incremental/real-time.
67 
68  /// Market recovery for MBP (Market By Price) books.
70  };
71  };
72 
73  /// Feed roles (primary, secondary).
74  struct NetFeedRole
75  {
76  /// Integral base type of enumeration.
77  typedef char Base;
78 
79  /// List of known feed roles.
80  enum Enum
81  {
82  /// Origin is unknown or lost
84 
85  /// FeedA
87 
88  /// FeedB
89  FeedB
90  };
91  };
92 
93  struct DataSource
94  {
95  /// Time when the packet was received by Handler from UDP, in system ticks, @see Time.h
97 
98  /// Time when the packet was originally received by Handler from UDP
99  /// Valid only for backtesting
101 
102  /// Packet sequence number
104 
105  /// Packet message number
107 
108  /// Indicates whether a message is last in the packet
110 
111  /// Time when market data feed handler writes packet on the wire.
112  UInt64 sendingTime;
113 
114  /// Current load of system.
115  ///
116  /// @note Time difference between the incoming ETS-order/quote
117  /// and the time the market data is written to the socket. This
118  /// information is provided for the incremental feed of Eurex EMDI only.
120 
121  /// Unique id for a sender.
123 
124  /// Sending partition.
125  ///
126  /// @note For EMDI feed messages only.
127  PartitionId partitionId;
128 
129  /// Product identifier
130  ///
131  /// @note For EOBI feed messages only.
132  MarketSegmentId marketSegmentId;
133 
134  /// An indicator whether the atomic unit of work fits into one datagram
135  ///
136  /// @note For EOBI feed messages only.
138 
139  /// An origin of the packet
141  Origin origin;
142 
143  ///
144  bool cached;
145  };
146 
147  /// Exposes list of leg sides
148  struct ONIXS_EUREX_EMDI_API LegSide
149  {
150  enum Enum
151  {
152  /// Used to identify absence of value.
153  Undefined = -1,
154 
155  /// Buy
156  Buy = 1,
157 
158  /// Sell
159  Sell = 2,
160  };
161  };
162 
163  /// Exposes list of available security statuses
164  struct ONIXS_EUREX_EMDI_API SecurityStatus
165  {
166  enum Enum
167  {
168  /// Used to identify absence of value.
169  Undefined = -1,
170 
171  /// Defines if product is traded on on NTA.
172  Active = 0,
173 
174  /// Inactive
175  Inactive = 1,
176 
177  /// Expired
178  Expired = 2,
179 
180  ///
181  KnockedOut = 3,
182 
183  ///
184  KnockOutRevoked = 4,
185 
186  /// Suspended
187  Suspended = 5,
188 
189  /// Defines if product is still traded on "Eurex classic"
190  Published = 6,
191 
192  ///
193  PendingDeletion = 7,
194 
195  ///
196  KnockedOutAndSuspended = 8,
197 
198  };
199  };
200 
201  /// Exposes list of available trade session statuses.
202  struct ONIXS_EUREX_EMDI_API TradSesStatus
203  {
204  enum Enum
205  {
206  /// Used to identify absence of value.
207  Undefined = -1,
208 
209  ///
210  Halted = 0,
211 
212  ///
213  Open = 1,
214 
215  ///
216  Closed = 2,
217 
218  ///
219  PreClose = 3,
220  };
221  };
222 
223  ///
224  struct ONIXS_EUREX_EMDI_API ImpliedMarketIndicator
225  {
226  enum Enum
227  {
228  /// Used to identify absence of value.
229  Undefined = -1,
230 
231  /// Not implied
232  NotImplied = 0,
233 
234  /// Both implied in and implied out
235  BothImpliedInAndImpliedOut = 1,
236  };
237  };
238 
239  /// Exposes list of available entry types
240  struct ONIXS_EUREX_EMDI_API MDEntryType
241  {
242  enum Enum
243  {
244  /// Used to identify absence of value.
245  Undefined = -1,
246 
247  /// Bid
248  Bid = 0,
249 
250  /// Offer
251  Offer = 1,
252 
253  /// Trade
254  Trade = 2,
255 
256  /// Empty book
257  EmptyBook = 3,
258 
259  /// Auction clearing price
260  AuctionClearingPrice = 4,
261 
262  /// Settlement Price
263  SettlementPrice = 5,
264 
265  /// Open Interest
267 
268  ///Trade Volume
269  TradeVolume = 7,
270 
271  ///Market Bid
272  MarketBid = 8,
273 
274  ///Market Offer
275  MarketOffer = 9,
276 
277  ///Imbalance
278  Imbalance = 10,
279  };
280  };
281 
282  struct ONIXS_EUREX_EMDI_API QuoteCondition
283  {
284  enum Enum
285  {
286  /// Used to identify absence of value.
287  Undefined = -1,
288 
289  // Crossed,
290  Crossed = 0,
291 
292  // OrderImbalance,
293  OrderImbalance = 1,
294  };
295  };
296 
297  /// Exposes list of available trade types
298  struct ONIXS_EUREX_EMDI_API TrdType
299  {
300  // The trade type enum entries do not use numeric values
301  // mentioned in documentation. Instead they are identified by
302  // ordinal (starting from zero) preserving the order in the doc.
303 
304  enum Enum
305  {
306  /// Used to identify absence of value.
307  Undefined = -1,
308 
309  /// Regular Trade
310  RegularTrade = 0,
311 
312  /// Block trade
314 
315  /// Exchange for Physical
317 
318  /// Exchange for swap
320 
321  ///
323 
324  /// Exchange basis facility
326 
327  /// Vola trade
329 
330  /// Exchange for Physical Fin trade
332 
333  /// EFPIndexFutures trade
335 
336  ///
338 
339  ///
341 
342  ///
344 
345  ///
347 
348  /// Opening auction trade
350 
351  /// Intraday auction trade
353 
354  /// Volatility auction trade
356 
357  /// Closing auction trade
359 
360  /// Cross auction trade
362 
363  ///
365 
366  ///
367  LiquidityImprovementCross
368  };
369 
370  static std::string toString (Enum value);
371  };
372 
373  /// Exposes list of available trading session IDs
374  struct ONIXS_EUREX_EMDI_API TradingSessionId
375  {
376  enum Enum
377  {
378  /// Used to identify absence of value.
379  Undefined = -1,
380 
381  /// Day
382  Day = 0,
383 
384  /// Morning
385  Morning = 1,
386 
387  /// Evening
388  Evening = 2,
389 
390  /// After-Hours
391  AfterHours = 3,
392 
393  /// Holiday
394  Holiday = 4,
395  };
396  };
397 
398  /// Exposes list of available trading session sub IDs
399  struct ONIXS_EUREX_EMDI_API TradingSessionSubID
400  {
401  enum Enum
402  {
403  /// Used to identify absence of value.
404  Undefined = -1,
405 
406  /// PreTrading
407  PreTrading = 0,
408 
409  /// Continuous
410  Continuous = 1,
411 
412  /// Closing
413  Closing = 2,
414 
415  /// PostTrading
416  PostTrading = 3,
417 
418  /// ScheduledIntradayAuction
419  ScheduledIntradayAuction = 4,
420 
421  /// Quiescent
422  Quiescent = 5,
423 
424  /// AnyAuction
425  AnyAuction = 6,
426 
427  /// ContinuousAuctionIssuer
428  ContinuousAuctionIssuer = 7,
429 
430  /// ContinuousAuctionSpecialist
431  ContinuousAuctionSpecialist
432  };
433  };
434 
435  /// Exposes list of available security trading statuses
436  struct ONIXS_EUREX_EMDI_API SecurityTradingStatus
437  {
438  enum Enum
439  {
440  /// Used to identify absence of value.
441  Undefined = -1,
442 
443  /// Trading Halt
444  TradingHalt = 0,
445 
446  /// Closed
447  Closed = 1,
448 
449  /// Restricted
450  Restricted = 2,
451 
452  /// Book
453  Book = 3,
454 
455  /// Continuous
456  Continuous = 4,
457 
458  /// Opening auction
459  OpeningAuction = 5,
460 
461  /// Opening auction freeze
462  OpeningAuctionFreeze = 6,
463 
464  /// Intraday auction
465  IntradayAuction = 7,
466 
467  /// Intraday auction freeze
468  IntradayAuctionFreeze = 8,
469 
470  /// Circuit breaker auction
471  CircuitBreakerAuction = 9,
472 
473  /// Circuit breaker auction freeze
474  CircuitBreakerAuctionFreeze = 10,
475 
476  /// Closing auction
477  ClosingAuction = 11,
478 
479  /// Closing auction freeze
480  ClosingAuctionFreeze = 12,
481 
482  /// CIPO Auction
483  IPOAuction = 13,
484 
485  /// IPO Auction Freeze
486  IPOAuctionFreeze = 14,
487 
488  ///
490 
491  ///
493 
494  ///
496 
497  ///
499 
500  ///
502 
503  ///
504  CircuitBreakerAuctionTriggeredByStaticLimitBreachFreeze
505  };
506  };
507 
508  ///
509  struct ONIXS_EUREX_EMDI_API SecurityTradingEvent
510  {
511  enum Enum
512  {
513  /// Used to identify absence of value.
514  Undefined = -1,
515 
516  ///
517  None = 0,
518 
519  ///
520  PriceVolatilityAuctionIsExtended = 1,
521 
522  ///
523  PriceVolatilityAuctionIsExtendedAgain = 2,
524  };
525  };
526 
527  /// Exposes list of available trade conditions
528  struct ONIXS_EUREX_EMDI_API TradeCondition
529  {
530  enum Enum
531  {
532  /// Used to identify absence of value.
533  Undefined = 0,
534 
535  /// Exchange last
536  ExchangeLast = 1,
537 
538  /// Opening price
539  OpeningPrice = 2,
540 
541  /// High price
542  HighPrice = 4,
543 
544  /// Low price
545  LowPrice = 8,
546 
547  /// Official closing price
548  OfficialClosingPrice = 16,
549 
550  /// Last auction price
551  LastAuctionPrice = 32,
552 
553  /// Out of sequence ETH
554  OutOfSequenceETH = 64,
555 
556  /// Previous Closing Price
557  PreviousClosingPrice = 128,
558 
559  /// Volume Only
560  VolumeOnly = 256,
561 
562  ///
563  TradingOnTermsOfIssue = 512,
564 
565  ///
566  SpecialAuction = 1024,
567 
568  ///
569  TradeAtClose = 2048,
570 
571  ///
572  Retail = 4096,
573 
574  ///
575  MidpointPrice = 8192
576  };
577  };
578 
579  ///
580  struct ONIXS_EUREX_EMDI_API MidpointTrading
581  {
582  enum Enum
583  {
584  ///
585  Disabled = 0,
586 
587  ///
588  Enabled = 1,
589 
590  /// Used to identify absence of value.
591  Undefined = -1,
592  };
593  };
594 
595  ///
596  struct ONIXS_EUREX_EMDI_API SecurityClassificationReasonType
597  {
598  enum Enum
599  {
600  ///
601  Fee = 0,
602 
603  ///
604  CreditControls = 1,
605 
606  ///
607  Margin = 2,
608 
609  ///
610  EntitlementOrEligibility = 3,
611 
612  ///
613  MarketData = 4,
614 
615  ///
616  AccountSelection = 5,
617 
618  ///
619  DeliveryProcess = 6,
620 
621  ///
622  Sector = 7,
623 
624  /// Used to identify absence of value.
625  Undefined = -1,
626  };
627  };
628 
629 
630  ///
631  struct ONIXS_EUREX_EMDI_API SecurityClassificationValueType
632  {
633  enum Enum
634  {
635  ///
636  EligibleForAllTradingActivities = 1,
637 
638  ///
639  NotEligibleForOTCTradeUpload = 2,
640 
641  ///
642  EligibleOnlyForOTCTradeUpload = 3,
643 
644  /// Used to identify absence of value.
645  Undefined = -1,
646  };
647  };
648 
649 
650  struct ONIXS_EUREX_EMDI_API TradeConditionSet
651  {
652  explicit
653  TradeConditionSet (UInt64 value)
654  : value_ (value)
655  {}
656 
657  bool contain (TradeCondition::Enum value) const
658  {
659  return (value_ & value) != 0;
660  }
661 
662  bool containExchangeLast() const
663  {
664  return contain (TradeCondition::ExchangeLast);
665  }
666  bool containOpeningPrice() const
667  {
668  return contain (TradeCondition::OpeningPrice);
669  }
670  bool containHighPrice() const
671  {
672  return contain (TradeCondition::HighPrice);
673  }
674  bool containLowPrice() const
675  {
676  return contain (TradeCondition::LowPrice);
677  }
679  {
680  return contain (TradeCondition::OfficialClosingPrice);
681  }
683  {
684  return contain (TradeCondition::LastAuctionPrice);
685  }
687  {
688  return contain (TradeCondition::OutOfSequenceETH);
689  }
691  {
692  return contain (TradeCondition::PreviousClosingPrice);
693  }
694  bool containVolumeOnly() const
695  {
696  return contain (TradeCondition::VolumeOnly);
697  }
698  bool containRetail() const
699  {
700  return contain (TradeCondition::Retail);
701  }
703  {
705  }
707  {
708  return contain (TradeCondition::SpecialAuction);
709  }
710  bool containTradeAtClose() const
711  {
712  return contain(TradeCondition::TradeAtClose);
713  }
714  bool containMidpointPrice() const
715  {
716  return contain(TradeCondition::MidpointPrice);
717  }
718 
719  std::string toString() const;
720 
721  private:
722  UInt64 value_;
723  };
724 
725  /// Exposes list of available origin types
726  struct ONIXS_EUREX_EMDI_API MDOriginType
727  {
728  enum Enum
729  {
730  /// Used to identify absence of value.
731  Undefined = -1,
732 
733  ///
734  Book = 0,
735 
736  ///
737  OffBook = 1,
738  };
739  };
740 
741  /// Exposes list of available update actions
742  struct ONIXS_EUREX_EMDI_API MDUpdateAction
743  {
744  enum Enum
745  {
746  /// Used to identify absence of value.
747  Undefined = -1,
748 
749  /// New
750  New = 0,
751 
752  /// Change
753  Change = 1,
754 
755  /// Delete
756  Delete = 2,
757 
758  /// DeleteThru
759  DeleteThru = 3,
760 
761  /// DeleteFrom
762  DeleteFrom = 4,
763 
764  /// Overlay
765  Overlay = 5
766  };
767  };
768 
769  /// Exposes list of available aggressor sides
770  struct ONIXS_EUREX_EMDI_API Side
771  {
772  enum Enum
773  {
774  /// Used to identify absence of value.
775  Undefined = -1,
776 
777  /// Buy
778  Buy = 1,
779 
780  /// Sell
781  Sell = 2,
782  };
783  };
784 
785  /// Exposes list of available market segment statuses.
786  struct ONIXS_EUREX_EMDI_API MarketSegmentStatus
787  {
788  enum Enum
789  {
790  /// Used to identify absence of value.
791  Undefined = -1,
792 
793  /// Defines if product is traded on on NTA.
794  Active = 0,
795 
796  /// Inactive
797  Inactive = 1,
798 
799  /// Defines if product is still traded on "Eurex classic"
800  Published = 2,
801  };
802  };
803 
804  /// Exposes list of available instrument types for tick rule.
805  struct ONIXS_EUREX_EMDI_API InstrumentType
806  {
807  enum Enum
808  {
809  /// Used to identify absence of value.
810  Undefined = -1,
811 
812  /// Simple instrument
813  SimpleInstrument = 1,
814 
815  /// Standard option strategy
816  StandardOptionStrategy = 2,
817 
818  /// Non standard option strategy
819  NonStandardOptionStrategy = 3,
820 
821  /// Volatility strategy
822  VolatilityStrategy = 4,
823 
824  /// Futures spread
825  FuturesSpread = 5,
826 
827  /// Inter Product Spread
828  InterProductSpread = 6,
829 
830  /// Standard Futures Strategy
831  StandardFuturesStrategy = 7,
832 
833  /// Pack And Bundle
834  PackAndBundle = 8,
835 
836  /// Strip
837  Strip = 9,
838 
839  /// Flexible
840  Flexible = 10,
841 
842  /// Commodity Strips
843  CommodityStrips = 11,
844 
845  /// Scaled Simple Instrument
846  ScaledSimpleInstrument = 12,
847 
848  /// Non Standard Volatility Strategy
849  NonStandardVolatilityStrategy = 13
850  };
851  };
852 
853  /// Exposes list of available book types.
854  struct ONIXS_EUREX_EMDI_API BookType
855  {
856  enum Enum
857  {
858  /// Used to identify absence of value.
859  Undefined = -1,
860 
861  /// Top Of Book
862  TopOfBook = 0,
863 
864  /// Price Depth
865  PriceDepth = 1,
866 
867  /// Order Depth
868  OrderDepth = 2,
869  };
870  };
871 
872  /// Exposes list of available sub book types.
873  struct ONIXS_EUREX_EMDI_API SubBookType
874  {
875  enum Enum
876  {
877  /// Used to identify absence of value.
878  Undefined = -1,
879 
880  /// Price Depth
881  IPSImpliedVolumeWithoutQuantityRestriction = 0,
882 
883  /// Order Depth
884  IPSImpliedVolumeWithQuantityRestriction = 1,
885  };
886  };
887 
888  /// Indicator for stressed market conditions.
889  struct ONIXS_EUREX_EMDI_API MarketCondition
890  {
891  enum Enum
892  {
893  /// Used to identify absence of value.
894  Undefined = -1,
895 
896  /// Normal
897  Normal = 0,
898 
899  /// Stressed
900  Stressed = 1
901  };
902  };
903 
904  /// A trade has to be flagged as "algorithmic", if at least one of the
905  /// matched orders was submitted by a trading algorithm.Applicable
906  /// for cash market products only.
907  struct ONIXS_EUREX_EMDI_API AlgorithmicTradeIndicator
908  {
909  enum Enum
910  {
911  /// Used to identify absence of value.
912  Undefined = -1,
913 
914  /// Algorithmic Trade
915  AlgorithmicTrade = 1
916  };
917  };
918 
919  /// MultiLegReportingType
920  struct ONIXS_EUREX_EMDI_API MultiLegReportingType
921  {
922  enum Enum
923  {
924  /// Used to identify absence of value.
925  Undefined = -1,
926 
927  /// Single Security
928  SingleSecurity = 1,
929 
930  /// Individual Leg Of A MultiLeg Security
931  IndividualLegOfMultiLegSecurity = 2,
932 
933  /// Multi Leg Security
934  MultiLegSecurity = 3
935  };
936  };
937 
938  /// MultiLegPriceModel
939  struct ONIXS_EUREX_EMDI_API MultiLegPriceModel
940  {
941  enum Enum
942  {
943  /// Used to identify absence of value.
944  Undefined = -1,
945 
946  /// Standard
947  Standard = 0,
948 
949  /// User Defined
950  UserDefined = 2
951  };
952  };
953 
954 
955  /// Exposes list of available sold out indicators.
956  struct ONIXS_EUREX_EMDI_API SoldOutIndicator
957  {
958  enum Enum
959  {
960  /// Used to identify absence of value.
961  Undefined = -1,
962 
963  ///
964  SoldOut = 1,
965  };
966  };
967 
968  ///
969  struct ONIXS_EUREX_EMDI_API LastFragment
970  {
971  enum Enum
972  {
973  /// Used to identify absence of value.
974  Undefined = -1,
975 
976  /// NotLastMessage
977  NotLastMessage = 0,
978 
979  /// LastMessage
981  };
982  };
983 
984  namespace EOBI
985  {
986  /// Alias for Quantity Type
987  /// Quantity in integer format including 4 decimals.
988  typedef Int64 QuantityType;
989 
990  struct ONIXS_EUREX_EMDI_API AggressorSide // UInt8
991  {
992  enum Enum
993  {
994  /// Used to identify absence of value
995  NoValue = 0xFF,
996 
997  /// Triggered by the buy side
998  Buy = 1,
999 
1000  /// Triggered by the sell side
1001  Sell = 2,
1002  };
1003 
1004  static std::string toString (Enum value);
1005  };
1006 
1007  struct ONIXS_EUREX_EMDI_API ApplSeqResetIndicator // UInt8
1008  {
1009  enum Enum
1010  {
1011  NoValue = 0xFF,
1012  NoReset = 0,
1013  Reset = 1,
1014  };
1015 
1016  static std::string toString (Enum value);
1017  };
1018 
1019  struct ONIXS_EUREX_EMDI_API CompletionIndicator // UInt8
1020  {
1021  enum Enum
1022  {
1023  NoValue = 0xFF,
1024  Incomplete = 0,
1025  Complete = 1,
1026  };
1027 
1028  static std::string toString (Enum value);
1029  };
1030 
1031  struct ONIXS_EUREX_EMDI_API FastMarketIndicator // UInt8
1032  {
1033  enum Enum
1034  {
1035  NoValue = 0xFF,
1036  No = 0,
1037  Yes = 1,
1038  };
1039 
1040  static std::string toString (Enum value);
1041  };
1042 
1043  struct ONIXS_EUREX_EMDI_API ImpliedMarketIndicator // UInt8
1044  {
1045  enum Enum
1046  {
1047  NoValue = 0xFF,
1048  NotImplied = 0,
1049  ImpliedInOut = 3,
1050  };
1051 
1052  static std::string toString (Enum value);
1053  };
1054 
1055  struct ONIXS_EUREX_EMDI_API LegSecurityIDSource // String(1)
1056  {
1057  enum Enum
1058  {
1059  NoValue = 0,
1060  Marketplace = 'M',
1061  };
1062 
1063  static std::string toString (Enum value);
1064  };
1065 
1066  struct ONIXS_EUREX_EMDI_API LegSide // UInt8
1067  {
1068  enum Enum
1069  {
1070  NoValue = 0xFF,
1071  Buy = 1,
1072  Sell = 2,
1073  };
1074 
1075  static std::string toString (Enum value);
1076  };
1077 
1078  struct ONIXS_EUREX_EMDI_API MDEntryType // UInt8
1079  {
1080  enum Enum
1081  {
1082  NoValue = 0xFF,
1083  Trade = 2,
1084  OpeningPrice = 4,
1085  ClosingPrice = 5,
1086  HighPrice = 7,
1087  LowPrice = 8,
1088  TradeVolume = 66,
1089  PreviousClosingPrice = 101,
1090  OpeningAuction = 200,
1091  IntradayAuction = 201,
1092  CircuitBreakerAuction = 202,
1093  ClosingAuction = 203,
1094  IPOAuction = 204,
1095  };
1096 
1097  static std::string toString (Enum value);
1098  };
1099 
1100  struct ONIXS_EUREX_EMDI_API MDReportEvent // UInt8
1101  {
1102  enum Enum
1103  {
1104  NoValue = 0xFF,
1105  ScopeDefinition = 0,
1106  };
1107  };
1108 
1109  struct ONIXS_EUREX_EMDI_API MDUpdateAction // UInt8
1110  {
1111  enum Enum
1112  {
1113  NoValue = 0xFF,
1114  New = 0,
1115  Change = 1,
1116  Delete = 2,
1117  Overlay = 5,
1118  };
1119  };
1120 
1121  struct ONIXS_EUREX_EMDI_API MarketDataType // UInt8
1122  {
1123  enum Enum
1124  {
1125  NoValue = 0xFF,
1126  OrderBookMaintenance = 1,
1127  OrderBookExecution = 2,
1130  AuctionBBO = 5,
1132  CrossTradeAnnouncement = 7,
1134  MarketSegmentSnapshot = 9,
1135  SingleInstrumentSnapshot = 10,
1136  OrderBookSnapshot = 11,
1137  MatchEvent = 12,
1139 
1140  ComplexInstrument = 14,
1141  TesTradeReport = 15,
1142  HhIndex = 16,
1143  FlexibleInstrument = 17,
1144  };
1145  };
1146 
1147  struct ONIXS_EUREX_EMDI_API MatchSubType // UInt8
1148  {
1149  enum Enum
1150  {
1151  NoValue = 0xFF,
1152  OpeningAuction = 1,
1153  ClosingAuction = 2,
1154  IntradayAuction = 3,
1155  CircuitBreakerAuction = 4,
1156  IPOAuction = 5,
1157  };
1158 
1159  static std::string toString (Enum value);
1160  };
1161 
1162  struct ONIXS_EUREX_EMDI_API MatchType // UInt8
1163  {
1164  enum Enum
1165  {
1166  NoValue = 0xFF,
1167  Manual = 3,
1168  Uncrossing = 5,
1169  Auction = 7,
1170  LiquidityImprovementCross = 13,
1171  ContinuousAuction = 14
1172  };
1173 
1174  static std::string toString (Enum value);
1175  };
1176 
1177  struct ONIXS_EUREX_EMDI_API NoMarketSegments // UInt8
1178  {
1179  enum Enum
1180  {
1181  NoValue = 0xFF,
1182  One = 1,
1183  };
1184 
1185  static std::string toString (Enum value);
1186  };
1187 
1188  struct ONIXS_EUREX_EMDI_API ProductComplex // UInt8
1189  {
1190  enum Enum
1191  {
1192  NoValue = 0xFF,
1193 
1194  SimpleInstrument = 1,
1195  StandardOptionStrategy = 2,
1196  NonStandardOptionStrategy = 3,
1197  VolatilityStrategy = 4,
1198  FuturesSpread = 5,
1199  InterProductSpread = 6,
1200  StandardFuturesStrategy = 7,
1201  PackAndBundle = 8,
1202  Strip = 9,
1203  FlexibleInstrument = 10,
1204  CommodityStrip = 11,
1205  ScaledSimpleInstrument = 12,
1206  NonStandardVolatilityStrategy = 13
1207  };
1208 
1209  static std::string toString (Enum value);
1210  };
1211 
1212  struct ONIXS_EUREX_EMDI_API SecurityIDSource // String(1)
1213  {
1214  enum Enum
1215  {
1216  NoValue = 0,
1217  Marketplace = 'M',
1218  };
1219 
1220  static std::string toString (Enum value);
1221  };
1222 
1223  struct ONIXS_EUREX_EMDI_API SecurityStatus // UInt8
1224  {
1225  enum Enum
1226  {
1227  NoValue = 0xFF,
1228  Active = 1,
1229  Inactive = 2,
1230  Expired = 4,
1231  KnockedOut = 6,
1232  KnockOutRevoked = 7,
1233  Suspended = 9,
1234  PendingDeletion = 11,
1235  KnockedOutAndSuspended = 12,
1236  };
1237 
1238  static std::string toString (Enum value);
1239  };
1240 
1241  struct ONIXS_EUREX_EMDI_API SecurityTradingStatus // UInt8
1242  {
1243  enum Enum
1244  {
1245  NoValue = 0xFF,
1246 
1247  TradingHalt = 2,
1248  MarketImbalanceBuy = 7,
1249  MarketImbalanceSell = 8,
1250  Closed = 200,
1251  Restricted = 201,
1252  Book = 202,
1253  Continuous = 203,
1254  OpeningAuction = 204,
1255  OpeningAuctionFreeze = 205,
1256  IntradayAuction = 206,
1257  IntradayAuctionFreeze = 207,
1258  CircuitBreakerAuction = 208,
1259  CircuitBreakerAuctionFreeze = 209,
1260  ClosingAuction = 210,
1261  ClosingAuctionFreeze = 211,
1262  IPOAuction = 212,
1263  IPOAuctionFreeze = 213,
1264  PreCall = 214,
1265  Call = 215,
1266  Freeze = 216,
1267  TradeAtClose = 217,
1268  CircuitBreakerAuctionTriggeredByStaticLimitBreach = 220,
1269  CircuitBreakerAuctionTriggeredByStaticLimitBreachFreeze = 221
1270  };
1271 
1272  static std::string toString (Enum value);
1273  };
1274 
1275  struct ONIXS_EUREX_EMDI_API SecurityType // String(4)
1276  {
1277  enum Enum
1278  {
1279  NoValue = 0,
1280  Option = 1, // OPT,
1281  Future = 2, // FUT,
1282  MultiLeg = 3 // MLEG,
1283  };
1284 
1285  static std::string toString (Enum value);
1286  };
1287 
1288  struct ONIXS_EUREX_EMDI_API SecurityUpdateAction // String(1)
1289  {
1290  enum Enum
1291  {
1292  NoValue = 0,
1293  Add = 'A',
1294  Delete = 'D',
1295  };
1296 
1297  static std::string toString (Enum value);
1298  };
1299 
1300  struct ONIXS_EUREX_EMDI_API Side // UInt8
1301  {
1302  enum Enum
1303  {
1304  NoValue = 0xFF,
1305  Buy = 1,
1306  Sell = 2,
1307  };
1308 
1309  static std::string toString (Enum value);
1310  };
1311 
1312  /// Indicates whether a synthetic match is occurred.
1313  struct ONIXS_EUREX_EMDI_API TradeCondition // UInt16
1314  {
1315  enum Enum
1316  {
1317  NoValue = 0xFFFF,
1318  ImpliedTrade = 1,
1319  OutOfSequence = 107,
1320  MidpointPrice = 155,
1321  TradingOnTermsOfIssue = 156,
1322  SpetialAuction = 596,
1323  TradeAtClose = 624,
1324  Retail = 743
1325  };
1326 
1327  static std::string toString (Enum value);
1328  };
1329 
1330  struct ONIXS_EUREX_EMDI_API TradSesEvent // UInt8
1331  {
1332  enum Enum
1333  {
1334  NoValue = 0xFF,
1335  TBD = 0,
1336  StatusChange = 3,
1337  };
1338 
1339  static std::string toString (Enum value);
1340  };
1341 
1342  struct ONIXS_EUREX_EMDI_API TradSesStatus // UInt8
1343  {
1344  enum Enum
1345  {
1346  NoValue = 0xFF,
1347  Halted = 1,
1348  Open = 2,
1349  Closed = 3,
1350  };
1351 
1352  static std::string toString (Enum value);
1353  };
1354 
1355  struct ONIXS_EUREX_EMDI_API TradingSessionID // UInt8
1356  {
1357  enum Enum
1358  {
1359  NoValue = 0xFF,
1360  Day = 1,
1361  Morning = 3,
1362  Evening = 5,
1363  AfterHours = 6,
1364  Holiday = 7,
1365  };
1366 
1367  static std::string toString (Enum value);
1368  };
1369 
1370  struct ONIXS_EUREX_EMDI_API TradingSessionSubID // UInt8
1371  {
1372  enum Enum
1373  {
1374  NoValue = 0xFF,
1375  PreTrading = 1,
1376  Continuous = 3,
1377  Closing = 4,
1378  PostTrading = 5,
1379  Quiescent = 7,
1380  };
1381 
1382  static std::string toString (Enum value);
1383  };
1384 
1385 
1386  struct ONIXS_EUREX_EMDI_API PotentialSecurityTradingEvent // UInt8
1387  {
1388  enum Enum
1389  {
1390  NoValue = 0xFF,
1391 
1392  /// None
1393  None = 0,
1394 
1395  /// Price volatility, auction is extended
1396  PriceVolatilityAuctionIsExtended = 10,
1397  };
1398 
1399  static std::string toString (Enum value);
1400  };
1401 
1402  struct ONIXS_EUREX_EMDI_API OrdType // UInt8
1403  {
1404  enum Enum
1405  {
1406  NoValue = 0xFF,
1407 
1408  /// Market Order
1409  MarketOrder = 1,
1410  };
1411 
1412  static std::string toString(Enum value);
1413  };
1414 
1415  struct ONIXS_EUREX_EMDI_API SecurityTradingEvent // UInt8
1416  {
1417  enum Enum
1418  {
1419  NoValue = 0xFF,
1420 
1421  /// Price volatility, auction is extended
1422  PriceVolatilityAuctionIsExtended = 10,
1423 
1424  /// Price volatility, auction is extended again
1425  PriceVolatilityAuctionIsExtendedAgain = 11,
1426  };
1427 
1428  static std::string toString (Enum value);
1429  };
1430 
1431  struct ONIXS_EUREX_EMDI_API OrderType // UInt8
1432  {
1433  enum Enum
1434  {
1435  NoValue = 0xFF,
1436 
1437  ///
1438  MarketOrder = 1,
1439  };
1440 
1441  static std::string toString (Enum value);
1442  };
1443 
1444  struct ONIXS_EUREX_EMDI_API AlgorithmicTradeIndicator // UInt8
1445  {
1446  enum Enum
1447  {
1448  NoValue = 0xFF,
1449 
1450  ///
1451  AlgorithmicTrade = 1,
1452  };
1453 
1454  static std::string toString(Enum value);
1455  };
1456 
1457  struct ONIXS_EUREX_EMDI_API MarketCondition // UInt8
1458  {
1459  enum Enum
1460  {
1461  NoValue = 0xFF,
1462 
1463  ///
1464  Normal = 0,
1465 
1466  ///
1467  Stressed = 1
1468  };
1469 
1470  static std::string toString(Enum value);
1471  };
1472 
1473  struct ONIXS_EUREX_EMDI_API LegSecurityType // UInt8
1474  {
1475  enum Enum
1476  {
1477  NoValue = 0xFF,
1478 
1479  ///
1480  LegSecurityMultiLeg = 0,
1481 
1482  ///
1483  LegSecurityUnderlyingLeg = 1
1484  };
1485 
1486  static std::string toString(Enum value);
1487  };
1488 
1489  struct ONIXS_EUREX_EMDI_API SoldOutIndicator // UInt8
1490  {
1491  enum Enum
1492  {
1493  NoValue = 0xFF,
1494 
1495  ///
1496  SoldOut = 1,
1497  };
1498 
1499  static std::string toString(Enum value);
1500  };
1501 
1502  struct ONIXS_EUREX_EMDI_API SecurityMassStatus // UInt8
1503  {
1504  enum Enum
1505  {
1506  NoValue = 0xFF,
1507 
1508  ///
1509  Active = 1,
1510 
1511  ///
1512  Inactive = 2,
1513 
1514  ///
1515  Expired = 4,
1516 
1517  ///
1518  KnockedOut = 6,
1519 
1520  ///
1521  KnockOutRevoked = 7,
1522 
1523  ///
1524  Suspended = 9,
1525 
1526  ///
1527  PendingDeletion = 11,
1528 
1529  ///
1530  KnockedOutAndSuspended = 12
1531  };
1532 
1533  static std::string toString(Enum value);
1534  };
1535 
1536  struct ONIXS_EUREX_EMDI_API SecurityMassTradingStatus // UInt8
1537  {
1538  enum Enum
1539  {
1540  NoValue = 0xFF,
1541 
1542  ///
1543  TradingHalt = 2,
1544 
1545  ///
1546  MarketImbalanceBuy = 7,
1547 
1548  ///
1549  MarketImbalanceSell = 8,
1550 
1551  ///
1552  Closed = 200,
1553 
1554  ///
1555  Restricted = 201,
1556 
1557  ///
1558  Book = 202,
1559 
1560  ///
1561  Continuous = 203,
1562 
1563  ///
1564  OpeningAuction = 204,
1565 
1566  ///
1567  OpeningAuctionFreeze = 205,
1568 
1569  ///
1570  IntradayAuction = 206,
1571 
1572  ///
1573  IntradayAuctionFreeze = 207,
1574 
1575  ///
1576  CircuitBreakerAuction = 208,
1577 
1578  ///
1579  CircuitBreakerAuctionFreeze = 209,
1580 
1581  ///
1582  ClosingAuction = 210,
1583 
1584  ///
1585  ClosingAuctionFreeze = 211,
1586 
1587  ///
1588  IPOAuction = 212,
1589 
1590  ///
1591  IPOAuctionFreeze = 213,
1592 
1593  ///
1594  PreCall = 214,
1595 
1596  ///
1597  Call = 215,
1598 
1599  ///
1600  Freeze = 216,
1601 
1602  ///
1603  TradeAtClose = 217
1604  };
1605 
1606  static std::string toString(Enum value);
1607  };
1608 
1609  struct ONIXS_EUREX_EMDI_API MassMarketCondition // UInt8
1610  {
1611  enum Enum
1612  {
1613  NoValue = 0xFF,
1614 
1615  ///
1616  Normal = 0,
1617 
1618  ///
1619  Stressed = 1
1620  };
1621 
1622  static std::string toString(Enum value);
1623  };
1624 
1625  struct ONIXS_EUREX_EMDI_API SecurityMassTradingEvent // UInt8
1626  {
1627  enum Enum
1628  {
1629  NoValue = 0xFF,
1630 
1631  /// Price volatility, auction is extended
1632  PriceVolatilityAuctionIsExtended = 10,
1633 
1634  /// Price volatility, auction is extended again
1635  PriceVolatilityAuctionIsExtendedAgain = 11
1636  };
1637 
1638  static std::string toString(Enum value);
1639  };
1640 
1641  struct ONIXS_EUREX_EMDI_API MassSoldOutIndicator // UInt8
1642  {
1643  enum Enum
1644  {
1645  NoValue = 0xFF,
1646 
1647  ///
1648  SoldOut = 1,
1649  };
1650 
1651  static std::string toString(Enum value);
1652  };
1653 
1654 
1655  struct ONIXS_EUREX_EMDI_API LastFragment // UInt8
1656  {
1657  enum Enum
1658  {
1659  NoValue = 0xFF,
1660 
1661  ///
1662  N = 0,
1663 
1664  ///
1665  Y = 1,
1666  };
1667 
1668  static std::string toString(Enum value);
1669  };
1670 
1671  struct ONIXS_EUREX_EMDI_API PutOrCall // UInt8
1672  {
1673  enum Enum
1674  {
1675  NoValue = 0xFF,
1676 
1677  ///
1678  Put = 0,
1679 
1680  ///
1681  Call = 1,
1682  };
1683 
1684  static std::string toString(Enum value);
1685  };
1686 
1687  struct ONIXS_EUREX_EMDI_API ExerciseStyle // UInt8
1688  {
1689  enum Enum
1690  {
1691  NoValue = 0xFF,
1692 
1693  ///
1694  European = 0,
1695 
1696  ///
1697  American = 1,
1698  };
1699 
1700  static std::string toString(Enum value);
1701  };
1702 
1703  struct ONIXS_EUREX_EMDI_API SettlMethod // UInt8
1704  {
1705  enum Enum
1706  {
1707  NoValue = 0xFF,
1708 
1709  ///
1710  Cash = 0,
1711 
1712  ///
1713  Physical = 1,
1714  };
1715 
1716  static std::string toString(Enum value);
1717  };
1718 
1719 
1720  struct ONIXS_EUREX_EMDI_API TrdType // UInt16
1721  {
1722  enum Enum
1723  {
1724  NoValue = 0xFFFF,
1725 
1726  BlockTrade = 1,
1727  ExchangeForPhysical = 2,
1728  EFS = 12,
1729  PortfolioCompressionTrade = 50,
1730  OTC = 54,
1731  ExchangeBasisFacility = 55,
1732  VolaTrade = 1000,
1733  EFPFinTrade = 1001,
1734  EFPIndexFuturesTrade = 1002,
1735  BlockTradeAtMarket = 1004,
1736  XetraEurexEnlightTriggeredTrade = 1006,
1737  BlockQTPIPTrade = 1007,
1738  TradeAtMarket = 1017
1739  };
1740 
1741  static std::string toString(Enum value);
1742  };
1743 
1744  struct ONIXS_EUREX_EMDI_API MultiLegReportingType // UInt8
1745  {
1746  enum Enum
1747  {
1748  NoValue = 0xFF,
1749 
1750  ///
1751  SingleSecurity = 1,
1752 
1753  ///
1754  IndividualLeg = 2,
1755 
1756  ///
1757  MultiLegSecurity = 3,
1758  };
1759 
1760  static std::string toString(Enum value);
1761  };
1762 
1763  struct ONIXS_EUREX_EMDI_API MultiLegPriceModel // UInt8
1764  {
1765  enum Enum
1766  {
1767  NoValue = 0xFF,
1768 
1769  ///
1770  Standard = 0,
1771 
1772  ///
1773  UserDefined = 1,
1774  };
1775 
1776  static std::string toString(Enum value);
1777  };
1778 
1779  struct ONIXS_EUREX_EMDI_API MDOriginType // UInt8
1780  {
1781  enum Enum
1782  {
1783  NoValue = 0xFF,
1784 
1785  ///
1786  Book = 0,
1787 
1788  ///
1789  OffBook = 1,
1790  };
1791 
1792  static std::string toString(Enum value);
1793  };
1794 
1795  struct ONIXS_EUREX_EMDI_API TESTradSesStatus // UInt8
1796  {
1797  enum Enum
1798  {
1799  NoValue = 0xFF,
1800 
1801  ///
1802  Halted = 1,
1803 
1804  ///
1805  Open = 2,
1806 
1807  ///
1808  Closed = 3,
1809 
1810  ///
1811  PreClose = 4,
1812  };
1813 
1814  static std::string toString(Enum value);
1815  };
1816 
1817 
1818  struct ONIXS_EUREX_EMDI_API TESSecurityStatus // UInt8
1819  {
1820  enum Enum
1821  {
1822  NoValue = 0xFF,
1823 
1824  ///
1825  Active = 1,
1826 
1827  ///
1828  Inactive = 2,
1829 
1830  ///
1831  Expired = 4,
1832 
1833  ///
1834  Suspended = 9,
1835  };
1836 
1837  static std::string toString(Enum value);
1838  };
1839 
1840  struct ONIXS_EUREX_EMDI_API TESSecurityMassStatus // UInt8
1841  {
1842  enum Enum
1843  {
1844  NoValue = 0xFF,
1845 
1846  ///
1847  Active = 1,
1848 
1849  ///
1850  Inactive = 2,
1851 
1852  ///
1853  Expired = 4,
1854 
1855  ///
1856  Suspended = 9,
1857  };
1858 
1859  static std::string toString(Enum value);
1860  };
1861 
1862  }
1863  }
1864  }
1865 }
unsigned int SequenceNumber
Alias for sequence numbers.
Exposes list of available trade session statuses.
Definition: Defines.h:202
UInt32 PartitionId
Alias for Partition ID type.
Definition: Defines.h:48
Exposes list of available sold out indicators.
Definition: Defines.h:956
UInt32 MarketDepth
Alias for Market depth type.
Definition: Defines.h:43
UInt32 senderCompID
Unique id for a sender.
Definition: Defines.h:122
Timestamp packetReceptionTime
Time when the packet was received by Handler from UDP, in system ticks,.
Definition: Defines.h:96
Exposes list of available book types.
Definition: Defines.h:854
Indicator for stressed market conditions.
Definition: Defines.h:889
Exposes list of available security trading statuses.
Definition: Defines.h:436
Exposes list of available origin types.
Definition: Defines.h:726
Exposes list of available update actions.
Definition: Defines.h:742
Exposes list of available market segment statuses.
Definition: Defines.h:786
Exposes list of available trade types.
Definition: Defines.h:298
Exposes list of available security statuses.
Definition: Defines.h:164
Exposes list of available trade conditions.
Definition: Defines.h:528
UInt64 sendingTime
Time when market data feed handler writes packet on the wire.
Definition: Defines.h:112
unsigned int UInt32
Definition: Numeric.h:41
Exposes list of available trading session IDs.
Definition: Defines.h:374
Definition: Defines.h:30
SequenceNumber packetSeqNum
Packet sequence number.
Definition: Defines.h:103
const MarketSegmentId UndefinedMarketSegmentId
Definition: Defines.h:45
Int64 SecurityId
Alias for Security Id type.
Definition: Defines.h:51
std::string MarketSegment
Alias for Market Segment type (Product name).
Definition: Defines.h:37
Exposes list of available instrument types for tick rule.
Definition: Defines.h:805
Feed roles (primary, secondary).
Definition: Defines.h:74
NetFeedRole::Enum Origin
An origin of the packet.
Definition: Defines.h:140
char Base
Integral base type of enumeration.
Definition: Defines.h:77
Represents timestamp without time-zone information.
Definition: Timestamp.h:87
Exposes list of available sub book types.
Definition: Defines.h:873
Exchange for Physical Fin trade.
Definition: Defines.h:331
Feed types based on type of market data service.
Definition: Defines.h:57
bool contain(TradeCondition::Enum value) const
Definition: Defines.h:657
Exchange for Physical.
Definition: Defines.h:316
Exposes list of available trading session sub IDs.
Definition: Defines.h:399
bool isLastInPacket
Indicates whether a message is last in the packet.
Definition: Defines.h:109
char Base
Integral base type of enumeration.
Definition: Defines.h:60
Exposes list of available entry types.
Definition: Defines.h:240
UInt32 MarketSegmentId
Alias for Market Segment ID type.
Definition: Defines.h:40
Market recovery for MBP (Market By Price) books.
Definition: Defines.h:69
SequenceNumber packetMessageSeqNum
Packet message number.
Definition: Defines.h:106
Exposes list of available aggressor sides.
Definition: Defines.h:770
UInt64 Quantity
Alias for Quantity type.
Definition: Defines.h:54
Indicates whether a synthetic match is occurred.
Definition: Defines.h:1313
Exposes list of leg sides.
Definition: Defines.h:148
Enum
List of known feed roles.
Definition: Defines.h:80
Enum
Feed types based on type of market data service.
Definition: Defines.h:63