动态突破策略,有些代码过不去了,求老师帮忙编译下,万分感谢


Params
    Numeric ceilingAmt(60);// 声明参数ceilingAmt,自适应参数最大值,默认值60
    Numeric floorAmt(30); //声明参数floorAmt,自适应参数最小值,默认值30
    Numeric bolBandTrig(2.00);//声明参数bolBandTrig,布林轨道默认系数,默认值2.00

Vars
    Numeric lookBackDays(20);  //  声明变量lookBackDays,自适应参数,默认值为20; 
    Numeric todayVolatility(0); // 声明变量todayVolatility,最新标准差;
    Numeric yesterDayVolatility(0);//声明变量 yesterDayVolatility,向前推一根BAR的标准差
    Numeric deltaVolatility(0);//声明变量deltaVolatility 波动率;
    NumericSeries buyPoint(0);//声明变量 buyPoint,区间高点;
    NumericSeries sellPoint(0);//声明变量 sellPoint,区间低点;
    NumericSeries longLiqPoint(0); //声明变量 longLiqPoint,多头均线出场线
    NumericSeries shortLiqPoint(0); //声明变量 shortLiqPoint,空头均线出场线
    NumericSeries upBand(0); //声明变量upBand 布林上轨;
    NumericSeries dnBand(0); //声明变量dnBand 布林下轨;
    NumericSeries MidLine(0);//声明变量MidLine 布林中轨 
    NumericSeries Band(0); //声明变量Band,标准差幅度
    BoolSeries BK(False);//声明变量 多头开仓条件
    BoolSeries SK(False); //声明变量 空头开仓条件
    BoolSeries SP(False);//声明变量 多头平仓条件
    BoolSeries BP(False);//声明变量 空头平仓条件
Begin
    todayVolatility = StandardDev(Close,30,1); //最新价在30根BAR线内的标准差;
    yesterDayVolatility = StandardDev(Close[1],30,1);//向前推一根BAR的收盘在30根BAR线内的标准差;
    deltaVolatility = (todayVolatility - yesterDayVolatility)/todayVolatility;//将最新价的标准差与向前一根BAR的收盘价的标准差减,做百分比,即为波动率;
    lookBackDays = lookBackDays * (1 + deltaVolatility);//将波动率deltaVolatility带入到自适应参数的计算中去,得到根据波动率变化的自适应参数;
    lookBackDays = Round(lookBackDays,0); //将自适应参数取正数;
    lookBackDays = Min(lookBackDays,ceilingAmt);//对自适应参数的取值设置最大值,最大不能大于ceilingAmt;
    lookBackDays = Max(lookBackDays,floorAmt);//对自适应参数的取值设置最小值,最小不能小于floorAmt;
    MidLine = Average(Close[1],lookBackDays); //布林中轨线使用自适应参数计算;
    Band = StandardDev(Close,lookBackDays,bolBandTrig);//标准差计算周期使用自适应参数计算;
    upBand = MidLine + bolBandTrig * Band;//计算布林轨道的上轨
    dnBand = MidLine - bolBandTrig * Band;//计算布林轨道的下轨
    buyPoint = Highest(High[1],lookBackDays);//计算自适应参数周期内的高点
    sellPoint = Lowest(Low[1],lookBackDays);//计算自适应参数周期内的低点
    longLiqPoint = Average(Close[1],lookBackDays);//计算自适应参数的多头均线
    shortLiqPoint = Average(Close[1],lookBackDays);//计算自适应参数的空头均线
    BK=CrossOver(high,buyPoint); //开多条件,最新价与区间上沿金叉;
    SK=CrossUnder(Low,sellPoint);//开空条件,最新价与区间下沿死叉;
    SP=CrossUnder(Low,longLiqPoint);//平多条件,最新价与多头均线死叉;
    BP=CrossOver(high,shortLiqPoint);//平空条件,最新价与空头均线金叉;
PlotNumeric(" MidLine", MidLine);
PlotNumeric("upBand",upBand);
PlotNumeric("dnBand",dnBand);
PlotNumeric("buyPoint",buyPoint);
PlotNumeric("sellPoint",sellPoint);
Commentary("lookBackDays"+Text(lookBackDays));
if(H > upBand[1])  //当最新价大于布林轨道上轨同时大于区间上沿开多
{

   If(BK)   
  {
     
     Buy(1,max( buyPoint, Open));

  }
Commentary("多头触发价:"+Text(buyPoint));

}

if(L < dnBand[1]) //当最新价小于布林轨道下轨同时小于区间下沿开空
{

   If(SK)
   {
      SellShort(1,min( sellPoint , Open ));
   }
Commentary("空头触发价:"+Text(sellPoint));

}
if(MarketPosition == 1) //当有多头持仓,同时最新价与多头均线死叉,平多;
{  
   If(SP)
   {
      Sell(1,min( longLiqPoint , Open ));
   }
Commentary("多头退出:"+Text(longLiqPoint));
}


if(MarketPosition == -1) //当有空头持仓,同时最新价与空头均线金叉,平空;

{
   If(BP)   
  {
     BuyToCover(1,max( shortLiqPoint, Open ));
  }
Commentary("空头退出:"+Text(shortLiqPoint));

}


end

评论区
顶部