- 精华
- 0
- 在线时间
- 31 小时
- UID
- 236046
- 积分
- 31
- 帖子
- 14
- 阅读权限
- 10
- 注册时间
- 2016-6-6
- 最后登录
- 2016-8-5
- 精华
- 0
- UID
- 236046
- 积分
- 31
- 帖子
- 14
- 主题
- 7
- 阅读权限
- 10
- 注册时间
- 2016-6-6
- 最后登录
- 2016-8-5
|
Params
Numeric atrmult(4.0);
Numeric length(26);
Numeric stddev(2);
Numeric P(2);
Numeric N(19);
Numeric STOPER(20);
Vars
Numeric Piv(0);
Numeric zl1(0);
Numeric zl2(0);
Numeric zc1(0);
Numeric zc2(0);
Numeric BBtop(0);
Numeric BBBot(0);
NumericSeries HighestAfterEntry;
NumericSeries LowestAfterEntry;
Begin
Piv=(highd(1)+lowd(1)+closed(1))/3;
zl1=2*piv-LowD(1);
zl2=piv+HighD(1)-LowD(1);
zc1=2*piv-HighD(1);
zc2=piv-HighD(1)*LowD(1);
BBTop=Average(close,length)+stddev*StandardDev(close,length,2);
BBBot=Average(close,length)-stddev*StandardDev(close,length,2);
PlotNumeric("zl1",zl1);
PlotNumeric("zc1",zc1);
PlotNumeric("BBTop",BBTop);
PlotNumeric("BBBot",BBBot);
//交易开仓主体
if (close(1)<(zl1+P) And close(1)>(zc1-P))
{
if (CrossOver(close(1),BBBot))
{Buy(1,open) and Commentary("BOLL多");}
if (CrossUnder(close(1),BBTop))
{Sell(1,open)and Commentary("BOLL空");}
}
if (CrossOver(close(1),zl1+p))
{Buy(1,open) and Commentary("突破多");}
if (Crossunder(close(1),zc1-p))
{Sellshort(1,open) and Commentary("突破空");}
If(MarketPosition == 1 And BarsSinceEntry >= 1)
{
if (Crossunder(close(1),zl1-p))
{Sell(1,open) and Commentary("多平1");}
}
If(MarketPosition == -1 And BarsSinceEntry >= 1)
{
if (CrossOver(close(1),zc1+p))
{BuyToCover(1,open) and Commentary("空平1");}
}
//平仓主体
If(BarsSinceentry == 0)
{
HighestAfterEntry = Close;
LowestAfterEntry = Close;
If(MarketPosition <> 0)
{
HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较大值保留到HighestAfterEntry
LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice); // 开仓的Bar,将开仓价和当时的收盘价的较小值保留到LowestAfterEntry
}
}else
{
HighestAfterEntry = Max(HighestAfterEntry,High); // 记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断
LowestAfterEntry = Min(LowestAfterEntry,Low); // 记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断
}
If (MarketPosition == 1 And BarsSinceEntry >= 1)
{
if (Close(1)<(HighestAfterEntry-AvgTrueRange(N)*atrmult))
{Sell(1,open) and Commentary("ATR多平");}
}
If (MarketPosition == -1 And BarsSinceEntry >= 1)
{
if (Close(1)>(LowestAfterEntry+AvgTrueRange(N)*atrmult))
{BuyToCover(1,open) and Commentary("ATR空平") ;}
}
End |
|