refactor on_stock_trade
This commit is contained in:
parent
c8f31c445b
commit
11c620310c
@ -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)
|
Loading…
x
Reference in New Issue
Block a user