起始bar数和回溯bar数

请问一下多个数据源时起始bar数和最大回溯bar数是否可以分别设置?ONINIT中用range对每个数据源的起始bar数量和回溯bar数量分别设置可以不?下面代码最大回溯bar出现错误。 OnInit() { formula_params=[42,57,42,58,48,45,39,66,48,32,59,66,48,80,81,43,63,46,60,72,45,48,40,51,42]; Integer i = 0; Range[i=0:DataCount-1] { //=========数据源相关设置============== AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权 AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格 AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓 SetBeginBarMaxCount(formula_params[i]+1); //设置最大起始bar数 SetBackBarMaxCount(formula_params[i]+1); //设置最大回溯bar数 //=========交易相关设置============== SetInitCapital(10000000); //设置初始资金为1000万 } }

没有问题 检查你的字符吧

回复:我测试增减数据源回测结果变化很大,并且指标线成锯齿状,后来我把最大回溯bar数改为100,指标线锯齿状消失,结果按常规判断也是正确,我怀疑最大回溯bar数 都是按数组的最后一个元素来设定的。您看一下中间那个的指标线成锯齿状。 Params Vars Numeric i; Global Array<Integer> formula_params; Series<numeric> avgout(0); //均线1 Series<numeric> myvolav(0); Series<numeric> leprice(0); Series<numeric> seprice(0); Series<numeric> sigma(0); Events OnInit() { SubscribeBar("cu888.SHFE","1d",20100104,0,Enum_Data_ActivePeriod); SubscribeBar("T9888.CFFEX","1D",20150320,0,Enum_Data_ActivePeriod); SubscribeBar("sn888.SHFE","1D",20150327,0,Enum_Data_ActivePeriod); formula_params=[42,81,43]; Integer i = 0; Range[i=0:DataCount-1] { //=========数据源相关设置============== AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权 AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格 AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓 SetBeginBarMaxCount(formula_params[i]+1); //设置最大起始bar数为10 SetBackBarMaxCount(formula_params[i]+1); //设置最大回溯bar数为10 //=========交易相关设置============== SetInitCapital(10000000); //设置初始资金为100万 } } OnBar(ArrayRef<Integer> indexs) { Integer i = 0; Range[i=0:DataSourceSize() - 1] { //均线指标计算 + Avgout = Average(close,formula_params[i]); PlotNumeric( "Avgout",Avgout); sigma = StandardDev(close,formula_params[i],2); //标准差 (StandardDev( close,length)*2) leprice=avgout+sigma; //上轨道 均线+标准差 seprice= avgout-sigma; //下轨道 均线-标准差 PlotNumeric("leprice",leprice); PlotNumeric("seprice",seprice); } }