特别注意,在图表上运行,不会出现此bug。要复现此BUG,需要在“策略研究”中把策略运行在多个品种上——按版块添加策略就行。
测试代码与输出结果已在附件中,解压即可。下面截图简要说明↓:
场景:把所有的工作区都关掉,把之前的文件清空或删除。
1、新建一个策略单元,不留其他一切。
2、随便选一个版块都行,我这里选了“期货次主力”。注意,一共73个合约。
3、那么最后的结果应该也只有73行。但,可能是由于TB的BUG,出现了146行,写了两次。1-73行写完后,又原封不动的把74-146行重写一次,明显是循环了两遍。
麻烦各位大神看看,能否复现?还是只有我一个人这样?
我明明反复试验了好多次,每次都把其他东西关得干干净净了。
补充一句,这种提问就很专业,所有需要的东西都清楚明白,复现过程也没有疑点,非常高效。👍
你是用在策略研究里,这个不是oninit驱动机制的问题,这个是策略研究机制的问题。
因为策略研究本身是带优化的。
正常策略单元启动运行,先申请数据,然后完整运行一遍。如果你要优化,需要重新跑一遍,这就两遍了。策略交易工作区就是按这个机制设计,所以你在策略交易里跑,oninit只写一遍。
而策略研究等于是把申请数据的一遍和优化的第二遍合并到一起了,点启动实际就是跑两遍,所以fileappend就会输出两遍。
实质上这个不会对单次运行的过程结果起到影响。你的计数器可以改成global类型然后再查看一下,如果是连续运行两次,那么第二次计数器应该是2。经测试结果都是1,说明不是连续运行两次,而是重新运行。
我来复现看看把