diff --git a/rustybot/src/bot.rs b/rustybot/src/bot.rs index 69cfe85..886d224 100644 --- a/rustybot/src/bot.rs +++ b/rustybot/src/bot.rs @@ -10,7 +10,7 @@ use crate::connectors::Connector; use crate::currency::{Symbol, SymbolPair}; use crate::events::EventKind; use crate::pairs::PairStatus; -use crate::strategy::Strategy; +use crate::strategy::PositionStrategy; use crate::ticker::Ticker; use crate::BoxError; @@ -44,7 +44,7 @@ impl<'a> BfxBot<'a> { } } - pub fn with_strategy(mut self, strategy: Box) -> Self { + pub fn with_strategy(mut self, strategy: Box) -> Self { self.pair_statuses .iter_mut() .for_each(|x| x.set_strategy(dyn_clone::clone_box(&*strategy))); diff --git a/rustybot/src/pairs.rs b/rustybot/src/pairs.rs index 903285c..479efe5 100644 --- a/rustybot/src/pairs.rs +++ b/rustybot/src/pairs.rs @@ -3,7 +3,7 @@ use std::collections::HashMap; use crate::currency::SymbolPair; use crate::events::{Event, EventDispatcher, SignalKind}; use crate::models::{Order, Position}; -use crate::strategy::Strategy; +use crate::strategy::PositionStrategy; pub struct PairStatus<'a> { pair: SymbolPair, @@ -13,12 +13,16 @@ pub struct PairStatus<'a> { orders: HashMap>, positions: HashMap>, current_tick: u64, - strategy: Option>, + strategy: Option>, signals: HashMap, } impl<'a> PairStatus<'a> { - pub fn new(pair: SymbolPair, current_tick: u64, strategy: Option>) -> Self { + pub fn new( + pair: SymbolPair, + current_tick: u64, + strategy: Option>, + ) -> Self { PairStatus { pair, dispatcher: EventDispatcher::new(), @@ -42,7 +46,7 @@ impl<'a> PairStatus<'a> { pub fn add_position(&mut self, position: Position) { let (new_position, events, signals) = { match &self.strategy { - Some(strategy) => strategy.position_on_new_tick(&position, &self), + Some(strategy) => strategy.on_new_tick(&position, &self), None => (position, vec![], vec![]), } }; @@ -86,7 +90,7 @@ impl<'a> PairStatus<'a> { self.current_tick } - pub fn set_strategy(&mut self, strategy: Box) { + pub fn set_strategy(&mut self, strategy: Box) { self.strategy = Some(strategy); } diff --git a/rustybot/src/strategy.rs b/rustybot/src/strategy.rs index 8a67940..658dcb7 100644 --- a/rustybot/src/strategy.rs +++ b/rustybot/src/strategy.rs @@ -5,8 +5,8 @@ use crate::models::{Position, PositionProfitState}; use crate::pairs::PairStatus; use dyn_clone::DynClone; -pub trait Strategy: DynClone { - fn position_on_new_tick( +pub trait PositionStrategy: DynClone { + fn on_new_tick( &self, position: &Position, status: &PairStatus, @@ -37,8 +37,8 @@ impl TrailingStop { } } -impl Strategy for TrailingStop { - fn position_on_new_tick( +impl PositionStrategy for TrailingStop { + fn on_new_tick( &self, position: &Position, status: &PairStatus,