Add open_order_updater

This commit is contained in:
Matthias 2020-08-13 17:18:56 +02:00
parent c4d7aff5c3
commit 95efc0d688
2 changed files with 23 additions and 0 deletions

View File

@ -227,6 +227,22 @@ class FreqtradeBot:
open_trades = len(Trade.get_open_trades()) open_trades = len(Trade.get_open_trades())
return max(0, self.config['max_open_trades'] - open_trades) return max(0, self.config['max_open_trades'] - open_trades)
def update_open_orders(self):
"""
Updates open orders based on order list kept in the database
"""
orders = Order.get_open_orders()
logger.info(f"Updating {len(orders)} open orders.")
for order in orders:
try:
if order.ft_order_side == 'stoposs':
fo = self.exchange.fetch_stoploss_order(order.order_id, order.ft_pair)
else:
fo = self.exchange.fetch_order(order.order_id, order.ft_pair)
order.update_from_ccxt_object(fo)
except ExchangeError:
logger.warning(f"Error updating {order.order_id}")
# #
# BUY / enter positions / open trades logic and methods # BUY / enter positions / open trades logic and methods
# #

View File

@ -159,6 +159,7 @@ class Order(_DECL_BASE):
@staticmethod @staticmethod
def update_orders(orders: List['Order'], order: Dict[str, Any]): def update_orders(orders: List['Order'], order: Dict[str, Any]):
""" """
Get all non-closed orders - useful when trying to batch-update orders
""" """
filtered_orders = [o for o in orders if o.order_id == order['id']] filtered_orders = [o for o in orders if o.order_id == order['id']]
if filtered_orders: if filtered_orders:
@ -177,6 +178,12 @@ class Order(_DECL_BASE):
o.update_from_ccxt_object(order) o.update_from_ccxt_object(order)
return o return o
@staticmethod
def get_open_orders():
"""
"""
return Order.query.filter(Order.ft_is_open.is_(True)).all()
class Trade(_DECL_BASE): class Trade(_DECL_BASE):
""" """