3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在QMT量化平台中,经常会遇到策略在回测环境下运行完美,但切换到实盘后,使用 passorder 下单却发现资金和仓位没有任何变化的情况。这通常是因为实盘环境的严格校验、账号配置或网络状态导致的。以下是标准的排查流程与解决方法:
正如您所提到的,排查实盘下单问题的第一步是查看系统底层的反馈。请依次检查以下三个面板:
资金不足:实盘可用资金不够。不在交易时间:测试时未在有效交易时段。废单:价格设置超出涨跌停限制,或报单参数不合法。风控拦截:触发了防自成交、单笔最大委托量等风控规则。回测时,QMT会使用虚拟账号,但实盘必须明确指定真实的资金账号。
init 中绑定了账号?set_account:def init(ContextInfo):
# 必须替换为您的真实资金账号
ContextInfo.set_account('您的实盘账号')
passorder 中的 accountid 是否正确?passorder 函数的第三个参数 accountid,确保传入的是正确的实盘账号字符串,或者直接使用 ContextInfo.accID(前提是已正确 set_account)。资金和仓位没变化,可能是因为委托已经发出,但处于“挂单”状态,尚未成交。
passorder 的 prType(报价类型)参数。如果在实盘中使用了指定价(prType=11),且指定价格偏离当前盘口较远,订单会一直挂在交易所。prType=14)或最新价(prType=5)。QMT的策略运行分为几种模式,请确保您开启了真正的实盘交易:
passorder 才会向真实柜台发送委托指令。passorder 函数的 quickTrade 参数决定了下单的触发时机:
quickTrade=0(默认),信号会在当前 K 线走完,下一根 K 线的第一个 tick 触发。如果实盘中 K 线还没走完,是不会马上下单的。quickTrade 设置为 1 或 2(需谨慎评估逻辑)。总结:遇到实盘下单无反应,首看“消息提示”找报错,次查“委托列表”看挂单,再查代码账号与模式配置。按照此流程,99%的实盘下单问题都能迎刃而解。