Vars
//此处添加变量
global Integer n;
Global Bool subFlag(True); //用来设置开关,避免重复订阅数据
Defs
//此处添加公式函数
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
PrintClear;
}
onready()
{
if (subFlag)
{
SubscribeBar("au2603C1120.SHFE", Frequency(), BeginDateTime());
SubscribeBar("au2603P1120.SHFE", Frequency(), BeginDateTime());
subFlag=false;
}
n=n+1;
print("n:"+text(n));
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
n=n+1;
}
如题,正常情况下,公式的运行顺序应该是oninit(1次)>onready(1次)>onbar;
但是如果在onready里面订阅数据源,则会出现onready重复运行及第一根bar多次运行的现象:
比如上述代码里面,安理来说输出结果应该是“n:1”
但是实际输出结果是:“n:1 换行 n:3”
说明实际运行情况是oninit(1次)>onready(1次)>onbar(2次)>onready(1次)>onbar
是不是程序的bug?望程序员老师及时修正,谢谢

是不是没认真读过函数说明
