多图层用for语句循环交易提示信号闪烁

这样子固定下来就不会闪烁,请问这是怎么了??? 简化代码: //------------------------------------------------------------------------ // 简称: DualMA // 名称: 双均线交易系统 // 类别: 公式应用 // 类型: 内建应用 //------------------------------------------------------------------------ Params Numeric FastLength(5);// 短期指数平均线参数 Numeric SlowLength(20);// 长期指数平均线参数 Numeric length(20); Vars Array<Numeric> AvgValue1; Array<Numeric> AvgValue2; Array<Numeric> arr; Array<Integer> id; Array<String> symb; Numeric i; Events OnBar(ArrayRef<Integer> indexs) { //---------计算各个品种的斜率并存入数组---------- For i=0 To DataSourceSize-1 { arr[i] = data[i].close[1]-data[i].close[10]; //将每一个品种,存入一个数组当中。 id[i]= i; //将品种数据源号,存入数组。这两个数组,用于冒泡排序。 symb[i] = Data[i].SymbolName; } Na1Sort2(arr, id, 0, DataSourceSize-1, False);//一维数组排序带下标 Numeric i; Range[i = 0:datasourcesize-1] { ArrayInsert(data[i].AvgValue1,0,AverageFC(data[i].Close,FastLength)); ArrayInsert(data[i].AvgValue2,0,AverageFC(data[i].Close,SlowLength)); } For i=0 to DataSourceSize-1 { Commentary("品种:"+data[i].SymbolName+",id[0]:"+Text(id[0])); Commentary("MA1:"+text(data[i].AvgValue1[0])); Commentary("MA2:"+text(data[i].AvgValue2[0])); If(i==id[0]) { data[i].buy(0,data[i].o); } } } //------------------------------------------------------------------------ // 编译版本 GS2010.12.08 // 版权所有 TradeBlazer Software 2003-2025 // 更改声明 TradeBlazer Software保留对TradeBlazer平 // 台每一版本的TradeBlazer公式修改和重写的权利 //------------------------------------------------------------------------

信号闪烁的原因就是判断条件会随着盘中数据变动发生变化 所以id[1]如果会发生变化,那就可能产生信号闪烁 所以疑问是什么?