refactor on_stock_trade

This commit is contained in:
zhiyong 2025-05-15 11:07:28 +08:00
parent c8f31c445b
commit 11c620310c

View File

@ -67,24 +67,9 @@ class MyXtQuantTraderCallback:
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):
logger.info(f"成交变动: {trade.account_id} {trade.stock_code} {trade.order_id}")
self.trader_instance.handle_trade_update(trade.order_id)
logger.warning(f"成交变动: {trade.account_id} {trade.stock_code} {trade.order_id}")
# 当有成交回报时,立即更新订单状态
try:
if self.trader_instance:
order_id = trade.order_id
# 查找该订单所属的策略
strategy_name = self.trader_instance.get_strategy_name(order_id)
if strategy_name:
# 使用trader的方法来处理订单状态更新避免直接调用real_trader_manager
self.trader_instance.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}")
else:
logger.warning(f"成交回报触发订单状态更新失败: trader_instance为空")
except Exception as e:
logger.error(f"成交回报处理异常: {str(e)}", exc_info=True)
def on_stock_position(self, position):
logger.info(f"持仓变动: {position.stock_code} {position.volume}")
def on_order_error(self, order_error):
@ -720,3 +705,17 @@ 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)