onbarclose函数中range问题

我在多周期策略编程中,发现问题。代码如下。运行的时候发现,在短周期图层(例如10秒),每次onbarclose被激活,按照tbq的逻辑range[0:0]部分被执行,但是range[1:1]部分不会执行。但是在交易时段,range[1:1]部分长周期图层(例如2分钟)onbarclose仍被激活执行了。我将这个问题反馈给你们的客服。他们复现了这个情况,花了2个小时告诉我到论坛上请代码老师解决。请问代码是否有问题,如果我想让图层1每2分钟执行一次该如何解决。谢谢

    OnBarClose(ArrayRef<Integer> indexs)
    {
        range[1:1] {
            
            print(symbol() + ":" + text(date) + ", "+ TimeToString(CurrentTime) + ", 长周期计算" );
        }    
        range[0:0] {        
        
            print(symbol() + ":" + text(date) + ", "+ TimeToString(CurrentTime) + ",短周期计算" );    
        }
    }
 

关于Range的问题
ArrayPushBack(myArray,10)为什么不能运行在Range中
关于事件驱动及range的一些问题
Onbar 和 OnbarClose中的变量是共享的吗
range中是否可以调用其他数据源
多周期在OnBarClose内的执行问题
关于OnBarClose()回溯的问题
关于Range语句的问题
关于 OnBarClose
OnBarClose(ArrayRef<Integer> indexs)设置驱动图层问题

    OnBarClose(ArrayRef<Integer> indexs)
    {
        Integer i;
        range[i = 0:dataCount-1] 
        {
           if(ArrayFind(indexs,i))
           {
                //执行操作
                   print(symbol() + ":" + text(date) + ", "+ TimeToString(CurrentTime) + ", 长周期计算" );
           }
        }    
    }这样试一试

我可以试试,但是请问原有的range逻辑只能在onbar事件域里使用吗,如果是那么说明文档里没有介绍。。还有就是range逻辑有什么问题吗,他单独使用在未来编程里面有什么特别需要注意的话,请明示。。我现在很多代码都使用这个函数,这么搞,我都不知道该如何开发了

 

range在onbar里也是同理,不过是tick驱动罢了,1.遇到事件触发,事件下的代码都会运行  2.range只是一个图层循环(在哪个图层运行),如果没有过滤那么就是所有图层都运行,,如果想在特定图层就加过滤,,,两者并没有特别的联系

我想表达的是,如果不过滤。那么在回测的时候表现与实盘的表现不一致。回测的时候不会出现这个情况。我打印数据发现的。希望tb能介绍清楚,否则开发走很多弯路。我可以通过这种方式来重新开发。

您说的情况是说历史回测,哪个图层有变动就会执行单一图层?上面也做出了解答,历史情况不会存在这个问题

客服也想帮您解决,可能发现自己水平不够,所以让您来社区咨询,抱歉哈,onbarclose触发机制,只要触发,onbarclose内都会执行,我觉得不会存在您说的历史情况,只执行小周期,或只执行大周期的图层,您说的实时情况,运行机制就是这样,所以没问题,如果您只想运行触发的图层,您可以过去index's 的参数,加判断条件来执行相应的图层

这个我们要测试看看了

收到,谢谢王老师。等待结果了