策略代码编译错误提示,应该怎么修改
2022-12-13 14:22

/------------------------------------------------------------------------
// 简称: AdapAvgDualMa
// 名称: 卡夫曼自适应移动均线交易系统
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
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);
   }

//------------------------------------------------------------------------
// 编译版本    2022-11-09 153812
// 版权所有    A18819453712
// 更改声明    TradeBlazer Software保留对TradeBlazer平台
// 每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

评论区
A188****3712

2022-12-13 16:15
顶部