- 精华
- 0
- 在线时间
- 113 小时
- UID
- 208212
- 积分
- 2001
- 帖子
- 103
- 阅读权限
- 70
- 注册时间
- 2015-5-2
- 最后登录
- 2019-6-18
- 精华
- 0
- UID
- 208212
- 积分
- 2001
- 帖子
- 103
- 主题
- 24
- 阅读权限
- 70
- 注册时间
- 2015-5-2
- 最后登录
- 2019-6-18
|
发表于 2016-11-5 22:08:32
|显示全部楼层
Params
Numeric FastLength(2,2,30,1);
Numeric SlowLength(15,15,60,1);
Numeric ATRs(4,1,15,0.1); //ATR止损倍数
Numeric ATRLength(22,2,30,1); //ATR周期
Vars
NumericSeries AvgValue1;
NumericSeries AvgValue2;
NumericSeries ATR0;
NumericSeries ATR; //ATR(平均真实波动)
NumericSeries AvgATR;
Numeric MyExitPrice; //平仓价格
NumericSeries HighestAfterEntry; //记录开仓后出现的最高价
NumericSeries LowestAfterEntry; //记录开仓后出现的最低价
Begin
AvgValue1 = xAverage(Close,FastLength);
AvgValue2 = xAverage(Close,SlowLength);
ATR0 = Max(abs(High-Low),abs(Close[1]-High));
ATR = Max(ATR0,abs(Close[1]-Low));
AvgATR = AverageFC(ATR,ATRLength);
PlotNumeric("MA1",AvgValue1);
PlotNumeric("MA2",AvgValue2);
// 集合竞价和小节休息过滤
If(IsCallAuctionTime()) Return;
If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
{
Buy(1,Open);
}
If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])
{
SellShort(1,Open);
}
//PlotNumeric("PL",Portfolio_TotalProfit);
If (BarsSinceEntry == 0) //开仓Bar
{
HighestAfterEntry = High[1];
LowestAfterEntry =Low[1];
}Else //非开仓Bar时进行以下运算
{
//记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断
HighestAfterEntry=Max(HighestAfterEntry,High);
//记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断
LowestAfterEntry=Min(LowestAfterEntry,Low);
}
If (MarketPosition ==1 And BarsSinceEntry >=1) //有多仓的情况
{
If(Low <= LowestAfterEntry-AvgATR*ATRs)
{
MyExitPrice=LowestAfterEntry-AvgATR*ATRs; //止损设置
//如果该Bar开盘价即跳空触发,则用开盘价代替
If (Open < MyExitPrice)
{
MyExitPrice=Open;
}
Sell(0,MyExitPrice);
}
}Else If (MarketPosition ==-1 And BarsSinceEntry >=1) //有空仓的情况
{
If(High >= HighestAfterEntry+AvgATR*ATRs)
{
MyExitPrice=HighestAfterEntry+AvgATR*ATRs; //止损设置
//如果该Bar开盘价即跳空触发,则用开盘价代替
If (Open>MyExitPrice)
{
MyExitPrice=Open;
}
BuyToCover(0,MyExitPrice);
}
}
End |
|