QMT 里回测跑得通、模拟盘不出单,通常是这几处不对
发布时间:1小时前阅读:8
回测里信号一堆,年化曲线漂亮,换到模拟盘,一天下来一笔委托都没有。这种情况太常见了,而且原因往往很朴素。
按排查顺序,通常是这几处。
1、数据源不一样。回测用的是本地历史数据,模拟盘用的是实时行情。如果你的策略依赖某个字段,而实时行情里这个字段是空的或者格式不同,条件永远不成立。解决办法是把策略里每个用到的字段在模拟盘日志里打出来,看是不是真的有值。
2、时间周期不匹配。回测按日线跑,模拟盘里如果设成了分钟级,逻辑可能完全变样。反过来也一样,按分钟写的逻辑放到日线上跑,信号会消失。确认两边的运行周期一致。
3、股票池为空。策略要遍历一个股票池,而模拟盘里池子没加载成功,或者池子里的代码格式跟行情接口要求的不一样,遍历了零只股票,自然没有信号。日志里加一行输出池子的长度,一眼就能看出来。
4、条件太严。回测用了几年数据,某一天刚好满足条件;模拟盘只有一天,没满足很正常。这不是 bug,是样本太少。想验证,把模拟盘跑够两周再看。
5、交易限制拦住了。信号有了,委托被资金、持仓、涨跌停、停牌这些限制挡掉。这类要去看委托回报,而不是只看信号。
判断标准:回测和模拟盘的差异,一定要定位到具体的字段或具体的一行代码,不要笼统归因为"软件不行"。定位到那一行,问题基本就解决了。
还有一类原因比较隐蔽:模拟盘和实盘用的账户不同。有些券商的模拟盘是独立的仿真账户,资金、持仓、权限都和真实账户分开。你以为自己在测实盘逻辑,其实测的是另一套环境。策略跑通之后,还要在真实账户上用极小仓位再验证一次,这两步不能合并。
最后提醒一句:差异定位出来之后,记得把它写进策略的注释里。同一个坑,半年后你会再踩一次,而那时候你已经忘了今天查过什么。
补一个实用的排查工具:把策略的中间变量每隔几行打印一次。与其纠结哪一步不对,不如让它自己把每一步算出来的值说出来。跑一次模拟盘,日志从头看到尾,通常在看第三遍的时候就能发现那个不合常理的数字。调试的本质不是猜,是让程序把话说清楚。
股票开户欢迎找我!可以申请万0.854的股票佣金、etf 可转债佣金万0.5、国债逆回购一折(百万分之一)!量化软件QMT+ptrade免费使用!还有888、999资金靓号等你选!
温馨提示:投资有风险,选择需谨慎。



问一问
从业认证

+微信
分享该文章
