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