又要到报Bug环节:比如计算均线指标时,需要指定周期数Length,至少需要加载Length根Bar才能正确得到均线指标值,否则此时的均线值是错误的值。如果将此均线值用Plot输出到主图上时,TBQ可以自动识别Length并自动判断CurrentBar是否满足大于Length,如果大于才会在主图绘制均线指标,否则主图不会输出均线指标,一定程度上TBQ可以提醒用户检查问题原因。
TBQ3与TBQ不同,完全不识别当前策略中序列变量回溯至少需要多少根Bar,从第1根Bar就开始绘制均线指标。从TBQ3与TBQ不一致的角度上讲,可以认为是一个Bug。
测试代码:品种ag2504,周期1日线
Params
Integer Length(120);
Vars
Numeric MaN;
Plot MaPlt;
Events
OnReady(){
If(BarCount < Length * 7) Alert("数据源样本数不够,最大周期需要加载:" + Text(Length * 7) + "根Bar,现在只加载了"+ Text(BarCount)+"根");
}
OnBar(ArrayRef<Integer> indexs){
MaN = AverageFC(Close, Length * 7);
MaPlt.line("MaN", MaN);
}
这个不是bug ,这个是quant3的“优化”。
现在quant要控制数据样本数量不够时不计算,必须自行控制了