设为首页收藏本站

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

请教:关于跨周期求MACD值的问题 [复制链接]

Rank: 3Rank: 3

精华
1
UID
1080
积分
230
帖子
33
主题
16
阅读权限
40
注册时间
2008-1-16
最后登录
2010-8-31
跳转到指定楼层
1#
发表于 2008-4-4 00:11:23 |只看该作者 |倒序浏览
思路是在日线图中求周线的MACD值,所列公式如下:
  1. Params
  2.         Numeric FastLength(12);
  3.         Numeric SlowLength(26);
  4.         Numeric MACDLength(9);
  5. Vars
  6.         NumericSeries CC;
  7.         NumericSeries MACDValue;
  8.         Numeric AvgMACD;
  9.         NumericSeries MACDDiff;
  10. Begin
  11.         CC=DataConvert(Close,"day",5,"Close");
  12.         MACDValue = XAverage( CC, 5*FastLength ) - XAverage( CC, 5*SlowLength ) ;       
  13.         AvgMACD = XAverage(MACDValue,MACDLength);
  14.         MACDDiff = MACDValue - AvgMACD;
  15.        
  16.         PlotNumeric("MACD",MACDValue);
  17.         PlotNumeric("MACDAvg",AvgMACD);
  18.         If (MACDDiff >= 0)       
  19.                 PlotNumeric("MACDDiff",MACDDiff,Red);
  20.         Else
  21.                 PlotNumeric("MACDDiff",MACDDiff,Green);
  22.         PlotNumeric("零线",0);          

  23. End
复制代码

此处求的是否是周线图中的MACD的值?或者只是连续五根日线的MACD的值,而并非真实的周线图中的MACD的值?

求答,谢谢!

[ 本帖最后由 x3yc 于 2008-4-4 00:19 编辑 ]

Rank: 3Rank: 3

精华
1
UID
1080
积分
230
帖子
33
主题
16
阅读权限
40
注册时间
2008-1-16
最后登录
2010-8-31
2#
发表于 2008-4-7 11:19:34 |只看该作者
没人解答?
另外如果做一下平滑处理会不会比较接近周线图中的MACD?
我主要用MACDDiff值。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
3#
发表于 2008-4-7 11:22:55 |只看该作者
您上面的程序和直接用1分钟的Close没什么区别,如果想要完全精确的周线的MACD数据,需要自行实现XAverage函数对周线数据的调用。
下贴可以提供一些参考,具体实现比这个还要复杂:
http://www.tradeblazer.net/forum/thread-1996-1-1.html

使用道具 举报

Rank: 3Rank: 3

精华
1
UID
1080
积分
230
帖子
33
主题
16
阅读权限
40
注册时间
2008-1-16
最后登录
2010-8-31
4#
发表于 2008-4-7 11:36:21 |只看该作者
实例部分如下,请参考:
  1. Params       
  2.         Numeric MACDDAY(13);  //MACD平滑日期参数
  3. Vars
  4.         Numeric FastLength(12);
  5.         Numeric SlowLength(26);
  6.         Numeric MACDLength(9);
  7.        
  8.         NumericSeries CC;
  9.         NumericSeries MACDValue;
  10.         Numeric AvgMACD;
  11.         NumericSeries MACDDiff;
  12.         NumericSeries MACDDDD;
  13. Begin
  14.         CC=DataConvert(Close,"day",5,"Close");
  15.         MACDValue = XAverage( CC, 5*FastLength ) - XAverage( CC, 5*SlowLength ) ;       
  16.         AvgMACD = XAverage(MACDValue,MACDLength);
  17.         MACDDDD = MACDValue - AvgMACD;
  18.         MACDDiff = XAverage(MACDDDD,MACDDAY);
  19.         //以上五行是求日线中周MACD值
复制代码

这样求应该可以实现了,但依然存在一个平滑的问题,请管理员能否给个精确的周线的MACD数据的代码?谢谢!

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
5#
发表于 2008-4-7 12:09:00 |只看该作者
等晚上有空我来写

使用道具 举报

Rank: 3Rank: 3

精华
1
UID
1080
积分
230
帖子
33
主题
16
阅读权限
40
注册时间
2008-1-16
最后登录
2010-8-31
6#
发表于 2008-4-7 13:11:50 |只看该作者

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
7#
发表于 2008-4-8 21:26:26 |只看该作者
日线中调用周线MACD数据的代码。

