MACD多周期共振系统

  1. 系统原理很简单,MACD的柱状线,在1分钟,3分钟,5分钟,15分钟及30分钟都是红柱,即都大于0时,多头开仓。

当1分钟的MACD柱线变绿柱,即小于0时,多头平仓。

  1. 做空的条件类似,收盘平仓。
  2. 在此提供这个系统的目录是为了演示跨周期数据处理的方法,本系统并不是一个完善有效的系统,照此交易,后果自负

代码分为两部分,1个用户函数,1个交易指令。

用户函数:MinsXAverage,代码如下

//------------------------------------------------------------------------

// 简称: 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



//------------------------------------------------------------------------

// 编译版本        GS2004.06.12

// 用户版本        2008/06/20 14:09

// 版权所有        nopain

// 更改声明        TradeBlazer Software保留对TradeBlazer平台

//                        每一版本的TrabeBlazer公式修改和重写的权利

//------------------------------------------------------------------------

交易指令。MACERS,仅适用于1分钟周期

//------------------------------------------------------------------------

// 简称: MACDRS

// 名称: MACD Resonance System

// 类别: 交易指令

// 类型: 多头建仓

// 输出:

//------------------------------------------------------------------------



Params

        Numeric FastLength(12);

        Numeric SlowLength(26);

        Numeric MACDLength(9);

Vars

        NumericSeries MACDValue1; 

        NumericSeries MACDValue3; 

        NumericSeries MACDValue5; 

        NumericSeries MACDValue15; 

        NumericSeries MACDValue30; 

        Numeric AvgMACD1;

        Numeric AvgMACD3;

        Numeric AvgMACD5;

        Numeric AvgMACD15;

        Numeric AvgMACD30;

        Numeric MACDDiff1;

        Numeric MACDDiff3;

        Numeric MACDDiff5;

        Numeric MACDDiff15;

        Numeric MACDDiff30;

        Bool LongEntryCon;

        Bool ShortEntryCon;

        Bool LongExitCon;

        Bool ShortExitCon;

Begin

        MACDValue1 = XAverage( Close, FastLength ) - XAverage( Close, SlowLength );        

        AvgMACD1 = XAverage(MACDValue1,MACDLength);

        MACDDiff1 = MACDValue1 - AvgMACD1;



        MACDValue3 = MinsXAverage(3, Close, FastLength ) - MinsXAverage(3, Close, SlowLength );        

        AvgMACD3 = MinsXAverage(3,MACDValue3,MACDLength);

        MACDDiff3 = MACDValue3 - AvgMACD3;

        

        MACDValue5 = MinsXAverage(5, Close, FastLength ) - MinsXAverage(5, Close, SlowLength );        

        AvgMACD5 = MinsXAverage(5,MACDValue5,MACDLength);

        MACDDiff5 = MACDValue5 - AvgMACD5;

        

        MACDValue15 = MinsXAverage(15, Close, FastLength ) - MinsXAverage(15, Close, SlowLength );        

        AvgMACD15 = MinsXAverage(15,MACDValue15,MACDLength);

        MACDDiff15 = MACDValue15 - AvgMACD15;

        

        MACDValue30 = MinsXAverage(30, Close, FastLength ) - MinsXAverage(30, Close, SlowLength );        

        AvgMACD30 = MinsXAverage(30,MACDValue30,MACDLength);

        MACDDiff30 = MACDValue30 - AvgMACD30;



        LongEntryCon = MACDDiff1 > 0 && MACDDiff3 > 0 && MACDDiff5 > 0 && MACDDiff15 > 0 && MACDDiff30 > 0;

        ShortEntryCon = MACDDiff1  0;

        

        Commentary("MACDDiff1="+Text(MACDDiff1));

        Commentary("MACDDiff3="+Text(MACDDiff3));

        Commentary("MACDDiff5="+Text(MACDDiff5));

        Commentary("MACDDiff15="+Text(MACDDiff15));

        Commentary("MACDDiff30="+Text(MACDDiff30));

        

        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



//------------------------------------------------------------------------

// 编译版本        GS2004.06.12

// 用户版本        2008/06/20 14:47

// 版权所有        nopain

// 更改声明        TradeBlazer Software保留对TradeBlazer平台

//                        每一版本的TrabeBlazer公式修改和重写的权利

//------------------------------------------------------------------------

关键字:程序化交易, TradeBlazer, 跨周期

风险提示及免责条款

市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部