用开仓价格,加上3倍ATR的止损,麻烦技术老大帮忙写一下,谢谢
以双均线为例,写了个,供您参考下吧。
Params Numeric Len1(5); Numeric Len2(20); Numeric ATRLen(20); Numeric Lots(1);
Vars Series<Numeric> ma1(0,2); Series<Numeric> ma2(0,2); Series<Numeric> ATR(0,2); Series<Numeric> myExtPrc(0,2); Series<Integer> DirFlag(0,2); Events OnBar(ArrayRef<Integer> indexs) { ma1 = AverageFC(Close,Len1); ma2 = AverageFC(Close,Len2); PlotNumeric("ma1",ma1); PlotNumeric("ma2",ma2); ATR = AvgTrueRange(ATRLen); If(MarketPosition<>1 And ma1[1]>ma2[1] And DirFlag<>1) { Buy(Lots,Open); DirFlag = 1; myExtPrc = EntryPrice - ATR*4; //开仓时根据开仓Bar的ATR计算止损价 } If(MarketPosition<>-1 And ma1[1]<ma2[1] And DirFlag<>-1) { SellShort(Lots,Open); DirFlag = -1; myExtPrc = EntryPrice + ATR*4; //开仓时根据开仓Bar的ATR计算止损价 } If(MarketPosition==1 And BarsSinceEntry>0) { If(Low<=myExtPrc) { Sell(0,Min(Open,myExtPrc)); Commentary("多头ATR止损出场!"); } } If(MarketPosition==-1 And BarsSinceEntry>0) { If(High>=myExtPrc) { BuyToCover(0,Max(Open,myExtPrc)); Commentary("空头ATR止损出场!"); } } }
谢谢技术老大
以双均线为例,写了个,供您参考下吧。
Params
Numeric Len1(5);
Numeric Len2(20);
Numeric ATRLen(20);
Numeric Lots(1);
Vars
Series<Numeric> ma1(0,2);
Series<Numeric> ma2(0,2);
Series<Numeric> ATR(0,2);
Series<Numeric> myExtPrc(0,2);
Series<Integer> DirFlag(0,2);
Events
OnBar(ArrayRef<Integer> indexs)
{
ma1 = AverageFC(Close,Len1);
ma2 = AverageFC(Close,Len2);
PlotNumeric("ma1",ma1);
PlotNumeric("ma2",ma2);
ATR = AvgTrueRange(ATRLen);
If(MarketPosition<>1 And ma1[1]>ma2[1] And DirFlag<>1)
{
Buy(Lots,Open);
DirFlag = 1;
myExtPrc = EntryPrice - ATR*4; //开仓时根据开仓Bar的ATR计算止损价
}
If(MarketPosition<>-1 And ma1[1]<ma2[1] And DirFlag<>-1)
{
SellShort(Lots,Open);
DirFlag = -1;
myExtPrc = EntryPrice + ATR*4; //开仓时根据开仓Bar的ATR计算止损价
}
If(MarketPosition==1 And BarsSinceEntry>0)
{
If(Low<=myExtPrc)
{
Sell(0,Min(Open,myExtPrc));
Commentary("多头ATR止损出场!");
}
}
If(MarketPosition==-1 And BarsSinceEntry>0)
{
If(High>=myExtPrc)
{
BuyToCover(0,Max(Open,myExtPrc));
Commentary("空头ATR止损出场!");
}
}
}
谢谢技术老大