设为首页收藏本站

 找回密码
 注册
查看: 5436|回复: 6
打印 上一主题 下一主题

新手求教,这是我自己编的MACD金叉死叉交易,求指正 [复制链接]

Rank: 1

精华
0
UID
114866
积分
49
帖子
18
主题
6
阅读权限
10
注册时间
2013-1-15
最后登录
2013-9-13
跳转到指定楼层
1#
发表于 2013-1-16 21:20:36 |只看该作者 |倒序浏览

Params
        Numeric FastLength(12);
        Numeric SlowLength(26);
        Numeric MACDLength(9);
       
Vars
        NumericSeries MACDValue;
        Numeric AvgMACD;
        Numeric MACDDiff;
        Bool Condition1;
        Bool Condition2;
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 = CrossOver(AvgMACD,MACDValue);    //死叉卖出
       
        if (Condition1)
        {
                Buy(1,Open);
        }
        if (Condition2)
        {
                SellShort(1,Open);
        }
       
End

然后我测试时发现金叉死叉还没确定下来正在波动时就给我自动触发买卖
我是否要改为:
Condition1 = CrossOver(MACDValue[1],AvgMACD[1]);     //由前一根K线确认金叉死叉才决定买进卖出
Condition2 = CrossOver(AvgMACD[1],MACDValue[1]);   

这是我自己第一次用这软件,还有哪里需要改进的地方吗?求高手指点

Rank: 7Rank: 7Rank: 7

精华
0
UID
113242
积分
3506
帖子
97
主题
11
阅读权限
80
注册时间
2012-10-31
最后登录
2013-6-4
2#
发表于 2013-1-17 02:01:14 |只看该作者
Params
        Numeric FastLength(12);
        Numeric SlowLength(26);
        Numeric MACDLength(9);
        
Vars
        NumericSeries MACDValue;
        Numeric AvgMACD;
        Numeric MACDDiff;
        BoolSeries Condition1;
        BoolSeries Condition2;
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);    //死叉卖出
        
        if (Condition1[1])
        {
                Buy(1,Open);
        }
        if (Condition2[1])
        {
                SellShort(1,Open);
        }
        
End

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
113242
积分
3506
帖子
97
主题
11
阅读权限
80
注册时间
2012-10-31
最后登录
2013-6-4
3#
发表于 2013-1-17 02:03:51 |只看该作者
你看下这是按照你的意思改的, 【当然写法是按照我的习惯改的,】,,你的写法的确实要改成
Condition1 = CrossOver(MACDValue[1],AvgMACD[1]);     //由前一根K线确认金叉死叉才决定买进卖出
Condition2 = CrossOver(AvgMACD[1],MACDValue[1]);  
  如果不改 ,,你就用到了未来函数了

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
113242
积分
3506
帖子
97
主题
11
阅读权限
80
注册时间
2012-10-31
最后登录
2013-6-4
4#
发表于 2013-1-17 02:05:02 |只看该作者
跟你写的区别在:    BoolSeries Condition1;
                             BoolSeries Condition2;  Condition2 = CrossUnder(MACDValue,AvgMACD);    //死叉卖出
  if (Condition1[1])
   if (Condition2[1])

使用道具 举报

Rank: 1

精华
0
UID
114866
积分
49
帖子
18
主题
6
阅读权限
10
注册时间
2013-1-15
最后登录
2013-9-13
5#
发表于 2013-1-17 12:04:06 |只看该作者
月夜微凉 发表于 2013-1-17 02:05
跟你写的区别在:    BoolSeries Condition1;
                             BoolSeries Condition2;  Con ...

谢谢指点,我还想问问
CrossOver(AvgMACD,MACDValue);
CrossUnder(MACDValue,AvgMACD);
应该不会有区别吧?

比较苦恼是如果改为由上一根K线确定金叉死叉才进场会就滞后了 ,价格没优势,如果把开仓价格上调/下调又怕成交不了

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
113242
积分
3506
帖子
97
主题
11
阅读权限
80
注册时间
2012-10-31
最后登录
2013-6-4
6#
发表于 2013-1-17 23:51:53 |只看该作者
这2个写法表达的意思是一样的,,为什么写的是时候 要【由上一根K线确定金叉死叉才进场会】 。。。因为实时交易的时候会出现 同一根bar   价格快速上涨,MACD出现金叉,,但是后来又收下来了,,这时候MACD金叉又消失了。。。。。我们实时交易看到金叉,,但是历史回测的时候又没有金叉,,,这种情况就无法统计、量化了,,为了好有一个量化的标准所以才取由上一根K线确定金叉死叉才进场。。。

使用道具 举报

Rank: 1

精华
0
UID
114866
积分
49
帖子
18
主题
6
阅读权限
10
注册时间
2013-1-15
最后登录
2013-9-13
7#
发表于 2013-1-18 11:37:02 |只看该作者
月夜微凉 发表于 2013-1-17 23:51
这2个写法表达的意思是一样的,,为什么写的是时候 要【由上一根K线确定金叉死叉才进场会】 。。。因为实时 ...

谢谢指点
看来还是不能那么简单编出策略啊,测试效果太差了

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-11 20:49

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部