OnixS C++ Eurex T7 Market and Reference Data (EMDI, MDI, RDI, EOBI) Handlers  18.0.1
API documentation
AddComplexInstrument.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 
27 
28 namespace OnixS
29 {
30  namespace Eurex
31  {
32  namespace MarketData
33  {
34  namespace EOBI
35  {
36  class ONIXS_EUREX_EMDI_API AddComplexInstrumentEntry : public DataContainer
37  {
38  public:
39  /// Product identifier of the leg security (only applicable for underlying leg).
40  UInt32 legSymbol() const;
41 
42  /// Instrument identifier of the leg security.
43  UInt64 legSecurityID() const;
44 
45  /// Leg Price
46  bool legPrice (Decimal& price) const;
47 
48  /// The ratio of quantity for this individual leg relative to the entire multi-leg security.
49  UInt32 legRatioQty() const;
50 
51  /// Leg Security Type
52  EOBI::LegSecurityType::Enum legSecurityType() const;
53 
54  /// The side of the individual leg of a strategy as defined in signature
55  EOBI::LegSide::Enum legSide() const;
56 
57  ///
58  EOBI::RelatedPriceType::Enum relatedPriceType() const;
59 
60  ///
61  EOBI::TradingStyle::Enum tradingStyle() const;
62 
63  ///
64  EOBI::RelatedPriceType::Enum relatedPrice() const;
65 
66 
67  /// Appends text presentation.
68  void toString (std::string&) const;
69 
70  private:
72 
73  AddComplexInstrumentEntry (const void* data);
74  };
75 
76  class ONIXS_EUREX_EMDI_API AddComplexInstrumentEntries : public DataContainer
77  {
78  public:
79  /// Number of entries
80  size_t size() const;
81 
82  /// Entry accessor
83  AddComplexInstrumentEntry operator[] (size_t idx) const;
84 
85  /// Appends text presentation.
86  void toString (std::string&) const;
87 
88  private:
89  friend class AddComplexInstrument;
90 
91  AddComplexInstrumentEntries (const void* data);
92  };
93 
94  class ONIXS_EUREX_EMDI_API AddComplexInstrument : public MessageBase
95  {
96  public:
97  /// Message type
98  std::string msgType() const;
99 
100  /// Market data type
101  EOBI::MarketDataType::Enum marketDataType() const;
102 
103  /// Security update action
104  EOBI::SecurityUpdateAction::Enum securityUpdateAction() const;
105 
106  /// Marketplace assigned identifier.
107  EOBI::SecurityIDSource::Enum securityIDSource() const;
108 
109  /// Marketplace assigned identifier.
110  EOBI::LegSecurityIDSource::Enum legSecurityIDSource() const;
111 
112  /// Number of market segments
113  EOBI::NoMarketSegments::Enum noMarketSegments() const;
114 
115  /// Security type
116  EOBI::SecurityType::Enum securityType() const;
117 
118  /// Unique instrument identifier.
119  UInt64 securityID() const;
120 
121  /// Transaction timestamp.
122  UInt64 transactTime() const;
123 
124  /// Human readable description of instrument.
125  StringRef securityDesc() const;
126 
127  /// Strategy Type.
128  UInt32 securitySubType() const;
129 
130  /// This field qualifies an instrument type on Eurex.
131  EOBI::ProductComplex::Enum productComplex() const;
132 
133  /// Indicates that an implied market to be created for either the legs of a multi-leg
134  /// instrument (Implied-in) or for the multi-leg instrument based on the existence of the legs (Impliedout).
135  /// Determination as to whether implied markets should be created is generally done at the level of the multileg instrument.
136  /// Commonly used in listed derivatives.
137  EOBI::ImpliedMarketIndicator::Enum impliedMarketIndicator() const;
138 
139  ///
140  bool quantityScalingFactor(UInt16& result) const ONIXS_EUREX_EMDI_NOEXCEPT;
141 
142  /// LastFragment
143  LastFragment::Enum lastFragment() const;
144 
145  /// Common integer multiple of the option legs for Option Volatility Strategies.
146  UInt32 legRatioMultiplier() const;
147 
148  /// Counter: number of Legs repeating group instances.
149  UInt8 noLegs() const;
150 
151  /// Variable size array, record counter: NoLegs
152  AddComplexInstrumentEntries instrmtLegGrp() const;
153 
154  /// Appends text presentation.
155  void toString (std::string&) const ONIXS_EUREX_EMDI_OVERRIDE;
156 
157  private:
158  friend class Implementation::MessageFactory;
159 
160  AddComplexInstrument (const void* data, const DataSource& dataSource) : MessageBase (data, dataSource) {}
161  };
162  }
163  }
164  }
165 }
unsigned char UInt8
Definition: Numeric.h:35
#define ONIXS_EUREX_EMDI_NOEXCEPT
Definition: Compiler.h:130
#define ONIXS_EUREX_EMDI_OVERRIDE
Definition: Compiler.h:134
unsigned int UInt32
Definition: Numeric.h:41
Definition: Defines.h:30
Decimal type for better precision.
Definition: Numeric.h:63
unsigned short UInt16
Definition: Numeric.h:38