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

如果不能。我希望分早晚或开盘收盘来订阅bar,该用什么方法。

即:图层1和图层2,订阅拉开时间差。

运用场景是:换月当日,data.1<>data.2。data1开新  data2平旧

onbarclose和onbaropen功能bug反馈
onbar,onbarOpen,onbarClose的运行机制
onbaropen和onbarclose为什么不执行呢?
请教一下OnBarOpen,OnBar,OnBarClose运动机制
Onbar 和 OnbarClose中的变量是共享的吗
请问Onbaropen和Onbarclose有什么区别?
subscribe_bar能订阅周期为tick的数据吗?
多数据源onbaropen问题
在多周期中,如何约定onbar、onbaropen中的bar是哪个图层的bar?
订阅数据和发单不符

订阅图层必须放在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");

上面这段错了。