atr止损
老师帮我分析一下中间代码的问题 本来想写一个开仓后止损设为两倍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); } } 麻烦老师帮我解答一下,谢谢!