编译提示 if(CurrentBar == 0) { AMA = close; 中包含序列函数,可能存在潜在的逻辑错误,怎么改
Params //Series<Numeric> Price(1); //数值型序列值 Numeric EffRatioLength(10); //自适应周期数 Numeric FastAvgLength(2); //短周期数 Numeric SlowAvgLength(30); //长周期数 Numeric n(20); Numeric percentage(0.1); Vars Numeric NetChg(0); Numeric TotChg(0); Numeric EffRatio(0); Numeric ScaledSFSqr(0); Series<Numeric> AMA; Numeric SFDiff; Series<Numeric> Filter; Events OnBar(ArrayRef<Integer> indexs) { if(CurrentBar == 0) { AMA = close; }Else { NetChg = Abs( close - close[EffRatioLength] ); TotChg = Summation( Abs( close - close[1]), EffRatioLength ); EffRatio = IIF(TotChg > 0, NetChg / TotChg, 0); SFDiff = 2 / ( FastAvgLength + 1 ) - 2 / ( SlowAvgLength + 1 ); ScaledSFSqr = Sqr( 2 / ( SlowAvgLength + 1 ) + EffRatio * SFDiff ); AMA = AMA[1] + ScaledSFSqr * ( close - AMA[1] ); } Filter=percentage*standardDev(AMA-AMA[1],n);//过滤器 //入场规则: IF(AMA-lowest(AMA,n)>Filter and MarketPosition<>1) { Buy(0,Max(Open,High[1])); } IF(highest(AMA,n)-AMA<Filter and MarketPosition<>-1) { SellShort(0,Min(Open,Low[1])); } //退出规则: //多头获利了结: if((AMA-AMA[1] < -filter or AMA-AMA[2] < -filter or AMA-AMA[3] < -filter) and MarketPosition==1) //确保做空前,多头仓位已经平仓 { sell(0,Min(Open,Low[1])); } //空头获利了结: if((AMA-AMA[1] > filter or AMA-AMA[2] > filter or AMA-AMA[3] > filter) and MarketPosition==-1) //确保做多前,空头仓位已经平仓 { BuyToCover(0,Max(Open,High[1])); } //画Kline if(MarketPosition==1) //判断是否有持仓 { plotnumeric("open",min(open,close),open,Red); plotnumeric("high",high,high,Red); plotnumeric("low",low,low,Red); plotnumeric("close", max(open,close),close,Red); } if(MarketPosition==-1) //判断是否有持仓 { plotnumeric("open",max(open,close),open,Green); plotnumeric("high",high,high,Green); plotnumeric("low",low,low,Green); plotnumeric("close", min(open,close),close,Green); } PlotNumeric("AMA",AMA); }