mirror of
https://github.com/freqtrade/freqtrade.git
synced 2026-01-29 10:20:25 +00:00
fix test_handle_stoploss_on_exchange, add more orders related hybrid_properties to Trade classes
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user