困惑中!onbaropen 和 onbarclose 不能订阅 BAR数据?

如果不能。我希望分早晚或开盘收盘来订阅bar,该用什么方法。即:图层1和图层2,订阅拉开时间差。运用场景是:换月当日,data.1<>data.2。data1开新 data2平旧

订阅图层必须放在oninit里因为所有公式运行的顺序都是先有数据,再跑事件域你现在已经事件域跑起来了,突然又要加数据,那整个单元只好重新restart执行一遍。有没有可能死循环很难说。最好按照建议,只在oninit里订阅图层

回复:已搞定😁没错,正如老师所言。会不停增加图层。电脑都卡了。 不过,一番鼓捣,解决了。至少现在能正常运行了。加上次数限制就行了 //每日一次执行,当日开盘刷新 OnBarOpen(ArrayRef<Integer> indexs) { if(i<1) { CurrentContract = MainSymbol; SubscribeBar(CurrentContract, Data0.Frequency, Data0.BeginDateTime, 0, 0); i=i+1; } // 从数据库读取换月标记HasRoll = GetTBProfileString("Global", "HasRoll") == "True"; }我确实需要在 onbaropen 和 onbarclose 订阅 BAR,拉开二个图层的订阅时间,并且每天刷新,所以在oninit无法实现每天刷新。 或是在onbar订阅,那不如这个省事。并且也得加次数限制。onbar中控制时间到分秒,也挺麻烦的,得跨时间周期调取。

回复:HasRoll = GetTBProfileString("Global", "HasRoll");上面这段错了。