update check pendding order
This commit is contained in:
parent
11c620310c
commit
28472a3bb1
@ -79,8 +79,8 @@ class RealTraderManager:
|
|||||||
# 检查限价单是否超时
|
# 检查限价单是否超时
|
||||||
if hasattr(Config, "RTM_ORDER_TIMEOUT"):
|
if hasattr(Config, "RTM_ORDER_TIMEOUT"):
|
||||||
try:
|
try:
|
||||||
schedule.every(30).seconds.do(
|
schedule.every(10).seconds.do(
|
||||||
run_threaded(self.check_limit_orders)
|
run_threaded(self.check_pending_orders)
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"限价单超时检查任务配置错误: {e}")
|
logger.error(f"限价单超时检查任务配置错误: {e}")
|
||||||
@ -176,7 +176,7 @@ class RealTraderManager:
|
|||||||
return {"success": False, "error": f"下单异常: {str(e)}"}
|
return {"success": False, "error": f"下单异常: {str(e)}"}
|
||||||
|
|
||||||
|
|
||||||
def check_limit_orders(self):
|
def check_pending_orders(self):
|
||||||
"""检查限价单是否超时"""
|
"""检查限价单是否超时"""
|
||||||
try:
|
try:
|
||||||
# 获取所有未完成订单
|
# 获取所有未完成订单
|
||||||
@ -205,6 +205,9 @@ class RealTraderManager:
|
|||||||
self.trader.place_market_order_for_remainder(order_info, strategy_name)
|
self.trader.place_market_order_for_remainder(order_info, strategy_name)
|
||||||
else:
|
else:
|
||||||
logger.warning(f"限价单撤销失败: ID={order_id}, 策略={strategy_name}")
|
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:
|
except Exception as e:
|
||||||
logger.error(f"检查限价单是否超时时发生异常: {str(e)}")
|
logger.error(f"检查限价单是否超时时发生异常: {str(e)}")
|
||||||
|
@ -57,19 +57,8 @@ class MyXtQuantTraderCallback:
|
|||||||
logger.info(f"资金变动: {asset.account_id} {asset.cash} {asset.total_asset}")
|
logger.info(f"资金变动: {asset.account_id} {asset.cash} {asset.total_asset}")
|
||||||
def on_stock_order(self, order):
|
def on_stock_order(self, order):
|
||||||
logger.warning(f"委托回报变化: ID={order.order_id} 状态={order.order_status}")
|
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):
|
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}")
|
logger.warning(f"成交变动: {trade.account_id} {trade.stock_code} {trade.order_id}")
|
||||||
|
|
||||||
def on_stock_position(self, position):
|
def on_stock_position(self, position):
|
||||||
logger.info(f"持仓变动: {position.stock_code} {position.volume}")
|
logger.info(f"持仓变动: {position.stock_code} {position.volume}")
|
||||||
def on_order_error(self, order_error):
|
def on_order_error(self, order_error):
|
||||||
@ -705,17 +694,3 @@ class XtTrader(BaseTrader):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"市价单补单过程发生异常: {str(e)}", exc_info=True)
|
logger.error(f"市价单补单过程发生异常: {str(e)}", exc_info=True)
|
||||||
return {"success": False, "error": f"市价单补单异常: {str(e)}"}
|
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)
|
|
Loading…
x
Reference in New Issue
Block a user