Update stoploss handling for entry-order adjustment

This commit is contained in:
Matthias 2022-05-15 15:30:57 +02:00
parent a947a1316b
commit 18fd3bb333
2 changed files with 3 additions and 6 deletions

View File

@ -780,8 +780,6 @@ 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)
@ -814,11 +812,11 @@ class Backtesting:
remaining=amount, remaining=amount,
cost=stake_amount + trade.fee_open, cost=stake_amount + trade.fee_open,
) )
trade.orders.append(order)
if pos_adjust and self._get_order_filled(order.price, row): if pos_adjust and self._get_order_filled(order.price, row):
order.close_bt_order(current_time, trade) order.close_bt_order(current_time, trade)
else: else:
trade.open_order_id = str(self.order_id_counter) trade.open_order_id = str(self.order_id_counter)
trade.orders.append(order)
trade.recalc_trade_from_orders() trade.recalc_trade_from_orders()
return trade return trade
@ -942,8 +940,6 @@ 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

@ -153,6 +153,7 @@ class Order(_DECL_BASE):
and len(trade.select_filled_orders(trade.entry_side)) == 1): and len(trade.select_filled_orders(trade.entry_side)) == 1):
trade.open_rate = self.price trade.open_rate = self.price
trade.recalc_open_trade_value() trade.recalc_open_trade_value()
trade.adjust_stop_loss(trade.open_rate, trade.stop_loss_pct, refresh=True)
@staticmethod @staticmethod
def update_orders(orders: List['Order'], order: Dict[str, Any]): def update_orders(orders: List['Order'], order: Dict[str, Any]):
@ -502,7 +503,7 @@ class LocalTrade():
if initial and not (self.stop_loss is None or self.stop_loss == 0): if initial and not (self.stop_loss is None or self.stop_loss == 0):
# Don't modify if called with initial and nothing to do # Don't modify if called with initial and nothing to do
return return
refresh = False if self.nr_of_successful_entries > 0 else refresh refresh = True if refresh and self.nr_of_successful_entries == 1 else False
leverage = self.leverage or 1.0 leverage = self.leverage or 1.0
if self.is_short: if self.is_short: