nautilus_model/events/order/
stubs.rs

1// -------------------------------------------------------------------------------------------------
2//  Copyright (C) 2015-2026 Nautech Systems Pty Ltd. All rights reserved.
3//  https://nautechsystems.io
4//
5//  Licensed under the GNU Lesser General Public License Version 3.0 (the "License");
6//  You may not use this file except in compliance with the License.
7//  You may obtain a copy of the License at https://www.gnu.org/licenses/lgpl-3.0.en.html
8//
9//  Unless required by applicable law or agreed to in writing, software
10//  distributed under the License is distributed on an "AS IS" BASIS,
11//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12//  See the License for the specific language governing permissions and
13//  limitations under the License.
14// -------------------------------------------------------------------------------------------------
15
16use std::str::FromStr;
17
18use nautilus_core::{UUID4, UnixNanos};
19use rstest::fixture;
20use ustr::Ustr;
21
22use crate::{
23    enums::{ContingencyType, LiquiditySide, OrderSide, OrderType, TimeInForce, TriggerType},
24    events::{
25        OrderAccepted, OrderCancelRejected, OrderCanceled, OrderDenied, OrderEmulated,
26        OrderExpired, OrderFilled, OrderInitialized, OrderModifyRejected, OrderPendingCancel,
27        OrderPendingUpdate, OrderRejected, OrderReleased, OrderSubmitted, OrderTriggered,
28        OrderUpdated,
29    },
30    identifiers::{
31        AccountId, ClientOrderId, InstrumentId, OrderListId, StrategyId, TradeId, TraderId,
32        VenueOrderId, stubs as id_stubs,
33    },
34    stubs::TestDefault,
35    types::{Currency, Money, Price, Quantity},
36};
37
38// Fixture wrappers for rstest - these are not glob-exported to avoid ambiguity
39#[fixture]
40pub fn trader_id() -> TraderId {
41    id_stubs::trader_id()
42}
43
44#[fixture]
45pub fn strategy_id_ema_cross() -> StrategyId {
46    id_stubs::strategy_id_ema_cross()
47}
48
49#[fixture]
50pub fn instrument_id_btc_usdt() -> InstrumentId {
51    id_stubs::instrument_id_btc_usdt()
52}
53
54#[fixture]
55pub fn client_order_id() -> ClientOrderId {
56    id_stubs::client_order_id()
57}
58
59#[fixture]
60pub fn venue_order_id() -> VenueOrderId {
61    id_stubs::venue_order_id()
62}
63
64#[fixture]
65pub fn account_id() -> AccountId {
66    id_stubs::account_id()
67}
68
69#[fixture]
70pub fn uuid4() -> UUID4 {
71    id_stubs::uuid4()
72}
73
74#[fixture]
75pub fn order_filled(
76    trader_id: TraderId,
77    strategy_id_ema_cross: StrategyId,
78    instrument_id_btc_usdt: InstrumentId,
79    client_order_id: ClientOrderId,
80    uuid4: UUID4,
81) -> OrderFilled {
82    OrderFilled::new(
83        trader_id,
84        strategy_id_ema_cross,
85        instrument_id_btc_usdt,
86        client_order_id,
87        VenueOrderId::new("123456"),
88        AccountId::new("SIM-001"),
89        TradeId::new("1"),
90        OrderSide::Buy,
91        OrderType::Limit,
92        Quantity::from_str("0.561").unwrap(),
93        Price::from_str("22000").unwrap(),
94        Currency::from_str("USDT").unwrap(),
95        LiquiditySide::Taker,
96        uuid4,
97        UnixNanos::default(),
98        UnixNanos::default(),
99        false,
100        None,
101        Some(Money::from("12.2 USDT")),
102    )
103}
104
105#[fixture]
106pub fn order_denied_max_submitted_rate(
107    trader_id: TraderId,
108    strategy_id_ema_cross: StrategyId,
109    instrument_id_btc_usdt: InstrumentId,
110    client_order_id: ClientOrderId,
111    uuid4: UUID4,
112) -> OrderDenied {
113    OrderDenied::new(
114        trader_id,
115        strategy_id_ema_cross,
116        instrument_id_btc_usdt,
117        client_order_id,
118        Ustr::from("Exceeded MAX_ORDER_SUBMIT_RATE"),
119        uuid4,
120        UnixNanos::default(),
121        UnixNanos::default(),
122    )
123}
124
125#[fixture]
126pub fn order_rejected_insufficient_margin(
127    trader_id: TraderId,
128    account_id: AccountId,
129    strategy_id_ema_cross: StrategyId,
130    instrument_id_btc_usdt: InstrumentId,
131    client_order_id: ClientOrderId,
132    uuid4: UUID4,
133) -> OrderRejected {
134    OrderRejected::new(
135        trader_id,
136        strategy_id_ema_cross,
137        instrument_id_btc_usdt,
138        client_order_id,
139        account_id,
140        Ustr::from("INSUFFICIENT_MARGIN"),
141        uuid4,
142        UnixNanos::default(),
143        UnixNanos::default(),
144        false,
145        false,
146    )
147}
148
149#[fixture]
150pub fn order_initialized_buy_limit(
151    trader_id: TraderId,
152    strategy_id_ema_cross: StrategyId,
153    instrument_id_btc_usdt: InstrumentId,
154    client_order_id: ClientOrderId,
155    uuid4: UUID4,
156) -> OrderInitialized {
157    let order_list_id = OrderListId::new("1");
158    let linked_order_ids = vec![ClientOrderId::new("O-2020872378424")];
159    OrderInitialized::new(
160        trader_id,
161        strategy_id_ema_cross,
162        instrument_id_btc_usdt,
163        client_order_id,
164        OrderSide::Buy,
165        OrderType::Limit,
166        Quantity::from_str("0.561").unwrap(),
167        TimeInForce::Day,
168        true,
169        true,
170        false,
171        false,
172        uuid4,
173        UnixNanos::default(),
174        UnixNanos::default(),
175        Some(Price::from_str("22000").unwrap()),
176        None,
177        None,
178        None,
179        None,
180        None,
181        None,
182        None,
183        Some(TriggerType::BidAsk),
184        Some(instrument_id_btc_usdt),
185        Some(ContingencyType::Oto),
186        Some(order_list_id),
187        Some(linked_order_ids),
188        None,
189        None,
190        None,
191        None,
192        None,
193    )
194}
195
196#[fixture]
197pub fn order_submitted(
198    trader_id: TraderId,
199    strategy_id_ema_cross: StrategyId,
200    instrument_id_btc_usdt: InstrumentId,
201    client_order_id: ClientOrderId,
202    account_id: AccountId,
203    uuid4: UUID4,
204) -> OrderSubmitted {
205    OrderSubmitted::new(
206        trader_id,
207        strategy_id_ema_cross,
208        instrument_id_btc_usdt,
209        client_order_id,
210        account_id,
211        uuid4,
212        UnixNanos::default(),
213        UnixNanos::default(),
214    )
215}
216
217#[fixture]
218pub fn order_triggered(
219    trader_id: TraderId,
220    strategy_id_ema_cross: StrategyId,
221    instrument_id_btc_usdt: InstrumentId,
222    client_order_id: ClientOrderId,
223    venue_order_id: VenueOrderId,
224    account_id: AccountId,
225    uuid4: UUID4,
226) -> OrderTriggered {
227    OrderTriggered::new(
228        trader_id,
229        strategy_id_ema_cross,
230        instrument_id_btc_usdt,
231        client_order_id,
232        uuid4,
233        UnixNanos::default(),
234        UnixNanos::default(),
235        false,
236        Some(venue_order_id),
237        Some(account_id),
238    )
239}
240
241#[fixture]
242pub fn order_emulated(
243    trader_id: TraderId,
244    strategy_id_ema_cross: StrategyId,
245    instrument_id_btc_usdt: InstrumentId,
246    client_order_id: ClientOrderId,
247    uuid4: UUID4,
248) -> OrderEmulated {
249    OrderEmulated::new(
250        trader_id,
251        strategy_id_ema_cross,
252        instrument_id_btc_usdt,
253        client_order_id,
254        uuid4,
255        UnixNanos::default(),
256        UnixNanos::default(),
257    )
258}
259
260#[fixture]
261pub fn order_released(
262    trader_id: TraderId,
263    strategy_id_ema_cross: StrategyId,
264    instrument_id_btc_usdt: InstrumentId,
265    client_order_id: ClientOrderId,
266    uuid4: UUID4,
267) -> OrderReleased {
268    OrderReleased::new(
269        trader_id,
270        strategy_id_ema_cross,
271        instrument_id_btc_usdt,
272        client_order_id,
273        Price::from_str("22000").unwrap(),
274        uuid4,
275        UnixNanos::default(),
276        UnixNanos::default(),
277    )
278}
279
280#[fixture]
281pub fn order_updated(
282    trader_id: TraderId,
283    strategy_id_ema_cross: StrategyId,
284    instrument_id_btc_usdt: InstrumentId,
285    client_order_id: ClientOrderId,
286    venue_order_id: VenueOrderId,
287    account_id: AccountId,
288    uuid4: UUID4,
289) -> OrderUpdated {
290    OrderUpdated::new(
291        trader_id,
292        strategy_id_ema_cross,
293        instrument_id_btc_usdt,
294        client_order_id,
295        Quantity::from(100),
296        uuid4,
297        UnixNanos::default(),
298        UnixNanos::default(),
299        false,
300        Some(venue_order_id),
301        Some(account_id),
302        Some(Price::from("22000")),
303        None,
304        None,
305    )
306}
307
308#[fixture]
309pub fn order_pending_update(
310    trader_id: TraderId,
311    strategy_id_ema_cross: StrategyId,
312    instrument_id_btc_usdt: InstrumentId,
313    client_order_id: ClientOrderId,
314    account_id: AccountId,
315    venue_order_id: VenueOrderId,
316    uuid4: UUID4,
317) -> OrderPendingUpdate {
318    OrderPendingUpdate::new(
319        trader_id,
320        strategy_id_ema_cross,
321        instrument_id_btc_usdt,
322        client_order_id,
323        account_id,
324        uuid4,
325        UnixNanos::default(),
326        UnixNanos::default(),
327        false,
328        Some(venue_order_id),
329    )
330}
331
332#[fixture]
333pub fn order_pending_cancel(
334    trader_id: TraderId,
335    strategy_id_ema_cross: StrategyId,
336    instrument_id_btc_usdt: InstrumentId,
337    client_order_id: ClientOrderId,
338    account_id: AccountId,
339    venue_order_id: VenueOrderId,
340    uuid4: UUID4,
341) -> OrderPendingCancel {
342    OrderPendingCancel::new(
343        trader_id,
344        strategy_id_ema_cross,
345        instrument_id_btc_usdt,
346        client_order_id,
347        account_id,
348        uuid4,
349        UnixNanos::default(),
350        UnixNanos::default(),
351        false,
352        Some(venue_order_id),
353    )
354}
355
356#[fixture]
357pub fn order_modify_rejected(
358    trader_id: TraderId,
359    strategy_id_ema_cross: StrategyId,
360    instrument_id_btc_usdt: InstrumentId,
361    client_order_id: ClientOrderId,
362    venue_order_id: VenueOrderId,
363    account_id: AccountId,
364    uuid4: UUID4,
365) -> OrderModifyRejected {
366    OrderModifyRejected::new(
367        trader_id,
368        strategy_id_ema_cross,
369        instrument_id_btc_usdt,
370        client_order_id,
371        Ustr::from("ORDER_DOES_NOT_EXIST"),
372        uuid4,
373        UnixNanos::default(),
374        UnixNanos::default(),
375        false,
376        Some(venue_order_id),
377        Some(account_id),
378    )
379}
380
381#[fixture]
382pub fn order_accepted(
383    trader_id: TraderId,
384    strategy_id_ema_cross: StrategyId,
385    instrument_id_btc_usdt: InstrumentId,
386    client_order_id: ClientOrderId,
387    account_id: AccountId,
388    venue_order_id: VenueOrderId,
389    uuid4: UUID4,
390) -> OrderAccepted {
391    OrderAccepted::new(
392        trader_id,
393        strategy_id_ema_cross,
394        instrument_id_btc_usdt,
395        client_order_id,
396        venue_order_id,
397        account_id,
398        uuid4,
399        UnixNanos::default(),
400        UnixNanos::default(),
401        false,
402    )
403}
404
405#[fixture]
406pub fn order_cancel_rejected(
407    trader_id: TraderId,
408    strategy_id_ema_cross: StrategyId,
409    instrument_id_btc_usdt: InstrumentId,
410    client_order_id: ClientOrderId,
411    venue_order_id: VenueOrderId,
412    account_id: AccountId,
413    uuid4: UUID4,
414) -> OrderCancelRejected {
415    OrderCancelRejected::new(
416        trader_id,
417        strategy_id_ema_cross,
418        instrument_id_btc_usdt,
419        client_order_id,
420        Ustr::from("ORDER_DOES_NOT_EXIST"),
421        uuid4,
422        UnixNanos::default(),
423        UnixNanos::default(),
424        false,
425        Some(venue_order_id),
426        Some(account_id),
427    )
428}
429
430#[fixture]
431pub fn order_expired(
432    trader_id: TraderId,
433    strategy_id_ema_cross: StrategyId,
434    instrument_id_btc_usdt: InstrumentId,
435    client_order_id: ClientOrderId,
436    venue_order_id: VenueOrderId,
437    account_id: AccountId,
438    uuid4: UUID4,
439) -> OrderExpired {
440    OrderExpired::new(
441        trader_id,
442        strategy_id_ema_cross,
443        instrument_id_btc_usdt,
444        client_order_id,
445        uuid4,
446        UnixNanos::default(),
447        UnixNanos::default(),
448        false,
449        Some(venue_order_id),
450        Some(account_id),
451    )
452}
453
454// TestDefault implementations for order events
455// These provide test-only default values for use in tests and stubs.
456
457impl TestDefault for OrderAccepted {
458    fn test_default() -> Self {
459        Self {
460            trader_id: TraderId::test_default(),
461            strategy_id: StrategyId::test_default(),
462            instrument_id: InstrumentId::test_default(),
463            client_order_id: ClientOrderId::test_default(),
464            venue_order_id: VenueOrderId::test_default(),
465            account_id: AccountId::test_default(),
466            event_id: Default::default(),
467            ts_event: Default::default(),
468            ts_init: Default::default(),
469            reconciliation: Default::default(),
470        }
471    }
472}
473
474impl Default for OrderAccepted {
475    fn default() -> Self {
476        Self::test_default()
477    }
478}
479
480impl TestDefault for OrderCanceled {
481    fn test_default() -> Self {
482        Self {
483            trader_id: TraderId::test_default(),
484            strategy_id: StrategyId::test_default(),
485            instrument_id: InstrumentId::test_default(),
486            client_order_id: ClientOrderId::test_default(),
487            event_id: Default::default(),
488            ts_event: Default::default(),
489            ts_init: Default::default(),
490            reconciliation: Default::default(),
491            venue_order_id: None,
492            account_id: None,
493        }
494    }
495}
496
497impl Default for OrderCanceled {
498    fn default() -> Self {
499        Self::test_default()
500    }
501}
502
503impl TestDefault for OrderCancelRejected {
504    fn test_default() -> Self {
505        Self {
506            trader_id: TraderId::test_default(),
507            strategy_id: StrategyId::test_default(),
508            instrument_id: InstrumentId::test_default(),
509            client_order_id: ClientOrderId::test_default(),
510            reason: Ustr::from("TEST"),
511            event_id: Default::default(),
512            ts_event: Default::default(),
513            ts_init: Default::default(),
514            reconciliation: Default::default(),
515            venue_order_id: None,
516            account_id: None,
517        }
518    }
519}
520
521impl Default for OrderCancelRejected {
522    fn default() -> Self {
523        Self::test_default()
524    }
525}
526
527impl TestDefault for OrderDenied {
528    fn test_default() -> Self {
529        Self {
530            trader_id: TraderId::test_default(),
531            strategy_id: StrategyId::test_default(),
532            instrument_id: InstrumentId::test_default(),
533            client_order_id: ClientOrderId::test_default(),
534            reason: Ustr::from("TEST"),
535            event_id: Default::default(),
536            ts_event: Default::default(),
537            ts_init: Default::default(),
538        }
539    }
540}
541
542impl Default for OrderDenied {
543    fn default() -> Self {
544        Self::test_default()
545    }
546}
547
548impl TestDefault for OrderEmulated {
549    fn test_default() -> Self {
550        Self {
551            trader_id: TraderId::test_default(),
552            strategy_id: StrategyId::test_default(),
553            instrument_id: InstrumentId::test_default(),
554            client_order_id: ClientOrderId::test_default(),
555            event_id: Default::default(),
556            ts_event: Default::default(),
557            ts_init: Default::default(),
558        }
559    }
560}
561
562impl Default for OrderEmulated {
563    fn default() -> Self {
564        Self::test_default()
565    }
566}
567
568impl TestDefault for OrderExpired {
569    fn test_default() -> Self {
570        Self {
571            trader_id: TraderId::test_default(),
572            strategy_id: StrategyId::test_default(),
573            instrument_id: InstrumentId::test_default(),
574            client_order_id: ClientOrderId::test_default(),
575            event_id: Default::default(),
576            ts_event: Default::default(),
577            ts_init: Default::default(),
578            reconciliation: Default::default(),
579            venue_order_id: None,
580            account_id: None,
581        }
582    }
583}
584
585impl Default for OrderExpired {
586    fn default() -> Self {
587        Self::test_default()
588    }
589}
590
591impl TestDefault for OrderFilled {
592    fn test_default() -> Self {
593        Self {
594            trader_id: TraderId::test_default(),
595            strategy_id: StrategyId::test_default(),
596            instrument_id: InstrumentId::test_default(),
597            client_order_id: ClientOrderId::test_default(),
598            venue_order_id: VenueOrderId::test_default(),
599            account_id: AccountId::test_default(),
600            trade_id: TradeId::test_default(),
601            position_id: None,
602            order_side: OrderSide::Buy,
603            order_type: OrderType::Market,
604            last_qty: Quantity::new(100_000.0, 0),
605            last_px: Price::from("1.00000"),
606            currency: Currency::USD(),
607            commission: None,
608            liquidity_side: LiquiditySide::Taker,
609            event_id: Default::default(),
610            ts_event: Default::default(),
611            ts_init: Default::default(),
612            reconciliation: Default::default(),
613        }
614    }
615}
616
617impl Default for OrderFilled {
618    fn default() -> Self {
619        Self::test_default()
620    }
621}
622
623impl TestDefault for OrderInitialized {
624    fn test_default() -> Self {
625        Self {
626            trader_id: TraderId::test_default(),
627            strategy_id: StrategyId::test_default(),
628            instrument_id: InstrumentId::test_default(),
629            client_order_id: ClientOrderId::test_default(),
630            order_side: OrderSide::Buy,
631            order_type: OrderType::Market,
632            quantity: Quantity::new(100_000.0, 0),
633            price: Default::default(),
634            trigger_price: Default::default(),
635            trigger_type: Default::default(),
636            time_in_force: TimeInForce::Day,
637            expire_time: Default::default(),
638            post_only: Default::default(),
639            reduce_only: Default::default(),
640            display_qty: Default::default(),
641            quote_quantity: Default::default(),
642            limit_offset: Default::default(),
643            trailing_offset: Default::default(),
644            trailing_offset_type: Default::default(),
645            emulation_trigger: Default::default(),
646            trigger_instrument_id: Default::default(),
647            contingency_type: Default::default(),
648            order_list_id: Default::default(),
649            linked_order_ids: Default::default(),
650            parent_order_id: Default::default(),
651            exec_algorithm_id: Default::default(),
652            exec_algorithm_params: Default::default(),
653            exec_spawn_id: Default::default(),
654            tags: Default::default(),
655            reconciliation: Default::default(),
656            event_id: Default::default(),
657            ts_event: Default::default(),
658            ts_init: Default::default(),
659        }
660    }
661}
662
663impl Default for OrderInitialized {
664    fn default() -> Self {
665        Self::test_default()
666    }
667}
668
669impl TestDefault for OrderModifyRejected {
670    fn test_default() -> Self {
671        Self {
672            trader_id: TraderId::test_default(),
673            strategy_id: StrategyId::test_default(),
674            instrument_id: InstrumentId::test_default(),
675            client_order_id: ClientOrderId::test_default(),
676            reason: Ustr::from("TEST"),
677            event_id: Default::default(),
678            ts_event: Default::default(),
679            ts_init: Default::default(),
680            reconciliation: Default::default(),
681            venue_order_id: None,
682            account_id: None,
683        }
684    }
685}
686
687impl Default for OrderModifyRejected {
688    fn default() -> Self {
689        Self::test_default()
690    }
691}
692
693impl TestDefault for OrderPendingCancel {
694    fn test_default() -> Self {
695        Self {
696            trader_id: TraderId::test_default(),
697            strategy_id: StrategyId::test_default(),
698            instrument_id: InstrumentId::test_default(),
699            client_order_id: ClientOrderId::test_default(),
700            event_id: Default::default(),
701            ts_event: Default::default(),
702            ts_init: Default::default(),
703            reconciliation: Default::default(),
704            venue_order_id: None,
705            account_id: AccountId::test_default(),
706        }
707    }
708}
709
710impl Default for OrderPendingCancel {
711    fn default() -> Self {
712        Self::test_default()
713    }
714}
715
716impl TestDefault for OrderPendingUpdate {
717    fn test_default() -> Self {
718        Self {
719            trader_id: TraderId::test_default(),
720            strategy_id: StrategyId::test_default(),
721            instrument_id: InstrumentId::test_default(),
722            client_order_id: ClientOrderId::test_default(),
723            event_id: Default::default(),
724            ts_event: Default::default(),
725            ts_init: Default::default(),
726            reconciliation: Default::default(),
727            venue_order_id: None,
728            account_id: AccountId::test_default(),
729        }
730    }
731}
732
733impl Default for OrderPendingUpdate {
734    fn default() -> Self {
735        Self::test_default()
736    }
737}
738
739impl TestDefault for OrderRejected {
740    fn test_default() -> Self {
741        Self {
742            trader_id: TraderId::test_default(),
743            strategy_id: StrategyId::test_default(),
744            instrument_id: InstrumentId::test_default(),
745            client_order_id: ClientOrderId::test_default(),
746            account_id: AccountId::test_default(),
747            reason: Ustr::from("TEST"),
748            event_id: Default::default(),
749            ts_event: Default::default(),
750            ts_init: Default::default(),
751            reconciliation: Default::default(),
752            due_post_only: Default::default(),
753        }
754    }
755}
756
757impl Default for OrderRejected {
758    fn default() -> Self {
759        Self::test_default()
760    }
761}
762
763impl TestDefault for OrderReleased {
764    fn test_default() -> Self {
765        Self {
766            trader_id: TraderId::test_default(),
767            strategy_id: StrategyId::test_default(),
768            instrument_id: InstrumentId::test_default(),
769            client_order_id: ClientOrderId::test_default(),
770            released_price: Price::from("1.00000"),
771            event_id: Default::default(),
772            ts_event: Default::default(),
773            ts_init: Default::default(),
774        }
775    }
776}
777
778impl Default for OrderReleased {
779    fn default() -> Self {
780        Self::test_default()
781    }
782}
783
784impl TestDefault for OrderSubmitted {
785    fn test_default() -> Self {
786        Self {
787            trader_id: TraderId::test_default(),
788            strategy_id: StrategyId::test_default(),
789            instrument_id: InstrumentId::test_default(),
790            client_order_id: ClientOrderId::test_default(),
791            account_id: AccountId::test_default(),
792            event_id: Default::default(),
793            ts_event: Default::default(),
794            ts_init: Default::default(),
795        }
796    }
797}
798
799impl Default for OrderSubmitted {
800    fn default() -> Self {
801        Self::test_default()
802    }
803}
804
805impl TestDefault for OrderTriggered {
806    fn test_default() -> Self {
807        Self {
808            trader_id: TraderId::test_default(),
809            strategy_id: StrategyId::test_default(),
810            instrument_id: InstrumentId::test_default(),
811            client_order_id: ClientOrderId::test_default(),
812            event_id: Default::default(),
813            ts_event: Default::default(),
814            ts_init: Default::default(),
815            reconciliation: Default::default(),
816            venue_order_id: None,
817            account_id: None,
818        }
819    }
820}
821
822impl Default for OrderTriggered {
823    fn default() -> Self {
824        Self::test_default()
825    }
826}
827
828impl TestDefault for OrderUpdated {
829    fn test_default() -> Self {
830        Self {
831            trader_id: TraderId::test_default(),
832            strategy_id: StrategyId::test_default(),
833            instrument_id: InstrumentId::test_default(),
834            client_order_id: ClientOrderId::test_default(),
835            venue_order_id: None,
836            account_id: None,
837            quantity: Quantity::new(100_000.0, 0),
838            price: None,
839            trigger_price: None,
840            protection_price: None,
841            event_id: Default::default(),
842            ts_event: Default::default(),
843            ts_init: Default::default(),
844            reconciliation: Default::default(),
845        }
846    }
847}
848
849impl Default for OrderUpdated {
850    fn default() -> Self {
851        Self::test_default()
852    }
853}