OnixS C++ CBOE CFE Binary Order Entry (BOE) Handler  1.11.0
API documentation
MutableOrderExecution.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 <vector>
23 
28 
29 
30 namespace OnixS {
31 namespace CboeCFE {
32 namespace Trading {
33 namespace BOE {
34 namespace Testing {
35 
36  /// An Order Execution is sent for each fill on an order.
37  struct ONIXS_CBOE_CFE_BOE_API MutableOrderExecution : public OutgoingMessage
38  {
39  /// The time the event occurred in the CFE Matching Engine (not the time the message was sent).
41  {
42  return transactionTime_;
43  }
44 
45  /// The time the event occurred in the CFE Matching Engine (not the time the message was sent).
47  {
48  transactionTime_ = value;
49  }
50 
51  /// The order which was executed
52  StrRef clOrdId() const
53  {
54  return clOrdId_;
55  }
56 
57  /// The order which was executed
58  void clOrdId(StrRef value)
59  {
60  clOrdId_ = value;
61  }
62 
63  /// Sent to the OCC in the Trade Id field.
64  Binary8 execId() const
65  {
66  return execId_;
67  }
68 
69  /// Sent to the OCC in the Trade Id field.
70  void execId(Binary8 value)
71  {
72  execId_ = value;
73  }
74 
75  /// Executed contracts quantity.
77  {
78  return lastShares_;
79  }
80 
81  /// Executed contracts quantity.
82  void lastShares(Binary4 value)
83  {
84  lastShares_ = value;
85  }
86 
87  /// Price of this fill.
89  {
90  return lastPx_;
91  }
92 
93  /// Price of this fill.
94  void lastPx(BinaryPrice value)
95  {
96  lastPx_ = value;
97  }
98 
99  /// Quantity still open for further execution. If zero, the order is complete.
101  {
102  return leavesQty_;
103  }
104 
105  /// Quantity still open for further execution. If zero, the order is complete.
106  void leavesQty(Binary4 value)
107  {
108  leavesQty_ = value;
109  }
110 
111  /// Indicates whether the trade added or removed liquidity.
113  {
114  return baseLiquidityIndicator_;
115  }
116 
117  /// Indicates whether the trade added or removed liquidity.
119  {
120  baseLiquidityIndicator_ = value;
121  }
122 
123  /// Additional information about the liquidity of an order.
125  {
126  return subLiquidityIndicator_;
127  }
128 
129  /// Additional information about the liquidity of an order.
131  {
132  subLiquidityIndicator_ = value;
133  }
134 
135  /// Echoed back from the TPH message
136  Side::Enum side() const
137  {
138  return side_;
139  }
140 
141  /// Echoed back from the TPH message
142  void side(Side::Enum value)
143  {
144  side_ = value;
145  }
146 
147  /// Echoed back from the TPH message
148  StrRef symbol() const
149  {
150  return symbol_;
151  }
152 
153  /// Echoed back from the TPH message
154  void symbol(StrRef value)
155  {
156  symbol_ = value;
157  }
158 
159  /// Echoed back from the TPH message
161  {
162  return clearingFirm_;
163  }
164 
165  /// Echoed back from the TPH message
166  void clearingFirm(StrRef value)
167  {
168  clearingFirm_ = value;
169  }
170 
171  /// Maturity date of the instrument
173  {
174  return maturityDate_;
175  }
176 
177  /// Maturity date of the instrument
178  void maturityDate(Date value)
179  {
180  maturityDate_ = value;
181  }
182 
183  /// Indicates fee associated with an execution.
184  StrRef feeCode() const
185  {
186  return feeCode_;
187  }
188 
189  /// Indicates fee associated with an execution.
190  void feeCode(StrRef value)
191  {
192  feeCode_ = value;
193  }
194 
195  /// Business date of the execution.
196  Date tradeDate() const
197  {
198  return tradeDate_;
199  }
200 
201  /// Business date of the execution.
202  void tradeDate(Date value)
203  {
204  tradeDate_ = value;
205  }
206 
207  /// Size to clear with OCC.
209  {
210  return clearingSize_;
211  }
212 
213  /// Size to clear with OCC.
214  void clearingSize(Binary4 value)
215  {
216  clearingSize_ = value;
217  }
218 
219  /// Field is provided as a convenience to determine whether an Order Execution message is a preliminary notification representing a pending trade.
221  {
222  return pendingStatus_;
223  }
224 
225  /// Field is provided as a convenience to determine whether an Order Execution message is a preliminary notification representing a pending trade.
227  {
228  pendingStatus_ = value;
229  }
230 
231  /// Present on Order Execution, TAS Restatement and Variance Restatement messages representing either Spread orders or Simple orders that are part Spread execution.
233  {
234  return multilegReportingType_;
235  }
236 
237  /// Present on Order Execution, TAS Restatement and Variance Restatement messages representing either Spread orders or Simple orders that are part Spread execution.
239  {
240  multilegReportingType_ = value;
241  }
242 
243  /// Field indicates whether an execution is a spread or a simple instrument execution that is part of a spread trade.
245  {
246  return secondaryExecId_;
247  }
248 
249  /// Field indicates whether an execution is a spread or a simple instrument execution that is part of a spread trade.
251  {
252  secondaryExecId_ = value;
253  }
254 
255  /// Returns message type
256  MessageType::Enum type() const ONIXS_BATS_BOE_NOEXCEPT ONIXS_BATS_BOE_OVERRIDE { return MessageType::OrderExecution; };
257 
258  /// Validates message data
259  /// Throws std::invalid_argument exception if message content is invalid.
260  void validate() const ONIXS_BATS_BOE_OVERRIDE;
261 
262  /// Returns the text representation
263  std::string toString() const ONIXS_BATS_BOE_OVERRIDE;
264 
265  /// The text representation
266  void toString(std::string& str) const ONIXS_BATS_BOE_OVERRIDE;
267 
268  private:
269  size_t serializeTo(unsigned char*) const ONIXS_BATS_BOE_NOEXCEPT ONIXS_BATS_BOE_OVERRIDE;
270 
271  DateTime transactionTime_;
272  Text<20> clOrdId_;
273  Binary8 execId_;
274  Binary4 lastShares_;
275  BinaryPrice lastPx_;
276  Binary4 leavesQty_;
277  BaseLiquidityIndicator::Enum baseLiquidityIndicator_;
278  SubLiquidityIndicator::Enum subLiquidityIndicator_;
279  Side::Enum side_;
280  Alphanumeric<8> symbol_;
281  Alpha<4> clearingFirm_;
282  Date maturityDate_;
283  Alphanumeric<2> feeCode_;
284  Date tradeDate_;
285  Binary4 clearingSize_;
286  PendingStatus::Enum pendingStatus_;
287  MultilegReportingType::Enum multilegReportingType_;
288  Binary8 secondaryExecId_;
289  };
290 
291  /// Serializes object into string.
292  ONIXS_CBOE_CFE_BOE_API void toStr(std::string&, const MutableOrderExecution&);
293 
294  /// Serializes object into string.
295  inline std::string toStr(const MutableOrderExecution& msg)
296  {
297  std::string str;
298  toStr(str, msg);
299  return str;
300  }
301 
302 }
303 }
304 }
305 }
306 }
void clOrdId(StrRef value)
The order which was executed.
void feeCode(StrRef value)
Indicates fee associated with an execution.
MessageType::Enum type() const ONIXS_BATS_BOE_NOEXCEPT ONIXS_BATS_BOE_OVERRIDE
Returns message type.
StrRef symbol() const
Echoed back from the TPH message.
MultilegReportingType::Enum multilegReportingType() const
Present on Order Execution, TAS Restatement and Variance Restatement messages representing either Spr...
Date tradeDate() const
Business date of the execution.
Side::Enum side() const
Echoed back from the TPH message.
void transactionTime(DateTime value)
The time the event occurred in the CFE Matching Engine (not the time the message was sent)...
Binary8 execId() const
Sent to the OCC in the Trade Id field.
void maturityDate(Date value)
Maturity date of the instrument.
DateTime transactionTime() const
The time the event occurred in the CFE Matching Engine (not the time the message was sent)...
void pendingStatus(PendingStatus::Enum value)
Field is provided as a convenience to determine whether an Order Execution message is a preliminary n...
void multilegReportingType(MultilegReportingType::Enum value)
Present on Order Execution, TAS Restatement and Variance Restatement messages representing either Spr...
Provides efficient way of accessing text-based field values.
Definition: String.h:45
void tradeDate(Date value)
Business date of the execution.
Binary4 leavesQty() const
Quantity still open for further execution. If zero, the order is complete.
Binary4 lastShares() const
Executed contracts quantity.
void baseLiquidityIndicator(BaseLiquidityIndicator::Enum value)
Indicates whether the trade added or removed liquidity.
void side(Side::Enum value)
Echoed back from the TPH message.
Binary8 secondaryExecId() const
Field indicates whether an execution is a spread or a simple instrument execution that is part of a s...
PendingStatus::Enum pendingStatus() const
Field is provided as a convenience to determine whether an Order Execution message is a preliminary n...
void clearingFirm(StrRef value)
Echoed back from the TPH message.
StrRef clOrdId() const
The order which was executed.
void leavesQty(Binary4 value)
Quantity still open for further execution. If zero, the order is complete.
void secondaryExecId(Binary8 value)
Field indicates whether an execution is a spread or a simple instrument execution that is part of a s...
void symbol(StrRef value)
Echoed back from the TPH message.
StrRef clearingFirm() const
Echoed back from the TPH message.
BaseLiquidityIndicator::Enum baseLiquidityIndicator() const
Indicates whether the trade added or removed liquidity.
Date maturityDate() const
Maturity date of the instrument.
void subLiquidityIndicator(SubLiquidityIndicator::Enum value)
Additional information about the liquidity of an order.
SubLiquidityIndicator::Enum subLiquidityIndicator() const
Additional information about the liquidity of an order.
void clearingSize(Binary4 value)
Size to clear with OCC.
StrRef feeCode() const
Indicates fee associated with an execution.
Base class for outgoing messages.
ONIXS_CBOE_CFE_BOE_API void toStr(std::string &, const ConstantNewOrderV2 &)
Serializes object into string.
void lastShares(Binary4 value)
Executed contracts quantity.
void execId(Binary8 value)
Sent to the OCC in the Trade Id field.
An Order Execution is sent for each fill on an order.