设为首页收藏本站

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

MACD多周期共振系统 [复制链接]

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
跳转到指定楼层
1#
发表于 2008-6-20 16:14:37 |显示全部楼层 |倒序浏览
1、系统原理很简单,MACD的柱状线,在1分钟,3分钟,5分钟,15分钟及30分钟都是红柱,即都大于0时,多头开仓。
当1分钟的MACD柱线变绿柱,即小于0时,多头平仓。
2、做空的条件类似,收盘平仓。
3、在此提供这个系统的目录是为了演示跨周期数据处理的方法,本系统并不是一个完善有效的系统,照此交易,后果自负

代码分为两部分,1个用户函数,1个交易指令。
用户函数:MinsXAverage,代码如下
  1. //------------------------------------------------------------------------
  2. // 简称: MinsXAverage
  3. // 名称: 1分钟转换N分钟的指数平均
  4. // 类别: 用户函数
  5. // 类型: 用户函数
  6. // 输出: 数值型
  7. //------------------------------------------------------------------------

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

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

  48. //------------------------------------------------------------------------
  49. // 编译版本        GS2004.06.12
  50. // 用户版本        2008/06/20 14:09
  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
2#
发表于 2008-6-20 16:16:10 |显示全部楼层
交易指令。MACERS,仅适用于1分钟周期
  1. //------------------------------------------------------------------------
  2. // 简称: MACDRS
  3. // 名称: MACD Resonance System
  4. // 类别: 交易指令
  5. // 类型: 多头建仓
  6. // 输出:
  7. //------------------------------------------------------------------------

  8. Params
  9.         Numeric FastLength(12);
  10.         Numeric SlowLength(26);
  11.         Numeric MACDLength(9);
  12. Vars
  13.         NumericSeries MACDValue1;
  14.         NumericSeries MACDValue3;
  15.         NumericSeries MACDValue5;
  16.         NumericSeries MACDValue15;
  17.         NumericSeries MACDValue30;
  18.         Numeric AvgMACD1;
  19.         Numeric AvgMACD3;
  20.         Numeric AvgMACD5;
  21.         Numeric AvgMACD15;
  22.         Numeric AvgMACD30;
  23.         Numeric MACDDiff1;
  24.         Numeric MACDDiff3;
  25.         Numeric MACDDiff5;
  26.         Numeric MACDDiff15;
  27.         Numeric MACDDiff30;
  28.         Bool LongEntryCon;
  29.         Bool ShortEntryCon;
  30.         Bool LongExitCon;
  31.         Bool ShortExitCon;
  32. Begin
  33.         MACDValue1 = XAverage( Close, FastLength ) - XAverage( Close, SlowLength );       
  34.         AvgMACD1 = XAverage(MACDValue1,MACDLength);
  35.         MACDDiff1 = MACDValue1 - AvgMACD1;

  36.         MACDValue3 = MinsXAverage(3, Close, FastLength ) - MinsXAverage(3, Close, SlowLength );        
  37.         AvgMACD3 = MinsXAverage(3,MACDValue3,MACDLength);
  38.         MACDDiff3 = MACDValue3 - AvgMACD3;
  39.        
  40.         MACDValue5 = MinsXAverage(5, Close, FastLength ) - MinsXAverage(5, Close, SlowLength );        
  41.         AvgMACD5 = MinsXAverage(5,MACDValue5,MACDLength);
  42.         MACDDiff5 = MACDValue5 - AvgMACD5;
  43.        
  44.         MACDValue15 = MinsXAverage(15, Close, FastLength ) - MinsXAverage(15, Close, SlowLength );        
  45.         AvgMACD15 = MinsXAverage(15,MACDValue15,MACDLength);
  46.         MACDDiff15 = MACDValue15 - AvgMACD15;
  47.        
  48.         MACDValue30 = MinsXAverage(30, Close, FastLength ) - MinsXAverage(30, Close, SlowLength );        
  49.         AvgMACD30 = MinsXAverage(30,MACDValue30,MACDLength);
  50.         MACDDiff30 = MACDValue30 - AvgMACD30;

  51.         LongEntryCon = MACDDiff1 > 0 && MACDDiff3 > 0 && MACDDiff5 > 0 && MACDDiff15 > 0 && MACDDiff30 > 0;
  52.         ShortEntryCon = MACDDiff1 < 0 && MACDDiff3 < 0 && MACDDiff5 < 0 && MACDDiff15 < 0 && MACDDiff30 < 0;
  53.        
  54.         LongExitCon = MACDDiff1 < 0;
  55.         ShortExitCon = MACDDiff1 > 0;
  56.        
  57.         Commentary("MACDDiff1="+Text(MACDDiff1));
  58.         Commentary("MACDDiff3="+Text(MACDDiff3));
  59.         Commentary("MACDDiff5="+Text(MACDDiff5));
  60.         Commentary("MACDDiff15="+Text(MACDDiff15));
  61.         Commentary("MACDDiff30="+Text(MACDDiff30));
  62.        
  63.         If(MarketPosition == 0)
  64.         {
  65.                 If(LongEntryCon)
  66.                 {
  67.                         Buy(1,NextOpen,True);
  68.                 }Else if(ShortEntryCon)
  69.                 {
  70.                         SellShort(1,NextOpen,True);
  71.                 }               
  72.         }Else If(MarketPosition == 1 && LongExitCon)
  73.         {
  74.                 Sell(1,NextOpen,True);
  75.         }Else if(MarketPosition == -1 && ShortExitCon)
  76.         {
  77.                 BuyToCover(1,NextOpen,True);
  78.         }
  79.        
  80.         If(Time >= 0.1459)
  81.         {
  82.                 Sell(1,Open);
  83.                 BuyToCover(1,Open);
  84.         }
  85. End

  86. //------------------------------------------------------------------------
  87. // 编译版本        GS2004.06.12
  88. // 用户版本        2008/06/20 14:47
  89. // 版权所有        nopain
  90. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
  91. //                        每一版本的TrabeBlazer公式修改和重写的权利
  92. //------------------------------------------------------------------------
复制代码

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
3#
发表于 2008-6-23 12:31:04 |显示全部楼层
原帖由 b8866 于 2008-6-23 12:24 发表
用户函数:MinsXAverage太难懂了,N周期的均线如何表示呀,能不能发个用户函数,举个例子?


看这里:
http://www.tradeblazer.net/forum/viewthread.php?tid=1996

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
4#
发表于 2008-10-8 21:47:21 |显示全部楼层
MinsXAverage里面是假定传入的参数从第一个开始就是有效的。如果不是这样,算出来的值就有问题了

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
5#
发表于 2008-10-8 22:22:30 |显示全部楼层
不是因为IIF,是因为用到了Close[1]或其它算法,导致前面的几个Bar没有数据。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-18 04:27

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部