From 2af19afafa747c12706fb07e0cbef7065600bece Mon Sep 17 00:00:00 2001 From: KhizarImran Date: Thu, 2 Jul 2026 22:12:20 +0100 Subject: [PATCH] positions are now visible in python. can be check by if not sel.position --- backtestingfx/backtest.py | 4 ++++ src/broker.rs | 4 ++++ src/lib.rs | 1 + src/types.rs | 8 ++++++++ 4 files changed, 17 insertions(+) diff --git a/backtestingfx/backtest.py b/backtestingfx/backtest.py index 8858586..fe9de63 100644 --- a/backtestingfx/backtest.py +++ b/backtestingfx/backtest.py @@ -10,6 +10,10 @@ class Strategy: self._bar: Any = None self._broker: Any = None + @property + def positions(self): + return self._broker.positions() if self._broker else [] + def init(self): pass diff --git a/src/broker.rs b/src/broker.rs index f13cae2..805f82c 100644 --- a/src/broker.rs +++ b/src/broker.rs @@ -103,6 +103,10 @@ impl Broker { } } + pub fn positions(&self) -> Vec { + self.positions.clone() + } + pub fn buy( &mut self, price: f64, diff --git a/src/lib.rs b/src/lib.rs index 1c13028..81f092d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -14,5 +14,6 @@ fn backtestingfx(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_class::()?; m.add_class::()?; m.add_class::()?; + m.add_class::()?; Ok(()) } diff --git a/src/types.rs b/src/types.rs index db16d2d..a883f59 100644 --- a/src/types.rs +++ b/src/types.rs @@ -33,15 +33,23 @@ impl Bar { } } +#[pyclass] #[derive(Debug, Clone)] pub struct Position { // this is for the trading position + #[pyo3(get)] pub id: u64, + #[pyo3(get)] pub entry_price: f64, + #[pyo3(get)] pub lot_size: f64, + #[pyo3(get)] pub is_long: bool, + #[pyo3(get)] pub entry_timestamp: i64, + #[pyo3(get)] pub stop_loss: Option, + #[pyo3(get)] pub take_profit: Option, }