nautilus_trading/examples/actors/imbalance/
config.rs1use nautilus_model::identifiers::{ActorId, InstrumentId};
19
20#[derive(Debug, Clone)]
22#[cfg_attr(
23 feature = "python",
24 pyo3::pyclass(module = "nautilus_trader.core.nautilus_pyo3.trading", from_py_object)
25)]
26pub struct BookImbalanceActorConfig {
27 pub instrument_ids: Vec<InstrumentId>,
29 pub log_interval: u64,
31 pub actor_id: Option<ActorId>,
33}
34
35impl BookImbalanceActorConfig {
36 #[must_use]
38 pub fn new(instrument_ids: Vec<InstrumentId>) -> Self {
39 Self {
40 instrument_ids,
41 log_interval: 100,
42 actor_id: None,
43 }
44 }
45
46 #[must_use]
47 pub fn with_log_interval(mut self, interval: u64) -> Self {
48 self.log_interval = interval;
49 self
50 }
51
52 #[must_use]
53 pub fn with_actor_id(mut self, actor_id: ActorId) -> Self {
54 self.actor_id = Some(actor_id);
55 self
56 }
57}
58
59#[cfg(feature = "python")]
60#[pyo3::pymethods]
61impl BookImbalanceActorConfig {
62 #[new]
63 #[pyo3(signature = (instrument_ids, log_interval=100, actor_id=None))]
64 fn py_new(
65 instrument_ids: Vec<InstrumentId>,
66 log_interval: u64,
67 actor_id: Option<ActorId>,
68 ) -> Self {
69 let mut config = Self::new(instrument_ids).with_log_interval(log_interval);
70
71 if let Some(id) = actor_id {
72 config.actor_id = Some(id);
73 }
74
75 config
76 }
77
78 #[getter]
79 fn instrument_ids(&self) -> Vec<InstrumentId> {
80 self.instrument_ids.clone()
81 }
82
83 #[getter]
84 fn log_interval(&self) -> u64 {
85 self.log_interval
86 }
87
88 #[getter]
89 fn actor_id(&self) -> Option<ActorId> {
90 self.actor_id
91 }
92}