nautilus_sandbox/
config.rs1use ahash::AHashMap;
19use nautilus_execution::matching_engine::config::OrderMatchingEngineConfig;
20use nautilus_model::{
21 enums::{AccountType, BookType, OmsType},
22 identifiers::{AccountId, InstrumentId, TraderId, Venue},
23 types::{Currency, Money},
24};
25use rust_decimal::Decimal;
26use serde::{Deserialize, Serialize};
27
28#[derive(Debug, Clone, Serialize, Deserialize, bon::Builder)]
30#[serde(deny_unknown_fields)]
31#[cfg_attr(
32 feature = "python",
33 pyo3::pyclass(module = "nautilus_trader.core.nautilus_pyo3.sandbox", from_py_object)
34)]
35#[cfg_attr(
36 feature = "python",
37 pyo3_stub_gen::derive::gen_stub_pyclass(module = "nautilus_trader.sandbox")
38)]
39pub struct SandboxExecutionClientConfig {
40 #[builder(default = TraderId::from("SANDBOX-001"))]
42 pub trader_id: TraderId,
43 #[builder(default = AccountId::from("SANDBOX-001"))]
45 pub account_id: AccountId,
46 #[builder(default = Venue::new("SANDBOX"))]
48 pub venue: Venue,
49 #[builder(default)]
51 pub starting_balances: Vec<Money>,
52 pub base_currency: Option<Currency>,
54 #[builder(default = OmsType::Netting)]
56 pub oms_type: OmsType,
57 #[builder(default = AccountType::Margin)]
59 pub account_type: AccountType,
60 #[builder(default = Decimal::ONE)]
62 pub default_leverage: Decimal,
63 #[builder(default)]
65 pub leverages: AHashMap<InstrumentId, Decimal>,
66 #[builder(default = BookType::L1_MBP)]
68 pub book_type: BookType,
69 #[builder(default)]
71 pub frozen_account: bool,
72 #[builder(default = true)]
74 pub bar_execution: bool,
75 #[builder(default = true)]
77 pub trade_execution: bool,
78 #[builder(default = true)]
80 pub reject_stop_orders: bool,
81 #[builder(default = true)]
83 pub support_gtd_orders: bool,
84 #[builder(default = true)]
86 pub support_contingent_orders: bool,
87 #[builder(default = true)]
89 pub use_position_ids: bool,
90 #[builder(default)]
93 pub use_random_ids: bool,
94 #[builder(default = true)]
96 pub use_reduce_only: bool,
97}
98
99impl SandboxExecutionClientConfig {
100 #[must_use]
102 pub fn to_matching_engine_config(&self) -> OrderMatchingEngineConfig {
103 OrderMatchingEngineConfig::builder()
104 .bar_execution(self.bar_execution)
105 .trade_execution(self.trade_execution)
106 .reject_stop_orders(self.reject_stop_orders)
107 .support_gtd_orders(self.support_gtd_orders)
108 .support_contingent_orders(self.support_contingent_orders)
109 .use_position_ids(self.use_position_ids)
110 .use_random_ids(self.use_random_ids)
111 .use_reduce_only(self.use_reduce_only)
112 .build()
113 }
114}
115
116impl Default for SandboxExecutionClientConfig {
117 fn default() -> Self {
118 Self::builder().build()
119 }
120}