QMT策略停止以后,已经提交的订单会自动撤销吗?
发布时间:9小时前阅读:6
QMT策略停止以后,已经成功提交到交易柜台的订单通常不会因为程序停止而自动撤销。停止策略只代表代码不再继续产生新信号和新订单,之前已经报出的委托仍会按照市场规则等待成交、部分成交、撤销或失效。
这个区别非常重要。很多新手看到策略状态变成“已停止”,就以为账户也回到了停止前。实际上,订单一旦进入柜台,就脱离了策略进程的生命周期。即使关闭客户端、电脑断电或代码报错,市场中的有效委托仍可能继续成交。
停止策略前,首先应查询未完成委托。QMT或账户客户端中通常可以查看当日订单和可撤订单。若策略不希望剩余订单继续成交,需要主动提交撤单,并等待撤单状态确认。点击停止按钮本身不等于撤单。
部分成交的情况更复杂。假设订单原本买入一千股,已经成交三百股,剩余七百股仍在排队。停止策略后,已成交的三百股已经成为持仓,不能撤回;剩余部分若未撤,仍可能继续成交。程序重启时必须重新查询实际持仓和订单,不能继续使用停止前的本地变量。
废单和已撤也要区分。废单表示订单未被接受或因参数、权限等原因失效;已撤表示原订单曾经有效,但剩余数量已经撤销。策略停止后看到订单列表,不应只看“有无记录”,还要看状态和成交数量。
安全停止可以分成五步。第一,关闭新信号入口,避免停止过程中继续报单;第二,查询当日未完成委托;第三,根据策略规则决定是否撤销;第四,等待最终状态并核对成交;第五,保存资金、持仓和订单信息后再关闭客户端。这个过程比直接结束进程稍慢,却能避免留下未知挂单。
若程序意外崩溃,恢复时也应按照同样逻辑。重新启动后先查询账户,而不是立刻恢复信号。只有确认退出期间发生了哪些成交,才能决定下一步。否则程序可能把已经成交的订单当成未成交,再次发送相同请求。
QMT立即下单模式尤其需要注意状态保存。关键订单信息不能只放在会回滚的ContextInfo属性中,应使用普通全局对象或持久化文件记录。即使本地记录存在,最终仍要以柜台查询为准,因为程序退出期间市场状态可能变化。
有人担心策略停止后订单继续成交是不是软件问题。其实这是交易系统的正常逻辑。程序负责提交和监控,柜台负责维护订单。二者解耦,才能保证客户端短暂断线时,已经报出的订单不会凭空消失。
如果只是临时暂停策略,但希望订单继续等待,可以不撤单;如果停止意味着今天不再执行,应明确处理所有可撤委托。不同策略可以有不同规则,但必须事先定义,不能等异常发生后临时猜测。
普通交易客户端在这里非常有用。即使QMT策略停止或无法运行,用户仍可以通过基础客户端查看账户、撤销订单和核对成交。自动交易不应让用户失去人工接管能力。
如果策略通过定时任务触发,停止按钮还可能只停止当前任务,不影响其他正在运行的模型。用户应检查同一账户是否还有其他策略、条件单或人工挂单。收盘前统一查看全部可撤订单,比只看某个策略详情更可靠。
对于隔夜策略,还要定义订单是否允许跨到收盘。普通日内委托通常会在当日结束后失效,但不同订单类型处理不同。程序不应依赖“反正收盘会消失”,而应在策略规则中明确何时撤单、何时保留。
还可以在程序中设置“停机标记”。当用户准备结束策略时,先把标记切换为停止新信号,再执行订单清理。这样即使某个定时函数恰好触发,也不会在撤单过程中又产生新委托。停机完成后,把最终持仓和现金写入日志,下一次启动时用来对照。
停止策略之前,先处理挂单和账户状态,才算真正完成停机。对停机顺序和重启恢复仍不熟悉时,可以参考主页后续整理的检查表。本文用于程序化交易风险教育,不构成投资建议。

温馨提示:投资有风险,选择需谨慎。
-
一家坚守19年的财商教育平台,如何重塑投资服务的“靠谱”底色
2026-06-29 13:08
-
REITs打新:⌈华泰三峡新能源REIT⌋ 和 ⌈创金合信北京国资公司REIT⌋ 本周发售!
2026-06-29 13:08
-
券商客户经理是做什么的?为什么建议你理财投资前找一位?
2026-06-29 13:08


问一问

+微信
分享该文章
