nautilus_common/messages/execution/
cancel.rs1use std::fmt::Display;
17
18use derive_builder::Builder;
19use nautilus_core::{Params, UUID4, UnixNanos};
20use nautilus_model::{
21 enums::OrderSide,
22 identifiers::{ClientId, ClientOrderId, InstrumentId, StrategyId, TraderId, VenueOrderId},
23};
24use serde::{Deserialize, Serialize};
25
26#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize, Builder)]
27#[serde(tag = "type")]
28pub struct CancelOrder {
29 pub trader_id: TraderId,
30 pub client_id: Option<ClientId>,
31 pub strategy_id: StrategyId,
32 pub instrument_id: InstrumentId,
33 pub client_order_id: ClientOrderId,
34 pub venue_order_id: Option<VenueOrderId>,
35 pub command_id: UUID4,
36 pub ts_init: UnixNanos,
37 pub params: Option<Params>,
38 #[builder(default)]
39 pub correlation_id: Option<UUID4>,
40 #[builder(default)]
41 #[serde(default, skip_serializing_if = "Option::is_none")]
42 pub causation_id: Option<UUID4>,
43}
44
45impl CancelOrder {
46 #[expect(clippy::too_many_arguments)]
48 #[must_use]
49 pub fn new(
50 trader_id: TraderId,
51 client_id: Option<ClientId>,
52 strategy_id: StrategyId,
53 instrument_id: InstrumentId,
54 client_order_id: ClientOrderId,
55 venue_order_id: Option<VenueOrderId>,
56 command_id: UUID4,
57 ts_init: UnixNanos,
58 params: Option<Params>,
59 correlation_id: Option<UUID4>,
60 ) -> Self {
61 Self {
62 trader_id,
63 client_id,
64 strategy_id,
65 instrument_id,
66 client_order_id,
67 venue_order_id,
68 command_id,
69 ts_init,
70 params,
71 correlation_id,
72 causation_id: None,
73 }
74 }
75}
76
77impl Display for CancelOrder {
78 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
79 write!(
80 f,
81 "CancelOrder(instrument_id={}, client_order_id={}, venue_order_id={:?})",
82 self.instrument_id, self.client_order_id, self.venue_order_id,
83 )
84 }
85}
86
87#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize, Builder)]
88#[serde(tag = "type")]
89pub struct CancelAllOrders {
90 pub trader_id: TraderId,
91 pub client_id: Option<ClientId>,
92 pub strategy_id: StrategyId,
93 pub instrument_id: InstrumentId,
94 pub order_side: OrderSide,
95 pub command_id: UUID4,
96 pub ts_init: UnixNanos,
97 pub params: Option<Params>,
98 #[builder(default)]
99 pub correlation_id: Option<UUID4>,
100 #[builder(default)]
101 #[serde(default, skip_serializing_if = "Option::is_none")]
102 pub causation_id: Option<UUID4>,
103}
104
105impl CancelAllOrders {
106 #[expect(clippy::too_many_arguments)]
108 #[must_use]
109 pub fn new(
110 trader_id: TraderId,
111 client_id: Option<ClientId>,
112 strategy_id: StrategyId,
113 instrument_id: InstrumentId,
114 order_side: OrderSide,
115 command_id: UUID4,
116 ts_init: UnixNanos,
117 params: Option<Params>,
118 correlation_id: Option<UUID4>,
119 ) -> Self {
120 Self {
121 trader_id,
122 client_id,
123 strategy_id,
124 instrument_id,
125 order_side,
126 command_id,
127 ts_init,
128 params,
129 correlation_id,
130 causation_id: None,
131 }
132 }
133}
134
135impl Display for CancelAllOrders {
136 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
137 write!(
138 f,
139 "CancelAllOrders(instrument_id={}, order_side={})",
140 self.instrument_id, self.order_side,
141 )
142 }
143}
144
145#[derive(Clone, PartialEq, Eq, Debug, Serialize, Deserialize, Builder)]
146#[serde(tag = "type")]
147pub struct BatchCancelOrders {
148 pub trader_id: TraderId,
149 pub client_id: Option<ClientId>,
150 pub strategy_id: StrategyId,
151 pub instrument_id: InstrumentId,
152 pub cancels: Vec<CancelOrder>,
153 pub command_id: UUID4,
154 pub ts_init: UnixNanos,
155 pub params: Option<Params>,
156 #[builder(default)]
157 pub correlation_id: Option<UUID4>,
158 #[builder(default)]
159 #[serde(default, skip_serializing_if = "Option::is_none")]
160 pub causation_id: Option<UUID4>,
161}
162
163impl BatchCancelOrders {
164 #[expect(clippy::too_many_arguments)]
166 #[must_use]
167 pub fn new(
168 trader_id: TraderId,
169 client_id: Option<ClientId>,
170 strategy_id: StrategyId,
171 instrument_id: InstrumentId,
172 cancels: Vec<CancelOrder>,
173 command_id: UUID4,
174 ts_init: UnixNanos,
175 params: Option<Params>,
176 correlation_id: Option<UUID4>,
177 ) -> Self {
178 Self {
179 trader_id,
180 client_id,
181 strategy_id,
182 instrument_id,
183 cancels,
184 command_id,
185 ts_init,
186 params,
187 correlation_id,
188 causation_id: None,
189 }
190 }
191}
192
193impl Display for BatchCancelOrders {
194 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
195 write!(
196 f,
197 "BatchCancelOrders(instrument_id={}, cancels=TBD)",
198 self.instrument_id,
199 )
200 }
201}
202
203#[cfg(test)]
204mod tests {}