diff --git a/src/managers.rs b/src/managers.rs index 447ff33..c50d06f 100644 --- a/src/managers.rs +++ b/src/managers.rs @@ -15,7 +15,7 @@ use crate::connectors::{Client, ExchangeDetails}; use crate::currency::SymbolPair; use crate::events::{ActionMessage, ActorMessage, Event}; use crate::models::{ActiveOrder, OrderBook, OrderForm, OrderKind, OrderMetadata, Position, PriceTicker}; -use crate::strategy::{HiddenTrailingStop, MarketEnforce, PositionStrategy}; +use crate::strategy::{TrailingStop, MarketEnforce, PositionStrategy}; pub type OptionUpdate = (Option>, Option>); @@ -236,7 +236,6 @@ impl PositionManager { let (fees, opt_active_positions) = tokio::join!(self.client.trading_fees(),self.client.active_positions(&self.pair)); let (fees, opt_active_positions) = (fees?, opt_active_positions?); - // we assume there is only ONE active position per pair match opt_active_positions { // no open positions, no events and no messages returned @@ -683,7 +682,7 @@ impl PairManager { position_manager: PositionManagerHandle::new( pair, client, - Box::new(HiddenTrailingStop::default()), + Box::new(TrailingStop::default()), ), } } diff --git a/src/strategy.rs b/src/strategy.rs index 852385d..7080018 100644 --- a/src/strategy.rs +++ b/src/strategy.rs @@ -69,7 +69,7 @@ impl Debug for dyn OrderStrategy { ***************/ #[derive(Clone, Debug)] -pub struct HiddenTrailingStop { +pub struct TrailingStop { // position id: stop_percentage stop_percentages: HashMap, // position_id: bool @@ -86,7 +86,7 @@ pub struct HiddenTrailingStop { } -impl HiddenTrailingStop { +impl TrailingStop { fn print_status(&self, position: &Position) { match self.stop_percentages.get(&position.id()) { None => { @@ -143,13 +143,13 @@ impl HiddenTrailingStop { } } -impl Default for HiddenTrailingStop { +impl Default for TrailingStop { fn default() -> Self { let leverage = 15.0; // in percentage - let capital_min_profit = 4.0; - let capital_max_loss = capital_min_profit * 1.65; + let capital_min_profit = 8.5; + let capital_max_loss = capital_min_profit * 1.9; let capital_good_profit = capital_min_profit * 2.0; let weighted_min_profit = capital_min_profit / leverage; @@ -163,7 +163,7 @@ impl Default for HiddenTrailingStop { let good_profit_percentage = weighted_good_profit + good_profit_trailing_delta; let max_loss_percentage = -weighted_max_loss; - HiddenTrailingStop { + TrailingStop { stop_percentages: Default::default(), stop_loss_flags: Default::default(), capital_max_loss, @@ -179,7 +179,7 @@ impl Default for HiddenTrailingStop { } } -impl PositionStrategy for HiddenTrailingStop { +impl PositionStrategy for TrailingStop { fn name(&self) -> String { "Hidden Trailing Stop".into() } @@ -378,7 +378,7 @@ impl OrderStrategy for MarketEnforce { // long let offer_comparison = { - if order.order_form().amount() > 0.0 { + if order.order_form().is_long() { order_book.highest_bid() } else { order_book.lowest_ask()