diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index f074ecfd9..5ebab705f 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -422,10 +422,7 @@ class LocalTrade(): self.initial_stop_loss = sl self.stop_loss = sl - if self.is_short: - self.stop_loss_pct = abs(percent) - else: - self.stop_loss_pct = -1 * abs(percent) + self.stop_loss_pct = -1 * abs(percent) self.stoploss_last_update = datetime.utcnow() def set_isolated_liq(self, isolated_liq: Optional[float]): @@ -576,15 +573,11 @@ class LocalTrade(): new_loss = max(self.isolated_liq, new_loss) # no stop loss assigned yet - # if not self.stop_loss: if self.initial_stop_loss_pct is None: logger.debug(f"{self.pair} - Assigning new stoploss...") self._set_stop_loss(new_loss, stoploss) self.initial_stop_loss = new_loss - if self.is_short: - self.initial_stop_loss_pct = abs(stoploss) - else: - self.initial_stop_loss_pct = -1 * abs(stoploss) + self.initial_stop_loss_pct = -1 * abs(stoploss) # evaluate if the stop loss needs to be updated else: diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 1b8567d6e..3af6110c8 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -1434,39 +1434,39 @@ def test_adjust_stop_loss_short(fee): ) trade.adjust_stop_loss(trade.open_rate, 0.05, True) assert trade.stop_loss == 1.05 - assert trade.stop_loss_pct == 0.05 + assert trade.stop_loss_pct == -0.05 assert trade.initial_stop_loss == 1.05 - assert trade.initial_stop_loss_pct == 0.05 + assert trade.initial_stop_loss_pct == -0.05 # Get percent of profit with a lower rate trade.adjust_stop_loss(1.04, 0.05) assert trade.stop_loss == 1.05 - assert trade.stop_loss_pct == 0.05 + assert trade.stop_loss_pct == -0.05 assert trade.initial_stop_loss == 1.05 - assert trade.initial_stop_loss_pct == 0.05 + assert trade.initial_stop_loss_pct == -0.05 # Get percent of profit with a custom rate (Higher than open rate) trade.adjust_stop_loss(0.7, 0.1) # If the price goes down to 0.7, with a trailing stop of 0.1, # the new stoploss at 0.1 above 0.7 would be 0.7*0.1 higher assert round(trade.stop_loss, 8) == 0.77 - assert trade.stop_loss_pct == 0.1 + assert trade.stop_loss_pct == -0.1 assert trade.initial_stop_loss == 1.05 - assert trade.initial_stop_loss_pct == 0.05 + assert trade.initial_stop_loss_pct == -0.05 # current rate lower again ... should not change trade.adjust_stop_loss(0.8, -0.1) assert round(trade.stop_loss, 8) == 0.77 assert trade.initial_stop_loss == 1.05 - assert trade.initial_stop_loss_pct == 0.05 + assert trade.initial_stop_loss_pct == -0.05 # current rate higher... should raise stoploss trade.adjust_stop_loss(0.6, -0.1) assert round(trade.stop_loss, 8) == 0.66 assert trade.initial_stop_loss == 1.05 - assert trade.initial_stop_loss_pct == 0.05 + assert trade.initial_stop_loss_pct == -0.05 # Initial is true but stop_loss set - so doesn't do anything trade.adjust_stop_loss(0.3, -0.1, True) assert round(trade.stop_loss, 8) == 0.66 assert trade.initial_stop_loss == 1.05 - assert trade.initial_stop_loss_pct == 0.05 - assert trade.stop_loss_pct == 0.1 + assert trade.initial_stop_loss_pct == -0.05 + assert trade.stop_loss_pct == -0.1 trade.set_isolated_liq(0.63) trade.adjust_stop_loss(0.59, -0.1) assert trade.stop_loss == 0.63 @@ -1825,9 +1825,9 @@ def test_stoploss_reinitialization_short(default_conf, fee): ) trade.adjust_stop_loss(trade.open_rate, -0.1, True) assert trade.stop_loss == 1.02 - assert trade.stop_loss_pct == 0.1 + assert trade.stop_loss_pct == -0.1 assert trade.initial_stop_loss == 1.02 - assert trade.initial_stop_loss_pct == 0.1 + assert trade.initial_stop_loss_pct == -0.1 Trade.query.session.add(trade) # Lower stoploss Trade.stoploss_reinitialization(-0.15) @@ -1835,18 +1835,18 @@ def test_stoploss_reinitialization_short(default_conf, fee): assert len(trades) == 1 trade_adj = trades[0] assert trade_adj.stop_loss == 1.03 - assert trade_adj.stop_loss_pct == 0.15 + assert trade_adj.stop_loss_pct == -0.15 assert trade_adj.initial_stop_loss == 1.03 - assert trade_adj.initial_stop_loss_pct == 0.15 + assert trade_adj.initial_stop_loss_pct == -0.15 # Raise stoploss Trade.stoploss_reinitialization(-0.05) trades = Trade.get_open_trades() assert len(trades) == 1 trade_adj = trades[0] assert trade_adj.stop_loss == 1.01 - assert trade_adj.stop_loss_pct == 0.05 + assert trade_adj.stop_loss_pct == -0.05 assert trade_adj.initial_stop_loss == 1.01 - assert trade_adj.initial_stop_loss_pct == 0.05 + assert trade_adj.initial_stop_loss_pct == -0.05 # Trailing stoploss trade.adjust_stop_loss(0.98, -0.05) assert trade_adj.stop_loss == 0.9898 @@ -1857,9 +1857,9 @@ def test_stoploss_reinitialization_short(default_conf, fee): trade_adj = trades[0] # Stoploss should not change in this case. assert trade_adj.stop_loss == 0.9898 - assert trade_adj.stop_loss_pct == 0.05 + assert trade_adj.stop_loss_pct == -0.05 assert trade_adj.initial_stop_loss == 1.01 - assert trade_adj.initial_stop_loss_pct == 0.05 + assert trade_adj.initial_stop_loss_pct == -0.05 # Stoploss can't go above liquidation price trade_adj.set_isolated_liq(0.985) trade.adjust_stop_loss(0.9799, -0.05)