开拓者期货期权程序化系统交易论坛

标题: 求大神帮忙完成下面的代码。 [打印本页]

作者: ne_yrh    时间: 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

作者: xiaoma    时间: 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
作者: zzlong99    时间: 2015-12-20 22:33:40

垃圾策略,MACD只能用来手工交易判断,程序化完全是垃圾。
比如背离的时候,有的MACDvalue很高,有的却很低;你不能用一个固定的范围或差值去确定背离。判断上涨下跌也一样。




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2