OnixS C++ Eurex T7 Market and Reference Data (EMDI, MDI, RDI, EOBI) Handlers  16.1.0
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  /// Appends text presentation.
58  void toString (std::string&) const;
59 
60  private:
62 
63  AddComplexInstrumentEntry (const void* data);
64  };
65 
66  class ONIXS_EUREX_EMDI_API AddComplexInstrumentEntries : public DataContainer
67  {
68  public:
69  /// Number of entries
70  size_t size() const;
71 
72  /// Entry accessor
73  AddComplexInstrumentEntry operator[] (size_t idx) const;
74 
75  /// Appends text presentation.
76  void toString (std::string&) const;
77 
78  private:
79  friend class AddComplexInstrument;
80 
81  AddComplexInstrumentEntries (const void* data);
82  };
83 
84  class ONIXS_EUREX_EMDI_API AddComplexInstrument : public MessageBase
85  {
86  public:
87  /// Message type
88  std::string msgType() const;
89 
90  /// Market data type
91  EOBI::MarketDataType::Enum marketDataType() const;
92 
93  /// Security update action
94  EOBI::SecurityUpdateAction::Enum securityUpdateAction() const;
95 
96  /// Marketplace assigned identifier.
97  EOBI::SecurityIDSource::Enum securityIDSource() const;
98 
99  /// Marketplace assigned identifier.
100  EOBI::LegSecurityIDSource::Enum legSecurityIDSource() const;
101 
102  /// Number of market segments
103  EOBI::NoMarketSegments::Enum noMarketSegments() const;
104 
105  /// Security type
106  EOBI::SecurityType::Enum securityType() const;
107 
108  /// Unique instrument identifier.
109  UInt64 securityID() const;
110 
111  /// Transaction timestamp.
112  UInt64 transactTime() const;
113 
114  /// Human readable description of instrument.
115  StringRef securityDesc() const;
116 
117  /// Strategy Type.
118  UInt32 securitySubType() const;
119 
120  /// This field qualifies an instrument type on Eurex.
121  EOBI::ProductComplex::Enum productComplex() const;
122 
123  /// Indicates that an implied market to be created for either the legs of a multi-leg
124  /// instrument (Implied-in) or for the multi-leg instrument based on the existence of the legs (Impliedout).
125  /// Determination as to whether implied markets should be created is generally done at the level of the multileg instrument.
126  /// Commonly used in listed derivatives.
127  EOBI::ImpliedMarketIndicator::Enum impliedMarketIndicator() const;
128 
129  ///
130  bool quantityScalingFactor(UInt16& result) const ONIXS_EUREX_EMDI_NOEXCEPT;
131 
132  /// LastFragment
133  LastFragment::Enum lastFragment() const;
134 
135  /// Common integer multiple of the option legs for Option Volatility Strategies.
136  UInt32 legRatioMultiplier() const;
137 
138  /// Counter: number of Legs repeating group instances.
139  UInt8 noLegs() const;
140 
141  /// Variable size array, record counter: NoLegs
142  AddComplexInstrumentEntries instrmtLegGrp() const;
143 
144  /// Appends text presentation.
145  void toString (std::string&) const ONIXS_EUREX_EMDI_OVERRIDE;
146 
147  private:
148  friend class Implementation::MessageFactory;
149 
150  AddComplexInstrument (const void* data, const DataSource& dataSource) : MessageBase (data, dataSource) {}
151  };
152  }
153  }
154  }
155 }
unsigned char UInt8
Definition: Numeric.h:35
#define ONIXS_EUREX_EMDI_NOEXCEPT
Definition: Compiler.h:122
#define ONIXS_EUREX_EMDI_OVERRIDE
Definition: Compiler.h:126
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