OnixS C++ ICE Binary Order Entry Handler 1.1.1
API Documentation
Loading...
Searching...
No Matches
Order.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#pragma once
20
22
23#include <string>
24#include <array>
25
26namespace Samples {
27
28using namespace ONIXS_ICEBOE_NAMESPACE;
30
31struct Order
32{
33 using PriceOptional = decltype(std::declval<const NewOrderRequest&>().price());
34 using Qty = decltype(std::declval<const NewOrderRequest&>().orderQty());
35 using ClOrderId = decltype(std::declval<const NewOrderRequest&>().clOrdId());
36
37 using SecurityId = decltype(std::declval<const NewOrderRequest&>().symbol());
38 using OrderId = decltype(std::declval<const ExecutionReport_Trade&>().orderId());
39
40 using TimestampOptional = decltype(std::declval<const NewOrderRequest&>().expireDate());
41 using QtiOptional = decltype(std::declval<const NewOrderRequest&>().maxShow());
42
43 using ExecInstOptional = decltype(std::declval<const NewOrderRequest&>().execInst());
44
46 Order();
47
49 std::string toString() const;
50
52 OrderId id() const noexcept
53 {
54 return cIOrdId_;
55 }
56
63 SideEnum side_{SideEnum::Buy};
64 OrderTypeEnum ordType_{OrderTypeEnum::Limit};
66 TimeInForceEnum timeInForce_{TimeInForceEnum::Day};
70 ExecTypeEnum orderStatus_{ExecTypeEnum::New};
73};
74
75using OrderPtr = std::shared_ptr<Order>;
76
77inline auto print(OrderPtr order)
78{
79 return order ? order->toString() : toStr(nullOpt);
80}
81
84{
85 using Id = decltype(std::declval<const NewOrderCrossRequest&>().crossId());
86
88 CrossOrder();
89
91 Id id() const noexcept
92 {
93 return crossId_;
94 }
95
97 std::string toString() const;
98
102};
103
104using CrossOrderPtr = std::shared_ptr<CrossOrder>;
105
106}
#define ONIXS_ICEBOE_NAMESPACE
Definition ABI.h:113
#define ONIXS_ICEBOE_MESSAGING_NAMESPACE
Definition ABI.h:114
OrderTypeEnum
OrderTypeEnum type.
Definition Fields.h:202
SideEnum
SideEnum type.
Definition Fields.h:394
ExecTypeEnum
ExecTypeEnum type.
Definition Fields.h:337
TimeInForceEnum
TimeInForceEnum type.
Definition Fields.h:295
auto print(OrderPtr order)
Definition Order.h:77
std::shared_ptr< CrossOrder > CrossOrderPtr
Definition Order.h:104
std::string toStr(Order::PriceOptional value)
Definition Order.cpp:34
std::shared_ptr< Order > OrderPtr
Definition Order.h:75
std::string toString() const
Human-readable presentation of the most interesting fields stored in the order.
Definition Order.cpp:75
decltype(std::declval< const NewOrderCrossRequest & >().crossId()) Id
Definition Order.h:85
OrderPtr buySideOrder_
Definition Order.h:100
Id id() const noexcept
Returns a unique id.
Definition Order.h:91
CrossOrder()
Initializes a cross order.
Definition Order.cpp:67
OrderPtr sellSideOrder_
Definition Order.h:101
TimeInForceEnum timeInForce_
Definition Order.h:66
SideEnum side_
Definition Order.h:63
TimestampOptional expireDate_
Definition Order.h:67
decltype(std::declval< const NewOrderRequest & >().expireDate()) TimestampOptional
Definition Order.h:40
std::string toString() const
Human-readable presentation of the most interesting fields stored in the order.
Definition Order.cpp:39
OrderTypeEnum ordType_
Definition Order.h:64
ClOrderId origCIOrdId_
Definition Order.h:58
decltype(std::declval< const NewOrderRequest & >().orderQty()) Qty
Definition Order.h:34
decltype(std::declval< const ExecutionReport_Trade & >().orderId()) OrderId
Definition Order.h:38
QtiOptional maxShow_
Definition Order.h:71
SecurityId securityId_
Definition Order.h:62
decltype(std::declval< const NewOrderRequest & >().maxShow()) QtiOptional
Definition Order.h:41
ClOrderId cIOrdId_
Definition Order.h:57
Qty orderQty_
Definition Order.h:60
PriceOptional price_
Definition Order.h:59
decltype(std::declval< const NewOrderRequest & >().execInst()) ExecInstOptional
Definition Order.h:43
decltype(std::declval< const NewOrderRequest & >().clOrdId()) ClOrderId
Definition Order.h:35
ExecInstOptional execInst_
Definition Order.h:72
OrderId id() const noexcept
Returns a unique order id.
Definition Order.h:52
decltype(std::declval< const NewOrderRequest & >().symbol()) SecurityId
Definition Order.h:37
PriceOptional lastPx_
Definition Order.h:68
decltype(std::declval< const NewOrderRequest & >().price()) PriceOptional
Definition Order.h:33
PriceOptional stopPx_
Definition Order.h:65
TimestampOptional transactTime_
Definition Order.h:69
Order()
Initializes an order.
Definition Order.cpp:29
ExecTypeEnum orderStatus_
Definition Order.h:70
Qty leavesQty_
Definition Order.h:61