您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

新手求教,这是我自己编的MACD金叉死叉交易,求指正 [开拓者 TB]

  • 咨询内容:
    Params
            Numeric FastLength(12);
            Numeric SlowLength(26);
            Numeric MACDLength(9);
           
    Vars
            NumericSeries MACDValue;
            Numeric AvgMACD;
            Numeric MACDDiff;
            Bool Condition1;
            Bool Condition2;
    Begin
            MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;       
            AvgMACD = XAverage(MACDValue,MACDLength);
            MACDDiff = MACDValue - AvgMACD;
            PlotNumeric("MACD",MACDValue);
            PlotNumeric("MACDAvg",AvgMACD);
            If (MACDDiff >= 0)       
                    PlotNumeric("MACDDiff",MACDDiff,0,Red);
            Else
                    PlotNumeric("MACDDiff",MACDDiff,0,Green);
            PlotNumeric("零线",0);          
           
            Condition1 = CrossOver(MACDValue,AvgMACD);     //金叉买进
            Condition2 = CrossOver(AvgMACD,MACDValue);    //死叉卖出
           
            if (Condition1)
            {
                    Buy(1,Open);
            }
            if (Condition2)
            {
                    SellShort(1,Open);
            }
           
    End

    然后我测试时发现金叉死叉还没确定下来正在波动时就给我自动触发买卖
    我是否要改为:
    Condition1 = CrossOver(MACDValue[1],AvgMACD[1]);     //由前一根K线确认金叉死叉才决定买进卖出
    Condition2 = CrossOver(AvgMACD[1],MACDValue[1]);   

    这是我自己第一次用这软件,还有哪里需要改进的地方吗?求高手指点

     

  • TB技术人员: Params
            Numeric FastLength(12);
            Numeric SlowLength(26);
            Numeric MACDLength(9);
            
    Vars
            NumericSeries MACDValue;
            Numeric AvgMACD;
            Numeric MACDDiff;
            BoolSeries Condition1;
            BoolSeries Condition2;
    Begin
            MACDValue = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;        
            AvgMACD = XAverage(MACDValue,MACDLength);
            MACDDiff = MACDValue - AvgMACD;
            PlotNumeric("MACD",MACDValue);
            PlotNumeric("MACDAvg",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客服: 你看下这是按照你的意思改的, 【当然写法是按照我的习惯改的,】,,你的写法的确实要改成
    Condition1 = CrossOver(MACDValue[1],AvgMACD[1]);     //由前一根K线确认金叉死叉才决定买进卖出
    Condition2 = CrossOver(AvgMACD[1],MACDValue[1]);  
      如果不改 ,,你就用到了未来函数了

     

  • 网友回复: 跟你写的区别在:    BoolSeries Condition1;
                                 BoolSeries Condition2;  Condition2 = CrossUnder(MACDValue,AvgMACD);    //死叉卖出
      if (Condition1[1])
       if (Condition2[1])

     

  • 网友回复:
    月夜微凉 发表于 2013-1-17 02:05
    跟你写的区别在:    BoolSeries Condition1;
                                 BoolSeries Condition2;  Con ...

    谢谢指点,我还想问问
    CrossOver(AvgMACD,MACDValue);
    CrossUnder(MACDValue,AvgMACD);
    应该不会有区别吧?

    比较苦恼是如果改为由上一根K线确定金叉死叉才进场会就滞后了 ,价格没优势,如果把开仓价格上调/下调又怕成交不了

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 262069696  点击在线交流进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容