报告一个Tbquant的bug,FileAppend在多品种上运行时,会写两次。

特别注意,在图表上运行,不会出现此bug。要复现此BUG,需要在“策略研究”中把策略运行在多个品种上——按版块添加策略就行。测试代码与输出结果已在附件中,解压即可。下面截图简要说明↓:场景:把所有的工作区都关掉,把之前的文件清空或删除。1、新建一个策略单元,不留其他一切。2、随便选一个版块都行,我这里选了“期货次主力”。注意,一共73个合约。3、那么最后的结果应该也只有73行。但,可能是由于TB的BUG,出现了146行,写了两次。1-73行写完后,又原封不动的把74-146行重写一次,明显是循环了两遍。麻烦各位大神看看,能否复现?还是只有我一个人这样?我明明反复试验了好多次,每次都把其他东西关得干干净净了。

补充一句,这种提问就很专业,所有需要的东西都清楚明白,复现过程也没有疑点,非常高效。👍

你是用在策略研究里,这个不是oninit驱动机制的问题,这个是策略研究机制的问题。因为策略研究本身是带优化的。正常策略单元启动运行,先申请数据,然后完整运行一遍。如果你要优化,需要重新跑一遍,这就两遍了。策略交易工作区就是按这个机制设计,所以你在策略交易里跑,oninit只写一遍。而策略研究等于是把申请数据的一遍和优化的第二遍合并到一起了,点启动实际就是跑两遍,所以fileappend就会输出两遍。实质上这个不会对单次运行的过程结果起到影响。你的计数器可以改成global类型然后再查看一下,如果是连续运行两次,那么第二次计数器应该是2。经测试结果都是1,说明不是连续运行两次,而是重新运行。

我来复现看看把