量化软件QMT开户实操全攻略!QMT实盘踩坑:委托全成、部成、废单,我用血泪总结出这套判断法!
发布时间:18分钟前阅读:27
添加图片注释,不超过 140 字(可选)
在 QMT 里判断委托状态,核心就一句话:不要只看函数返回值,要盯住回调里的 order.status 和 order.traded_volume。
下单函数(比如 passorder)返回成功,只代表指令发出去了,不代表交易所收了、更不代表成交了。真正的状态变化,是通过回调函数推给你的。
先用大白话分清三种情况 全部成交:看 order.status == 56(常量 ORDER_SUCCEEDED),并且 order.traded_volume == order.volume。委托量多少,就成交了多少,这事儿结束了。
部分成交:看 order.status == 55(常量 ORDER_PART_SUCC),或者 order.traded_volume > 0 但小于 order.volume。说明只成交了一部分,剩下的还在市场里挂着。这时候你不能当它完成了,也不能当它没发生——仓位和资金已经变了一部分,得根据剩余量决定是继续等还是撤单重发。
拒单(废单):看 order.status == 57(常量 ORDER_JUNK)。这是最坑的一种,因为拒单不会触发成交回调,你的策略如果只在成交回调里写逻辑,拒单了都不知道。
拒单后异常信息怎么捕获? 这是新手最容易踩的坑。分两个层面说。
第一个坑:query_stock_orders 查出来的废单原因可能被截断。
你主动去查委托列表,拿到的 XtOrder.status_msg 字段,只保留前 20 个字符。如果拒单原因很长,比如“当前账户可用资金不足且持仓数量为零,不符合买入条件”,你只能看到前面一小截,根本没法定位问题。
解决办法:不要依赖主动查询去拿完整原因。要用 on_order_error 回调,这个是推给你的,信息完整。
python def on_order_error(context, orderError):
# orderError 里才有完整的拒单原因
print(f"订单被拒了!错误码:{orderError.error_id}")
print(f"完整原因:{orderError.error_msg}")
第二个坑:拒单原因的详细程度,取决于“谁拒绝的”。
本地/柜台前置校验拒的(比如参数填错、价格超出涨跌停、资金不足):报错信息通常比较清楚,error_msg 里能直接看懂,比如“资金不足”“价格超限”。
已经报进交易所后被拒的:券商接口可能只转发一个标准代码,翻译过来就一句“交易所拒单”,具体细节得对着错误码文档查。
网络抖动导致状态未知:更麻烦,接口压根没收到应答,你不知道是成交了、拒了、还是还排着队。这种情况绝对不能无脑重试,必须主动去 query_stock_orders 查一遍,确认状态再动。
一套实用的判断写法(大白话版) 别搞太复杂,就在 on_order_status 回调里,每次状态变化时看一眼:
python def on_order_status(context, order):
status = order.status
traded = order.traded_volume
total = order.volume
if status == 56: # 已成
print(f"全部成交了,{order.stock_code} 成交 {traded} 股")
# 这里可以写:成交后设置止损、更新持仓记录等
elif status == 55: # 部成
print(f"只成交了一部分,已成交 {traded},还剩 {total - traded} 挂在那")
# 这里可以写:判断要不要撤掉剩下的重新报
elif status == 57: # 废单
print(f"被拒了,委托号 {order.order_id},去 on_order_error 里看原因")
# 这里可以写:记录日志、发告警、决定是否调整参数重报
elif status == 54: # 已撤
print(f"撤单成功,原来委托 {total},成交过 {traded}")
一个容易忘的细节:部分成交然后撤单,最终状态是“部撤”(53),不是“已撤”。这时候已成交的那部分是有效的,仓位已经变了,程序不能当没发生过。
最后一句实在话 QMT 的订单状态判断,回调比查询可靠,on_order_error 比 status_msg 完整。把拒单的捕获逻辑单独写在 on_order_error 里,别指望从查委托的返回值里拿到能看懂的原因。
欢迎交流,点头像添加咨询!!AA级上市券商,免费理财咨询,资金量大股票佣金万0.85,逆回购一折!专项两融4%;港股通资金大W0.7;北交所W2(提供快速通道抢碎股)!ETF万0.5,期权1.8元全包,ETF免申赎费!免费提供QMT+ptrade量化软件(含教程和答疑群)、万得宏汇套利软件、VIP极速通道、L2十档行情!!可选靓号开户!支持T0智能算法!
温馨提示:投资有风险,选择需谨慎。
下一篇资讯:
暂无下一篇
-
@所有人,2026年中秋节A股休市安排出炉!
2026-09-21 15:09
-
美联储加息25个基点落地:股市和黄金会受什么影响?3个细节别忽略
2026-09-21 15:09
-
一码通账户怎么查?名下券商账户、3户上限与旧户去向
2026-09-21 15:09



问一问
从业认证

+微信
分享该文章
