Refresh open_rate and stoploss on order replacement.

This commit is contained in:
eSeR1805 2022-05-14 16:37:04 +03:00
parent 8e9384e8e6
commit 1c20fb7638
No known key found for this signature in database
GPG Key ID: BA53686259B46936
2 changed files with 6 additions and 3 deletions

View File

@ -780,6 +780,8 @@ class Backtesting:
# interest_rate=interest_rate, # interest_rate=interest_rate,
orders=[], orders=[],
) )
elif trade.nr_of_successful_entries == 0:
trade.open_rate = propose_rate
trade.adjust_stop_loss(trade.open_rate, self.strategy.stoploss, initial=True) trade.adjust_stop_loss(trade.open_rate, self.strategy.stoploss, initial=True)
@ -940,6 +942,8 @@ class Backtesting:
requested_rate=requested_rate, requested_rate=requested_rate,
requested_stake=(order.remaining * order.price), requested_stake=(order.remaining * order.price),
direction='short' if trade.is_short else 'long') direction='short' if trade.is_short else 'long')
trade.adjust_stop_loss(trade.open_rate, self.strategy.stoploss,
initial=False, refresh=True)
else: else:
# assumption: there can't be multiple open entry orders at any given time # assumption: there can't be multiple open entry orders at any given time
return (trade.nr_of_successful_entries == 0) return (trade.nr_of_successful_entries == 0)

View File

@ -491,7 +491,7 @@ class LocalTrade():
self.stoploss_last_update = datetime.utcnow() self.stoploss_last_update = datetime.utcnow()
def adjust_stop_loss(self, current_price: float, stoploss: float, def adjust_stop_loss(self, current_price: float, stoploss: float,
initial: bool = False) -> None: initial: bool = False, refresh: bool = False) -> None:
""" """
This adjusts the stop loss to it's most recently observed setting This adjusts the stop loss to it's most recently observed setting
:param current_price: Current rate the asset is traded :param current_price: Current rate the asset is traded
@ -516,8 +516,7 @@ class LocalTrade():
new_loss = max(self.liquidation_price, new_loss) new_loss = max(self.liquidation_price, new_loss)
# no stop loss assigned yet # no stop loss assigned yet
if self.initial_stop_loss_pct is None: if self.initial_stop_loss_pct is None or refresh:
logger.debug(f"{self.pair} - Assigning new stoploss...")
self._set_stop_loss(new_loss, stoploss) self._set_stop_loss(new_loss, stoploss)
self.initial_stop_loss = new_loss self.initial_stop_loss = new_loss
self.initial_stop_loss_pct = -1 * abs(stoploss) self.initial_stop_loss_pct = -1 * abs(stoploss)