From 28472a3bb140efef800fcb063867f0a65b3ab97d Mon Sep 17 00:00:00 2001 From: zhiyong Date: Thu, 15 May 2025 11:14:53 +0800 Subject: [PATCH] update check pendding order --- src/real/real_trader_manager.py | 9 ++++++--- src/real/xt_trader.py | 27 +-------------------------- 2 files changed, 7 insertions(+), 29 deletions(-) diff --git a/src/real/real_trader_manager.py b/src/real/real_trader_manager.py index 0b9576a..7638b32 100644 --- a/src/real/real_trader_manager.py +++ b/src/real/real_trader_manager.py @@ -79,8 +79,8 @@ class RealTraderManager: # 检查限价单是否超时 if hasattr(Config, "RTM_ORDER_TIMEOUT"): try: - schedule.every(30).seconds.do( - run_threaded(self.check_limit_orders) + schedule.every(10).seconds.do( + run_threaded(self.check_pending_orders) ) except Exception as e: logger.error(f"限价单超时检查任务配置错误: {e}") @@ -176,7 +176,7 @@ class RealTraderManager: return {"success": False, "error": f"下单异常: {str(e)}"} - def check_limit_orders(self): + def check_pending_orders(self): """检查限价单是否超时""" try: # 获取所有未完成订单 @@ -205,6 +205,9 @@ class RealTraderManager: self.trader.place_market_order_for_remainder(order_info, strategy_name) else: logger.warning(f"限价单撤销失败: ID={order_id}, 策略={strategy_name}") + else: + logger.info(f"更新市价单: ID={order_id}, 策略={strategy_name}, 订单类型={order_info.order_type}") + self.trader.handle_order_update(order_id, strategy_name) except Exception as e: logger.error(f"检查限价单是否超时时发生异常: {str(e)}") diff --git a/src/real/xt_trader.py b/src/real/xt_trader.py index dde6898..9e3d440 100644 --- a/src/real/xt_trader.py +++ b/src/real/xt_trader.py @@ -57,19 +57,8 @@ class MyXtQuantTraderCallback: logger.info(f"资金变动: {asset.account_id} {asset.cash} {asset.total_asset}") def on_stock_order(self, order): logger.warning(f"委托回报变化: ID={order.order_id} 状态={order.order_status}") - if order.order_status == xtconstant.ORDER_PART_SUCC: - strategy_name = self.trader_instance.get_strategy_name(order.order_id) - logger.info(f"委托部分成交: code={order.stock_code} id={order.order_id} strategy={strategy_name}") - self.trader_instance.handle_order_update(order.order_id, strategy_name) - - elif order.order_status == xtconstant.ORDER_SUCCEEDED: - strategy_name = self.trader_instance.get_strategy_name(order.order_id) - logger.info(f"委托全部成交: code={order.stock_code} id={order.order_id} strategy={strategy_name}") - self.trader_instance.handle_order_update(order.order_id, strategy_name) def on_stock_trade(self, trade): - self.trader_instance.handle_trade_update(trade.order_id) logger.warning(f"成交变动: {trade.account_id} {trade.stock_code} {trade.order_id}") - def on_stock_position(self, position): logger.info(f"持仓变动: {position.stock_code} {position.volume}") def on_order_error(self, order_error): @@ -704,18 +693,4 @@ class XtTrader(BaseTrader): except Exception as e: logger.error(f"市价单补单过程发生异常: {str(e)}", exc_info=True) - return {"success": False, "error": f"市价单补单异常: {str(e)}"} - - def handle_trade_update(self, order_id): - # 当有成交回报时,立即更新订单状态 - try: - # 查找该订单所属的策略 - strategy_name = self.get_strategy_name(order_id) - if strategy_name: - # 使用trader的方法来处理订单状态更新,避免直接调用real_trader_manager - self.handle_order_update(order_id, strategy_name) - logger.info(f"成交回报触发订单状态更新: ID={order_id}, 策略={strategy_name}") - else: - logger.warning(f"成交回报触发订单状态更新失败: 根据order id未找到策略名 ID={order_id}, 策略={strategy_name}") - except Exception as e: - logger.error(f"成交回报处理异常: {str(e)}", exc_info=True) \ No newline at end of file + return {"success": False, "error": f"市价单补单异常: {str(e)}"} \ No newline at end of file