fix test_handle_stoploss_on_exchange, add more orders related hybrid_properties to Trade classes

This commit is contained in:
axel
2023-06-15 11:56:41 -04:00
parent defa6f45b2
commit 60a50a2ea8
2 changed files with 28 additions and 1 deletions

View File

@@ -1236,7 +1236,7 @@ class FreqtradeBot(LoggingMixin):
self.handle_protections(trade.pair, trade.trade_direction)
return True
if trade.open_orders_count != 0 or not trade.is_open:
if trade.open_entry_or_exit_orders_count != 0 or not trade.is_open:
# Trade has an open Buy or Sell order, Stoploss-handling can't happen in this case
# as the Amount on the exchange is tied up in another trade.
# The trade can be closed already (sell-order fill confirmation came in this iteration)

View File

@@ -473,6 +473,15 @@ class LocalTrade():
def open_orders_count(self) -> int:
return len(self.open_orders)
@hybrid_property
def open_entry_or_exit_orders_count(self) -> int:
open_buy_or_sell_orders = []
for oo in self.open_orders:
if (oo.ft_order_side in ['buy', 'sell']):
open_buy_or_sell_orders.append(oo)
return len(open_buy_or_sell_orders)
@hybrid_property
def open_orders_ids(self) -> list:
return [open_order.order_id for open_order in self.open_orders]
@@ -1354,6 +1363,24 @@ class Trade(ModelBase, LocalTrade):
.subquery()
)
@hybrid_property
def open_entry_or_exit_orders_count(self) -> int:
open_buy_or_sell_orders = []
for oo in self.open_orders:
if (oo.ft_order_side in ['buy', 'sell']):
open_buy_or_sell_orders.append(oo)
return len(open_buy_or_sell_orders)
@open_entry_or_exit_orders_count.expression
def open_entry_or_exit_orders_count(cls):
return (
select(func.count(Order.order_id))
.where(Order.ft_order_side.contains(['buy', 'sell']))
.where(Order.ft_trade_id == cls.id)
.subquery()
)
@hybrid_property
def open_orders_ids(self) -> list:
return [open_order.order_id for open_order in self.open_orders]