编译提示 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);
   }

序列类型的问题

这个只是警告,就是可能会计算出错,但是不一定

具体可能出错的原因,以及优化办法,可以在社区搜索 序列类型 相关说明贴看看,视频也有相关专题课