1、新建用户函数WeekXAverage,返回值为数值型,代码如下:
  1. //------------------------------------------------------------------------
  2. // 简称: WeekXAverage
  3. // 名称: 日线转化周线的指数平均
  4. // 类别: 用户函数
  5. // 类型: 用户函数
  6. // 输出: 数值型
  7. //------------------------------------------------------------------------

  8. Params
  9.         NumericSeries Price(10);
  10.         Numeric Length(10);
  11. Vars
  12.         NumericSeries WeeksNo;
  13.         NumericSeries WeekDays;
  14.         BoolSeries FirstWeek(True);
  15.         Numeric sFcactor;
  16.         NumericSeries XAvgValue;
  17. Begin
  18.         If(CurrentBar == 0)
  19.         {
  20.                 FirstWeek = True;
  21.         }Else
  22.         {
  23.                 FirstWeek = FirstWeek[1];
  24.                 If(FirstWeek &&  Weekday==1)
  25.                 {
  26.                         FirstWeek = False;
  27.                 }
  28.         }
  29.        
  30.         WeeksNo = IntPart(DateDiff(19700105,Date)/7);
  31.         If(WeeksNo!=WeeksNo[1])
  32.         {
  33.                 WeekDays = 1;
  34.         }Else
  35.         {
  36.                 WeekDays = WeekDays[1] + 1;
  37.         }

  38.         sFcactor = 2 / ( Length + 1 );
  39.         if (FirstWeek)
  40.         {
  41.                 XAvgValue = Price;
  42.         }else
  43.         {
  44.                 XAvgValue = XAvgValue[WeekDays] + sFcactor * ( Price - XAvgValue[WeekDays] ) ;
  45.         }       
  46.     Return XAvgValue;
  47. End

  48. //------------------------------------------------------------------------
  49. // 编译版本        GS2004.06.12
  50. // 用户版本        2008/04/08 20:23
  51. // 版权所有        nopain
  52. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
  53. //                        每一版本的TrabeBlazer公式修改和重写的权利
  54. //------------------------------------------------------------------------
复制代码

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
8#
发表于 2008-4-8 21:27:58 |只看该作者
2、新建技术指标WeekMACD,代码如下:
  1. //------------------------------------------------------------------------
  2. // 简称: WeekMACD
  3. // 名称: 周线MACD
  4. // 类别: 技术指标
  5. // 类型: 其它类
  6. // 输出:
  7. //------------------------------------------------------------------------

  8. Params
  9.         Numeric FastLength(12);
  10.         Numeric SlowLength(26);
  11.         Numeric MACDLength(9);
  12. Vars
  13.         NumericSeries MACDValue;
  14.         Numeric AvgMACD;
  15.         Numeric MACDDiff;
  16. Begin
  17.         MACDValue = WeekXAverage( Close, FastLength ) - WeekXAverage( Close, SlowLength ) ;       
  18.         AvgMACD = WeekXAverage(MACDValue,MACDLength);
  19.         MACDDiff = MACDValue - AvgMACD;
  20.         PlotNumeric("MACD",MACDValue);
  21.         PlotNumeric("MACDAvg",AvgMACD);
  22.         If (MACDDiff >= 0)       
  23.                 PlotNumeric("MACDDiff",MACDDiff,Red);
  24.         Else
  25.                 PlotNumeric("MACDDiff",MACDDiff,Green);
  26.         PlotNumeric("零线",0);          
  27. End

  28. //------------------------------------------------------------------------
  29. // 编译版本        GS2004.06.12
  30. // 用户版本        2008/04/08 20:20
  31. // 版权所有        nopain
  32. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
  33. //                        每一版本的TrabeBlazer公式修改和重写的权利
  34. //------------------------------------------------------------------------
复制代码

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
9#
发表于 2008-4-8 21:33:19 |只看该作者
3、您可以建一个周线图,插入标准的MACD指标,然后新建一个日线图,插入WeekMACD指标。
为了让两个图的数据完全相等,周线的数据应该要大于120,日线的数据应该要大于(120*5=600)。否则会出现精度误差,这是因为指数平均的最大回溯周期大概是在120左右

使用道具 举报

Rank: 3Rank: 3

精华
1
UID
1080
积分
230
帖子
33
主题
16
阅读权限
40
注册时间
2008-1-16
最后登录
2010-8-31
10#
发表于 2008-4-9 08:57:14 |只看该作者
非常感谢!

使用道具 举报

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

bottom

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

GMT+8, 2024-5-3 21:29

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部