设为首页收藏本站

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

求大神帮忙完成下面的代码。 [复制链接]

Rank: 1

精华
0
UID
224164
积分
31
帖子
19
主题
12
阅读权限
10
注册时间
2015-11-30
最后登录
2022-10-20
跳转到指定楼层
1#
发表于 2015-12-16 09:19:03 |只看该作者 |倒序浏览
公式的要求:快慢线在0轴以上,发生一次死叉(有一次回撤)后,再次发生金叉,就进场做多。
快慢线在0轴以下,发生一次金叉(有一次反弹)后,再次发生死叉,进场做空。
下面是不完整的,不知道该如何确定发生的一次死叉。
Params
        Numeric FastLength(12); //12
        Numeric SlowLength(26);//26
        Numeric MACDLength(9);//9
Vars
        NumericSeries MACDValue; 
        Numeric AvgMACD;
        NumericSeries MACDDiff;        
        BoolSeries        condition1;
        BoolSeries        condition2;
        
Begin
        MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;        
        AvgMACD = XAverage(MACDValue,MACDLength);
        MACDDiff = MACDValue - AvgMACD;
        PlotNumeric("MACDValue",MACDValue);
        PlotNumeric("AvgMACD",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

期市新手

TB官方客服

Rank: 1

精华
0
UID
160971
积分
16
帖子
13
主题
1
阅读权限
10
注册时间
2011-1-1
最后登录
2022-10-26
2#
发表于 2015-12-17 14:56:55 |只看该作者
Params
        Numeric FastLength(12);
        Numeric SlowLength(26);
        Numeric MACDLength(9);
Vars
        NumericSeries MACDValue;
        Numeric AvgMACD;
        Numeric MACDDiff;
        BoolSeries Con1;
        BoolSeries Con2;
        BoolSeries Con3;
        BoolSeries Con4;
        BoolSeries Con5;
        BoolSeries Con6;
Begin
        // 集合竞价和小节休息过滤
        If(!CallAuctionFilter()) Return;
       
        MACDValue = XAverage(Close,FastLength ) - XAverage(Close,SlowLength ) ;       
        AvgMACD = XAverage(MACDValue,MACDLength);
        MACDDiff = MACDValue - AvgMACD;

        Con1 = (MACDValue > 0) And (AvgMACD > 0);
        Con2 = CrossOver(MACDValue,AvgMACD);
        Con3 = (MACDValue < 0) And (AvgMACD < 0);
        Con4 = CrossUnder(MACDValue,AvgMACD);
        If(Con1 and Con4)
        {
                Con5 = True;
        }Else If(Con3)
        {
                Con5 = False;
        }
        If(Con2 and Con3)
        {
                Con6 = True;
        }Else If(Con1)
        {
                Con6 = False;
        }
       
        If(MarketPosition != 1 And Con1[1] And Con2[1] and Con5[1])
        {
                Buy(1,Open);
        }
       
        If(MarketPosition != -1 And Con3[1] and Con4[1] and Con6[1])
        {
                SellShort(1,Open);
        }       
       
End

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
213286
积分
168
帖子
56
主题
10
阅读权限
40
注册时间
2015-7-9
最后登录
2020-10-1
3#
发表于 2015-12-20 22:33:40 |只看该作者
垃圾策略,MACD只能用来手工交易判断,程序化完全是垃圾。
比如背离的时候,有的MACDvalue很高,有的却很低;你不能用一个固定的范围或差值去确定背离。判断上涨下跌也一样。

使用道具 举报

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

bottom

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

GMT+8, 2024-4-26 15:56

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部