Merge pull request #1 from xmatthias/bt_stop_attempt
Update stoploss handling for entry-order adjustment
This commit is contained in:
commit
cf001db396
@ -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)
|
||||||
|
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user