- 精华
- 0
- 在线时间
- 111 小时
- UID
- 5910
- 积分
- 323
- 帖子
- 36
- 阅读权限
- 50
- 注册时间
- 2009-11-16
- 最后登录
- 2010-2-2
- 精华
- 0
- UID
- 5910
- 积分
- 323
- 帖子
- 36
- 主题
- 10
- 阅读权限
- 50
- 注册时间
- 2009-11-16
- 最后登录
- 2010-2-2
|
我想实现的功能,当日线的DIFF和DEA交叉,再判断30分钟的DIFF和DEA是否交叉,30分钟线交叉后再判断5分钟的DIFF和DEA是否交叉,如果都交叉的话就发出开仓指令!我这个公式是根据NOPAIN老师的MACD多周期共振系统编写的,请大家看一下是否正确!请各位高手们多多指点!谢谢啦!
// 简称: MinsXAverage
// 名称: 1分钟转换N分钟的指数平均
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
Numeric nMinSet(3);
NumericSeries Price(10);
Numeric Length(10);
Vars
NumericSeries MinsBarIndex;
BoolSeries FirstMin(True);
Numeric sFcactor;
NumericSeries XAvgValue;
Begin
If(CurrentBar == 0)
{
FirstMin = True;
}Else
{
FirstMin = FirstMin[1];
If(FirstMin && IntPart(Minute/nMinSet) != IntPart(Minute[CurrentBar]/nMinSet))
{
FirstMin = False;
}
}
If(IntPart(Minute%nMinSet)==0)
{
MinsBarIndex = 1;
}Else
{
MinsBarIndex = MinsBarIndex[1] + 1;
}
sFcactor = 2 / ( Length + 1 );
if (FirstMin)
{
XAvgValue = Price;
}else
{
XAvgValue = XAvgValue[MinsBarIndex] + sFcactor * ( Price - XAvgValue[MinsBarIndex] ) ;
}
Return XAvgValue;
End
// 简称: MACDRS
// 名称: MACD Resonance System
// 类别: 交易指令
// 类型: 多头建仓
// 输出:
//------------------------------------------------------------------------
Params
Numeric FastLength(12);
Numeric SlowLength(26);
Numeric MACDLength(9);
Vars
NumericSeries MACDValue5;
NumericSeries MACDValue30;
NumericSeries MACDValue240;
Numeric AvgMACD5;
Numeric AvgMACD30;
Numeric AvgMACD240;
Numeric MACDDiff5;
Numeric MACDDiff30;
Numeric MACDDiff240;
Bool LongEntryCon;
Bool ShortEntryCon;
Bool LongExitCon;
Bool ShortExitCon;
Begin
MACDValue5 = MinsXAverage(5, Close, FastLength ) - MinsXAverage(5, Close, SlowLength );
AvgMACD5 = MinsXAverage(5,MACDValue5,MACDLength);
MACDDiff5 = MACDValue5 - AvgMACD5;
MACDValue30 = MinsXAverage(30, Close, FastLength ) - MinsXAverage(30, Close, SlowLength );
AvgMACD30 = MinsXAverage(30,MACDValue30,MACDLength);
MACDDiff30 = MACDValue30 - AvgMACD30;
MACDValue240 = MinsXAverage(240, Close, FastLength ) - MinsXAverage(240, Close, SlowLength );
AvgMACD240= MinsXAverage(240,MACDValue240,MACDLength);
MACDDiff240= MACDValue240 - AvgMACD240;
LongEntryCon = MACDDiff240 > 0 && MACDDiff30 > 0 && MACDDiff5 > 0;
ShortEntryCon = MACDDiff240 < 0 && MACDDiff30 < 0 && MACDDiff5 < 0;
LongExitCon = MACDDiff5 < 0;
ShortExitCon = MACDDiff5 > 0;
Commentary("MACDDiff5="+Text(MACDDiff5));
Commentary("MACDDiff30="+Text(MACDDiff30));
Commentary("MACDDiff240="+Text(MACDDiff240));
If(MarketPosition == 0)
{
If(LongEntryCon)
{
Buy(1,NextOpen,True);
}Else if(ShortEntryCon)
{
SellShort(1,NextOpen,True);
}
}Else If(MarketPosition == 1 && LongExitCon)
{
Sell(1,NextOpen,True);
}Else if(MarketPosition == -1 && ShortExitCon)
{
BuyToCover(1,NextOpen,True);
}
If(Time >= 0.1459)
{
Sell(1,Open);
BuyToCover(1,Open);
}
End |
|