一个让人莫名奇妙的bug

这是onbar事件代码:

        for i=BarCount()-1 DownTo 0
        {
            print(text(date[i]));
            if(Date==20200915 and i==0)
                buy(1);
            if(Date==20200916 and i==0)
                sell(1);
            if(Date==20200917 and i==0)
                buy(1);
            if(Date==20200918 and i==0)
                sell(1);
        }    
运行结果:

把print一行注释掉:

//print(text(date[i]));

新的运行结果:

只要访问一下date[i],low[i]之类的回溯数据,交易指令、marketposition等全都乱了,为什么?

基础数据都有问题让人怎么用呢???
报告一个bug,barcount
反馈一个会导致BUG的问题
报告一个Tbquant的bug,FileAppend在多品种上运行时,会写两次。
莫名其妙的指标失效情况
Bug!Bug!Bug!Bug!Bug!Bug!Bug!Bug!
关于当日持仓代理的一个小bug反馈
K线图行情界面添加商品的bug
算法代理问题bug
发现程序的一个bug,怎么解

这是因为TB的机制中会对回溯需要的最大bar数进行判断,如果当前bar数不足时,产生的交易信号会被抹掉,这样可以确保交易信号的准确。举个例子,假如策略使用20周期均线,那K线根数不足20根时,所产生的交易信号都会抹掉,因为K线都没有20根,计算出来的均线也没意义,因此产生的交易信号肯定也不能用。

现在再看您的公式出现的问题,就不难理解了。print(text(date[i])); 这句,会让系统认为,公式需要回溯的最大BAR数是BarCount-1,那这样什么信号也产生不了,因为K线根数永远都是不足的