- 精华
- 0
- 在线时间
- 2 小时
- UID
- 222437
- 积分
- 23
- 帖子
- 18
- 阅读权限
- 10
- 注册时间
- 2015-11-3
- 最后登录
- 2016-1-5
- 精华
- 0
- UID
- 222437
- 积分
- 23
- 帖子
- 18
- 主题
- 5
- 阅读权限
- 10
- 注册时间
- 2015-11-3
- 最后登录
- 2016-1-5
|
Params
Numeric teLength(16); // 离市周期 Trailing Exit Length,在15分钟上用16表达为4小时K线的最低或最高价
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Vars
NumericSeries MACDValue;
NumericSeries AvgMACD;
Numeric MACDDiff;
Numeric ExitHighestPrice; // 离市时判断需要的N周期最高价
Numeric ExitLowestPrice; // 离市时判断需要的N周期最低价
BoolSeries Condition1;
BoolSeries Condition2;
NumericSeries duo;
NumericSeries kong;
NumericSeries yid;
NumericSeries yik;
Begin
MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;
AvgMACD = XAverage(MACDValue,MACDLength);
MACDDiff = MACDValue - AvgMACD;
PlotNumeric("MACD",MACDValue);
PlotNumeric("MACDAvg",AvgMACD);
If (MACDDiff >= 0)
PlotNumeric("MACDDiff",MACDDiff,0,Red);
Else
PlotNumeric("MACDDiff",MACDDiff,0,Green);
PlotNumeric("零线",0);
Condition1 = CrossOver(MACDValue,AvgMACD); //金叉买进
Condition2 = CrossUnder(MACDValue,AvgMACD); //死叉卖出
ExitLowestPrice = LowestFC(Low[1],teLength);
ExitHighestPrice = HighestFC(High[1],teLength);
If(MarketPosition!=0)
{
If(Condition1[1] && AvgMACD[1]<0 ) // 0线以下金叉开多
{
Buy(1,Open);
duo=ExitLowestPrice-50;
yid=(open-duo)*2+Open;
}Else If(Condition2[1] && AvgMACD[1]>0 ) //0线以上死叉开空
{
SellShort(1,Open);
kong=ExitHighestPrice+50;
yik=Open-(kong-Open)*2;
}
}
If(MarketPosition==1)
{
If(Open>=yid)
{
Sell(0,Open);
}Else
{
If(open<=duo)
{
Sell(0,Open);
}
}
}
If(MarketPosition==-1)
{
If(open<=yik)
{
BuyToCover(0,Open);
}Else
{
If(open>=kong)
{
BuyToCover(0,open);
}
}
}
End
这一段代码中,为什么 有marketposition!=0这个条件,它就不开仓,去掉marketposition!=0就可以正常开仓。 |
|