QMT委托回报异步返回,策略里处理不好会出乱单
发布时间:8小时前阅读:5
QMT的委托回报是异步机制,你发出委托之后,成交、撤单、废单这些回报不会立刻返回,而是稍后通过回调送过来。很多实盘事故就出在策略没有正确处理这套异步逻辑上,把这个问题讲透。
先理解异步的含义。下单函数返回成功,只代表委托已经受理,不代表成交。如果代码里下完单紧接着查持仓做下一步决策,此时持仓还没更新,决策依据就是错的。正确做法是:下单后等待回报回调,用成交回报驱动后续逻辑,状态没变化就不做动作。
必须处理的几种回报:
1、部分成交。一笔委托可能分几次成交,每笔成交都有独立回报,策略要按累计成交量更新状态,而不是假设一次性全成。
2、废单。价格越界、资金不足、标的限制,都会产生废单。废单不处理,策略会以为仓位已经建立,后面整个状态机全错。收到废单回报要触发重试或者告警。
3、已报未成。挂着的委托要跟踪剩余量,超过设定时间未成交就撤单重挂,这是执行类策略的基本功。
4、撤单回报。撤单也有失败可能,比如撤单时恰好成交,回报会显示撤单失败加成交,两个状态都要处理。
工程上的建议:给每笔委托编号并维护一张状态表,回调只负责更新状态,主逻辑轮询状态做决策,这样即使回调乱序到达也不会错乱;关键操作写日志,出问题能逐笔还原。
一句话总结:把「下单」和「成交」当成两个独立事件来编程,是QMT实盘不跑乱单的分水岭。异步处理写扎实了,策略在任何行情下都不会发出莫名其妙的单子。这套状态管理的思路,也适用于其他交易接口。新人常在这里栽跟头,多花一天打磨状态机,胜过实盘后十次救火。回报处理逻辑写清楚,策略的可维护性也会明显提升。
股票开户欢迎找我!可以申请万0.854的股票佣金、etf 可转债佣金万0.5、国债逆回购一折(百万分之一)!量化软件QMT+ptrade免费使用!还有888、999资金靓号等你选!
温馨提示:投资有风险,选择需谨慎。



问一问
从业认证

+微信
分享该文章
