与委托回调示例)
本方案由EasyQuant AI量化助手提供。问题背景同步下单适合简单策略但在需要连续处理行情、委托和成交信息时异步下单更便于避免策略线程被等待操作阻塞。QMT 的order_stock_async()会返回请求序号seq随后通过on_order_stock_async_response()接收订单反馈。迅投 XtTrader 交易模块文档完整示例代码from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback from xtquant.xttype import StockAccount from xtquant import xtconstant QMT_PATH rD:\迅投极速交易终端 QMT\userdata_mini ACCOUNT_ID 你的资金账号 SESSION_ID 10002 class MyCallback(XtQuantTraderCallback): def on_order_stock_async_response(self, response): print( 异步下单反馈, 账户, response.account_id, 订单号, response.order_id, 请求序号, response.seq ) def on_stock_order(self, order): print( 委托状态更新, order.stock_code, 订单号, order.order_id, 状态, order.order_status ) def on_stock_trade(self, trade): print( 成交回报, trade.stock_code, 成交量, trade.traded_volume, 成交价, trade.traded_price ) def on_order_error(self, order_error): print( 下单失败, 错误码, order_error.error_id, 原因, order_error.error_msg ) def main(): callback MyCallback() trader XtQuantTrader(QMT_PATH, SESSION_ID) trader.register_callback(callback) trader.start() if trader.connect() ! 0: raise RuntimeError(QMT连接失败) account StockAccount(ACCOUNT_ID, STOCK) if trader.subscribe(account) ! 0: raise RuntimeError(账户订阅失败) seq trader.order_stock_async( accountaccount, stock_code510300.SH, order_typextconstant.STOCK_BUY, order_volume100, price_typextconstant.FIX_PRICE, price4.00, strategy_nameasync_demo, order_remark异步买入示例 ) if seq 0: print(异步下单请求已提交seq, seq) else: print(异步下单请求提交失败) trader.run_forever() if __name__ __main__: main()注意事项seq是异步请求编号不等同于最终订单编号。实际订单编号应从on_order_stock_async_response()的回调参数中获取。还应通过on_stock_order()和on_stock_trade()持续跟踪委托状态与成交状态。异步下单前仍需检查资金、持仓、交易时间和是否存在未完成订单。回调函数中避免无条件再次下单否则可能形成重复委托循环。总结QMT 的异步下单流程是“提交请求—获得seq—接收订单反馈—监听委托与成交回报”。它适合需要实时处理交易事件的实盘策略。