请帮忙修改,提示错误

请帮忙修改,124,131行代码提示错误 Params //默认螺纹参数 Numeric XX(0.4); // 收敛系数 Numeric boLength(25); // 短周期 BreakOut Length Numeric fsLength(65); // 长周期 FailSafe Length Numeric TRS(15); //移动幅度 Numeric Fund(20000); Vars Numeric TurtleUnits; // 交易单位 Series<Numeric> DonchianHi; // 唐奇安通道上轨,延后1个Bar Series<Numeric> DonchianLo; // 唐奇安通道下轨,延后1个Bar Series<Numeric> fsDonchianHi; // 唐奇安通道上轨,延后1个Bar,长周期 Series<Numeric> fsDonchianLo; // 唐奇安通道下轨,延后1个Bar,长周期 Series<Bool> SendOrderThisBar(False); // 是否开仓交易 Series<Numeric> Myprice2; Series<Numeric> Myprice3; Series<Numeric> liQKA; Series<Numeric> DliqPoint; Series<Numeric> KliqPoint; Series<Numeric> HighAfterEntry; Series<Numeric> LowAfterEntry; Series<Numeric> barcoutN; Series<Numeric> out_range; Series<Bool> Dcond_outTrs; Series<Bool> Kcond_outTrs; Series<Numeric> HL; Series<Numeric> HLAverage; Series<Numeric> X; Series<Numeric> sumAG; Bool condRHL; Series<Bool> A_condD; Series<Bool> A_condK; Series<Bool> condRHLAverage; Series<Numeric> RHLAverage; Series<Numeric> Lots; Events OnBar(ArrayRef<Integer> indexs) { Lots=Max(1,IntPart(Fund/(O*ContractUnit*BigPointValue*0.1))); If(DliqPoint>0 )PlotNumeric("DliqPoint[1]",DliqPoint[1],DliqPoint[1],red); If(DliqPoint>0 and C[1] > DonchianHi[1] and C[1] < fsDonchianHi[1])PlotNumeric("DliqPoint[1]",DliqPoint[1],DliqPoint[1],Yellow); If(DliqPoint>0 and C[1] >= fsDonchianHi[1] and C[1] >= DonchianHi[1])PlotNumeric("DliqPoint[1]",DliqPoint[1],DliqPoint[1],red); If(BarStatus == 0) { out_range=TRS; } //记录开仓后高低点 If(BarsSinceentry == 0) { HighAfterEntry = High; LowAfterEntry = Low; }else { HighAfterEntry = Min(HighAfterEntry,High); // 空头止损,更新最低的最高价 LowAfterEntry = Max(LowAfterEntry,Low); // 多头止损,更新最高的最低价 } TurtleUnits = IntPart(Lots); // 对小数取整 DonchianHi = HighestFC(C[1],boLength); DonchianLo = LowestFC(C[1],boLength); fsDonchianHi = HighestFC(C[1],fsLength); fsDonchianLo = LowestFC(C[1],fsLength); HL=(DonchianHi+DonchianLo)/2; condRHL=HL<>HL[1]; If(condRHL) { X=X+1; sumAG=sumAG+HL[1]; If(X>2) { HLAverage=sumAG/X; sumAG=0; X=0; } } condRHLAverage=HLAverage[1]<>HLAverage; if(condRHLAverage) { RHLAverage=HLAverage[1]; } A_condD=HLAverage>RHLAverage and RHLAverage>0 and HLAverage>0; A_condK=HLAverage<RHLAverage and RHLAverage>0 and HLAverage>0; PlotNumeric("HLAverage",HLAverage); PlotNumeric("RHLAverage",RHLAverage); //Commentary("SendOrderThisBar="+IIFString(SendOrderThisBar,"True","False")); PlotNumeric("DonchianHi",DonchianHi); PlotNumeric("DonchianLo",DonchianLo); PlotNumeric("fsDonchianHi",fsDonchianHi); PlotNumeric("fsDonchianLo",fsDonchianLo); //Commentary("TurtleUnits"+text(TurtleUnits)); If(MarketPosition == 0) { // 突破开仓 If(C[1] > DonchianHi[1] && TurtleUnits >= 1 and A_condD) { Buy(TurtleUnits,open); SendOrderThisBar = True; out_range=TRS; LowAfterEntry = EntryPrice;//保存多头开仓价格; } If(C[1] < DonchianLo[1] && TurtleUnits >= 1 and A_condK) { SellShort(TurtleUnits,open); SendOrderThisBar = True; out_range=TRS; HighAfterEntry = EntryPrice;//保存空头开仓价格; } } // 长周期突破调节出场参数,变化幅度收敛,保住更多利润 If(MarketPosition <> 0) { Dcond_outTrs=CrossOver(C[1],fsDonchianHi[1]); Commentary("fsDonchianHi="+Text(fsDonchianHi)); If(Dcond_outTrs and SendOrderThisBar==True) { out_range=TRS*XX; SendOrderThisBar=False; } Kcond_outTrs=CrossUnder(C[1],fsDonchianLo[1]); Commentary("fsDonchianLo="+Text(fsDonchianLo)); If(Kcond_outTrs and SendOrderThisBar==True) { out_range=TRS*XX; SendOrderThisBar=False; } } Commentary("CurrentEntries = " + Text(CurrentEntries)); //移动出场 If(MarketPosition == 0) // 自适应参数默认值; { liQKA = 1; barcoutN=0; }Else if(BarsSinceEntry>barcoutN) //当有持仓的情况下,liQKA会随着持仓时间的增加而逐渐减小,即止损止盈幅度乘数的减少。 { liQKA = liQKA - 0.1; liQKA = Max(liQKA,0.3); barcoutN=BarsSinceEntry; } if(MarketPosition>0) { DliqPoint = LowAfterEntry - (Open*out_range/1000)*liQKA; //经过计算,这根吊灯出场线会随着持仓时间的增加变的越来越敏感; } if(MarketPosition<0) { KliqPoint = HighAfterEntry + (Open*out_range/1000)*liQKA; //经过计算,这根吊灯出场线会随着持仓时间的增加变的越来越敏感; } // 画线 Commentary("(Open*out_range/1000)*liQKA"+text((Open*out_range/1000)*liQKA)); Commentary("(Open*TRS/1000)*liQKA"+text((Open*TRS/1000)*liQKA)); //If(KliqPoint[1]>0)PlotNumeric("KliqPoint[1]",KliqPoint[1]); // 持有多单时 If(MarketPosition >0 And BarsSinceEntry >0 And Low <= DliqPoint[1] and DliqPoint[1]>0 and DliqPoint>0 and BarsSinceEntry>0) { Sell(0,Min(Open,DliqPoint[1])); barcoutN=0; DliqPoint=0; } // 持有空单时 If(MarketPosition <0 And BarsSinceEntry >0 And High >= KliqPoint[1] and KliqPoint[1]>0 and KliqPoint>0 and BarsSinceEntry>0) { BuyToCover(0,Max(Open,KliqPoint[1])); KliqPoint=0; barcoutN=0; } }

那是警告,不是错误。警告就是一个提醒,你只要清楚不会出问题就没事。 你的情况,我建议把crossover和crossunder的函数计算放到if结构外面 先提前运行完,不要放到信号判断结构里再运算。 具体原因可以论坛搜搜 序列类型 看专题帖子学习原理