序列数组排序不能通过编译
各位老师,下面序列数组排序这几行(红色部分)不能通过编译是何原因?Params Integer TOP(4);//排序前几名 Numeric LOTS(1);//下单数量 Numeric MP(1);//滑点设置 Vars Series<Numeric> ZD(0);//涨幅 Numeric i; Numeric j; Numeric K; Series<Array<Numeric>> ArrayZD;//数据源涨幅数组 Series<Array<Numeric>> ArrayZDind;//数据源索引 Series<Array<Numeric>> ArrayH;//开盘第一根K线最高价 Series<Array<Numeric>> ArrayL;//开盘第一根K线最低价 bool BuyCon;//开多条件 bool SellCon;//开空条件Events OnInit() { Range[0:DataCount-1] { AddDataFlag(Enum_Data_RolloverBackWard());//设置后复权 AddDataFlag(Enum_Data_RolloverRealPrice());//是否映射真实价格 AddDataFlag(Enum_Data_AutoSwapPosition());//设置自动换仓 AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); // 设置忽略换仓信号计算 SetSlippage(Enum_Rate_PointPerHand,MP); //设置滑点-跳/手 SetOrderPriceOffset(1); //设置委托价为叫买/卖价偏移1跳 SetOrderMap2MainSymbol(); //设置委托映射到主力 SetInitCapital(1000000); //设置初始资金为100万 } } OnBar(ArrayRef<Integer> indexs) { If(Time>=0.0905 AND Time<0.0910)//开盘5分钟后计算前5分钟涨幅 { Range[0:DataCount-1] { ZD=100*((C[1]-C[2])/C[2]); //Commentary(\"涨幅=\"+Text(ZD)); } for i=0 to datasourcesize-1//把需要排序的指标值写入数组 { ArrayZDind[0][i]=i; ArrayZD[0][i]=data[i].ZD; ArrayH[0][i]=Data[i].H; ArrayL[0][i]=Data[i].L; } } Na1Sort2(ArrayZD,ArrayZDind,0,(datasourcesize-1),False);//按照指标值对品种进行从大到小排序 Na1Sort2(ArrayZD,ArrayH,0,(datasourcesize-1),False); Na1Sort2(ArrayZD,ArrayL,0,(datasourcesize-1),False); /*for i=0 to TOP-1 { Commentary(\"ArrayZD[i]=\"+Text(ArrayZD[0][i])); Commentary(\"ArrayZDind[[i]=\"+Text(ArrayZDind[0][i])); }*/ for i=0 to GetArraySize(ArrayZD)-1//把排序筛选后的品种图层按照开仓信号筛选开仓操作 { //==========================================================开仓条件 j=ArrayZDind[0][i]; BuyCon = i<=TOP-1 AND data[J].C[1]>data[J].OPEN[1] AND data[J].OPEN[1]==data[J].L[1]; SellCon = i>=DataSourceSize()-TOP-1 AND data[J].C[1]<data[J].OPEN[1] AND data[J].OPEN[1]==data[J].H[1]; If(data[J].MarketPosition<1 && BuyCon and Time>=0.090500 and Time<0.091000) { data[J].Buy(Lots,Open); } If(data[J].MarketPosition>-1 && SellCon and Time>=0.090500 and Time<0.091000) { data[J].SellShort(Lots,Open); } } IF(Time>=0.145000 AND Time<=0.150000) { For K=0 to DataSourceSize-1 { If(Data[K].MarketPosition==1) { data[K].Sell(lots,Open); } } } IF(Time>=0.145000 AND Time<=0.150000) { For K=0 to DataSourceSize()-1 { If(Data[K].MarketPosition==-1) { data[K].BuyToCover(lots,Open); } } } }