如果不能。我希望分早晚或开盘收盘来订阅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");
上面这段错了。