Update backtesting to not use open_order_id
This commit is contained in:
@@ -588,7 +588,6 @@ class Backtesting:
|
|||||||
"""
|
"""
|
||||||
if order and self._get_order_filled(order.ft_price, row):
|
if order and self._get_order_filled(order.ft_price, row):
|
||||||
order.close_bt_order(current_date, trade)
|
order.close_bt_order(current_date, trade)
|
||||||
trade.open_order_id = None
|
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@@ -854,7 +853,6 @@ class Backtesting:
|
|||||||
self.trade_id_counter += 1
|
self.trade_id_counter += 1
|
||||||
trade = LocalTrade(
|
trade = LocalTrade(
|
||||||
id=self.trade_id_counter,
|
id=self.trade_id_counter,
|
||||||
open_order_id=self.order_id_counter,
|
|
||||||
pair=pair,
|
pair=pair,
|
||||||
base_currency=base_currency,
|
base_currency=base_currency,
|
||||||
stake_currency=self.config['stake_currency'],
|
stake_currency=self.config['stake_currency'],
|
||||||
@@ -916,8 +914,7 @@ class Backtesting:
|
|||||||
)
|
)
|
||||||
order._trade_bt = trade
|
order._trade_bt = trade
|
||||||
trade.orders.append(order)
|
trade.orders.append(order)
|
||||||
if not self._try_close_open_order(order, trade, current_time, row):
|
self._try_close_open_order(order, trade, current_time, row)
|
||||||
trade.open_order_id = str(self.order_id_counter)
|
|
||||||
trade.recalc_trade_from_orders()
|
trade.recalc_trade_from_orders()
|
||||||
|
|
||||||
return trade
|
return trade
|
||||||
@@ -929,7 +926,7 @@ class Backtesting:
|
|||||||
"""
|
"""
|
||||||
for pair in open_trades.keys():
|
for pair in open_trades.keys():
|
||||||
for trade in list(open_trades[pair]):
|
for trade in list(open_trades[pair]):
|
||||||
if trade.open_order_id and trade.nr_of_successful_entries == 0:
|
if trade.has_open_orders and trade.nr_of_successful_entries == 0:
|
||||||
# Ignore trade if entry-order did not fill yet
|
# Ignore trade if entry-order did not fill yet
|
||||||
continue
|
continue
|
||||||
exit_row = data[pair][-1]
|
exit_row = data[pair][-1]
|
||||||
@@ -1006,13 +1003,11 @@ class Backtesting:
|
|||||||
else:
|
else:
|
||||||
# Close additional entry order
|
# Close additional entry order
|
||||||
del trade.orders[trade.orders.index(order)]
|
del trade.orders[trade.orders.index(order)]
|
||||||
trade.open_order_id = None
|
|
||||||
return False
|
return False
|
||||||
if order.side == trade.exit_side:
|
if order.side == trade.exit_side:
|
||||||
self.timedout_exit_orders += 1
|
self.timedout_exit_orders += 1
|
||||||
# Close exit order and retry exiting on next signal.
|
# Close exit order and retry exiting on next signal.
|
||||||
del trade.orders[trade.orders.index(order)]
|
del trade.orders[trade.orders.index(order)]
|
||||||
trade.open_order_id = None
|
|
||||||
return False
|
return False
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -1040,7 +1035,6 @@ class Backtesting:
|
|||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
del trade.orders[trade.orders.index(order)]
|
del trade.orders[trade.orders.index(order)]
|
||||||
trade.open_order_id = None
|
|
||||||
self.canceled_entry_orders += 1
|
self.canceled_entry_orders += 1
|
||||||
|
|
||||||
# place new order if result was not None
|
# place new order if result was not None
|
||||||
@@ -1051,7 +1045,7 @@ class Backtesting:
|
|||||||
order.safe_remaining * order.ft_price / trade.leverage),
|
order.safe_remaining * order.ft_price / trade.leverage),
|
||||||
direction='short' if trade.is_short else 'long')
|
direction='short' if trade.is_short else 'long')
|
||||||
# Delete trade if no successful entries happened (if placing the new order failed)
|
# Delete trade if no successful entries happened (if placing the new order failed)
|
||||||
if trade.open_order_id is None and trade.nr_of_successful_entries == 0:
|
if not trade.has_open_orders and trade.nr_of_successful_entries == 0:
|
||||||
return True
|
return True
|
||||||
self.replaced_entry_orders += 1
|
self.replaced_entry_orders += 1
|
||||||
else:
|
else:
|
||||||
@@ -1136,7 +1130,7 @@ class Backtesting:
|
|||||||
self.wallets.update()
|
self.wallets.update()
|
||||||
|
|
||||||
# 4. Create exit orders (if any)
|
# 4. Create exit orders (if any)
|
||||||
if not trade.open_order_id:
|
if not trade.has_open_orders:
|
||||||
self._check_trade_exit(trade, row) # Place exit order if necessary
|
self._check_trade_exit(trade, row) # Place exit order if necessary
|
||||||
|
|
||||||
# 5. Process exit orders.
|
# 5. Process exit orders.
|
||||||
|
|||||||
@@ -765,7 +765,6 @@ class LocalTrade:
|
|||||||
self.close_date = self.close_date or datetime.utcnow()
|
self.close_date = self.close_date or datetime.utcnow()
|
||||||
self.is_open = False
|
self.is_open = False
|
||||||
self.exit_order_status = 'closed'
|
self.exit_order_status = 'closed'
|
||||||
self.open_order_id = None
|
|
||||||
self.recalc_trade_from_orders(is_closing=True)
|
self.recalc_trade_from_orders(is_closing=True)
|
||||||
if show_msg:
|
if show_msg:
|
||||||
logger.info(f"Marking {self} as closed as the trade is fulfilled "
|
logger.info(f"Marking {self} as closed as the trade is fulfilled "
|
||||||
|
|||||||
Reference in New Issue
Block a user