atr止损
2024-09-12 14:54

老师帮我分析一下中间代码的问题   本来想写一个开仓后止损设为两倍atr止损,空仓时回到收盘价, 但是做出来的图好像跟我想写的不一样

 代码我发在下面

Params

Numeric Length1(6);

Numeric Length2(13);

Numeric Length3(24);

Numeric Length4(52);

Numeric AtrParam(26);

Numeric Lots(1);

Vars

   Series<Numeric> Atr1;

   Series<Numeric> ema1;

  Series<Numeric>  ema2;

   Series<Numeric> ema3;

   Series<Numeric> ema4;

  Series<Numeric> stoplineloss2;

   Series<Numeric> stoplineloss1;

Events

OnBar(ArrayRef<Integer> indexs)

{

Range[0:DataSourceSize() - 1]

{

ema1=XAverage(Close, Length1);

ema2=XAverage(Close, Length2);

ema3=XAverage(Close, Length3);

ema4=XAverage(Close, Length4);

Atr1=Average(TrueRange,AtrParam);

   if(MarketPosition==0&&BarsSinceEntry==0)

{

stoplineloss1=close;

stoplineloss2=close;

}

if(MarketPosition<>0)

{

stoplineloss1=Highest(Close[1]-2*atr1[1],26);

stoplineloss2=lowest(Close[1]+2*atr1[1],26);

}

Else

{

stoplineloss1=Highest(Close[1]-2*atr1[1],26);

stoplineloss2=lowest(Close[1]+2*atr1[1],26);

}

If(MarketPosition == 0&&open[1]>=ema1[1]&&open[1]>=ema2[1]&&open[1]>=ema3[1]&&close[1]<=ema1[1]&&close[1]<=ema2[1]&&close[1]<=ema3[1])

{

SellShort(Lots, open);

}

If(MarketPosition == 0&&open[1]<=ema1[1]&&open[1]<=ema2[1]&&open[1]<=ema3[1]&&close[1]>=ema1[1]&&close[1]>=ema2[1]&&close[1]>=ema3[1])

{

Buy(Lots, Open);

}

PlotNumeric(Atrloss,stoplineloss1,0,red);

PlotNumeric(Atrloss2,stoplineloss2,0,Green);

if(MarketPosition>0&&close[1]<stoplineloss1[1])

{

Sell(0, Open);

}

If(MarketPosition < 0&&close[1]>stoplineloss2[1])

{

BuyToCover(0, open);

}

}

data-href=

麻烦老师帮我解答一下,谢谢!

评论区
vitobest0831
查看更多
顶部