- 精华
- 0
- 在线时间
- 6 小时
- UID
- 209424
- 积分
- 5
- 帖子
- 3
- 阅读权限
- 10
- 注册时间
- 2015-5-20
- 最后登录
- 2017-1-5
- 精华
- 0
- UID
- 209424
- 积分
- 5
- 帖子
- 3
- 主题
- 2
- 阅读权限
- 10
- 注册时间
- 2015-5-20
- 最后登录
- 2017-1-5
|
Params
Numeric MALength(10); //均线值
Numeric ATRLength(10); //ATR的值
Numeric ProtectStopATRMulti(0.5); //保护性止损的ATR乘数
Numeric TrailStopATRMulti(2.5); //跟踪止损的ATR乘数
Vars
NumericSeries MA(0); //均线
NumericSeries ATR(0); //ATR
NumericSeries SupportLine(-9999999); //支撑线
NumericSeries ResistanceLine(9999999); //阻力线
BoolSeries CrossConL(False); //均线金叉标识
BoolSeries CrossConS(False); //均线死叉标识
BoolSeries FlagForL(False); //收盘价与均线交叉的状态记录L
BoolSeries FlagForS(False); //收盘价与均线交叉的状态记录S
NumericSeries EntryPriceL(0); //开仓入场价
NumericSeries HighAfterEntry; //持仓期间最高点的记录
NumericSeries ProtectStopL; //基于ATR的保护性止损
Numeric TrailStopL; //基于ATR的跟踪止损
NumericSeries MP; //MarketPosition状态记录
Begin
// 集合竞价和小节休息过滤
If(!CallAuctionFilter()) Return;
//系统设置
//均线与ATR计算
MA = AverageFC(C,MALength);
ATR = AvgTrueRange(ATRLength);
//判别多空市况
CrossConL == CrossOver(C,MA);
CrossConS == CrossUnder(C,MA);
If( CrossConL ==True )
{
CrossConS = False;
FlagForL = True;
FlagForS = False;
SupportLine = -9999999;
}
If( CrossConS == True )
{
CrossConL = False;
FlagForL = False;
FlagForS = True;
ResistanceLine = 9999999;
}
//系统入场
//当均线上移、上根K线的收盘价格上穿至少2条K线前形成的压力线后, 在本根K线开盘价做多
If( MarketPosition == 0 and FlagForL ==True and HIGH[1]<ResistanceLine and HIGH>ResistanceLine and MA>MA[1] And Vol > 0 )
{
Buy(0,0);
//EntryPriceL = Open;
//基于ATR的保护性止损
ProtectStopL = Low[1] - ProtectStopATRMulti * ATR[1];
}
//更新支撑与阻力线
If(FlagForL == True)
{
if( High[1]>HIGH[2] )
{
ResistanceLine=HIGH[1];
}
}
//PlotNumeric("ResistanceLine",ResistanceLine);
//PlotNumeric("SupportLine",SupportLine);
//系统出场
If(BarsSinceEntry == 0)
HighAfterEntry = High;
Else
HighAfterEntry = Max(HighAfterEntry[1],High);
//基于ATR的跟踪止损
TrailStopL = HighAfterEntry[1] - TrailStopATRMulti * ATR[1];
If(MarketPosition == 1 and mp[1] == 1 And Vol > 0)
{
//基于ATR的保护性止损
if(Low <= ProtectStopL[1] and ProtectStopL[1] >= TrailStopL)
{
Sell(0,Min(Open, ProtectStopL[1]));
}
//基于ATR的跟踪止损
Else if(Low <=TrailStopL)
{
Sell(0,Min(Open, TrailStopL));
}
}
//PlotNumeric("ProtectStopL",ProtectStopL);
//PlotNumeric("TrailStopL",TrailStopL);
MP = MarketPosition;
End
|
|