From 4df9e38569dce1004827d3ec56b4f207971e272d Mon Sep 17 00:00:00 2001 From: Giulio De Pasquale Date: Mon, 22 Feb 2021 10:03:48 +0000 Subject: [PATCH] added slippage when submitting stop order --- src/strategy.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/strategy.rs b/src/strategy.rs index a0a4ea8..e9571bf 100644 --- a/src/strategy.rs +++ b/src/strategy.rs @@ -280,13 +280,18 @@ impl PositionStrategy for HiddenTrailingStop { }) .next().map_or_else(|| 0.0, |&x| x); + // we need to consider possible slippage when executing the stop order + let slippage_percentage = self.max_loss_percentage * 0.05; + + // calculating the stop price based on short/long position let stop_loss_price = { if position.is_short() { - position.base_price() * (1.0 - (self.max_loss_percentage - taker_fee) / 100.0) + position.base_price() * (1.0 - (self.max_loss_percentage - taker_fee - slippage_percentage) / 100.0) } else { - position.base_price() * (1.0 + (self.max_loss_percentage - taker_fee) / 100.0) + position.base_price() * (1.0 + (self.max_loss_percentage - taker_fee - slippage_percentage) / 100.0) } }; + let close_position_orders_msg = ActionMessage::ClosePositionOrders { position_id: position.id(), };