请教macd金叉死叉问题

初学tb编程,请教macd金叉死叉的问题,我想请教,在使用macd函数过程中,如果我想满足以下条件:我想两个死叉之间的diff值作比较,同时要确保两个死叉中间的diff值和dea值不能跌破0轴,不清楚该怎么写,请指教,万分感谢

Params
    Numeric n1(12);
    Numeric n2(26);
    Numeric FastLength(12);
    Numeric SlowLength(26);
    Numeric AvgLength(9);
    
    
Vars
    Numeric MACDDiff;
    Numeric MACDDEA;
    Numeric MACDValue;
    series<bool> golden(false);
    Series<bool> ending(false);
    series<Numeric> new_h;
    series<Numeric> new_l;
    series<Numeric> tem_new_h;    //金叉过程中临时高点赋值
    Series<Numeric> tem_new_l;    //死叉过程红临时低点赋值
    series<Numeric> new_ex_h;     //新死叉形成记录前一个死叉的高点
    Series<Numeric> new_ex_l;     //新死叉形成记录前一个死叉的低点
    series<Numeric> new_ex_h1;    //新死叉形成记录前两个死叉的高点
    Series<Numeric> new_ex_l1;    //新死叉形成记录前两个死叉的低点
    
    
    Series<Numeric> MACD_h;
    Series<Numeric> MACD_l;
    Series<Numeric> tem_MACD_h;
    Series<Numeric> tem_MACD_l;
    Series<Numeric> MACD_ex_h;
    Series<Numeric> MACD_ex_l;
    Series<Numeric> MACD_ex_h1;
    Series<Numeric> MACD_ex_l1;
    
    series<Numeric> ma1;
    series<numeric> ma2;
    
    


Events
    
    OnBar(ArrayRef<Integer> indexs)
    {
        
        MACDDiff = xAverage( close , FastLength) - XAverage( close , SlowLength) ;
        MACDDEA = XAverage( MACDDiff , AvgLength);
        MACDValue = MACDDiff - MACDDEA ;
        
        golden = CrossOver (MACDDiff, MACDDEA);
        ending = CrossUnder (MACDDiff,MACDDEA); 
        //PlotBool("golden",golden,close);
        
        if (CurrentBar == 0)
        {
            tem_new_h = 0;
            tem_MACD_h = 0;
            tem_new_l = 0;
            tem_MACD_l = 0;
            }
        else 
        {
        tem_new_h = Highest(H[1],NthCon(golden,0));
        tem_MACD_h = Highest(MACDDiff,NthCon(golden,0));
        tem_new_l = Lowest(L[1],NthCon(ending,0));
        tem_MACD_l = Lowest( MACDDiff,NthCon(ending,0));
        //PlotNumeric("tem_new_h",tem_new_h);
        //PlotNumeric("tem_MACD_h",tem_MACD_h);
        //PlotNumeric("tem_new_l",tem_new_l);
        //PlotNumeric("tem_MACD_l",tem_MACD_l);
        
        
        if (ending == True)
         {
             new_h = tem_new_h;
            MACD_h = tem_MACD_h;
           
           //PlotNumeric("new_h",new_h);
         }
        if (golden == True)
          {
          new_l = tem_MACD_l;
          MACD_l = tem_MACD_l;
          
          
          }
        if (new_h <> new_h[1]) 
         {
          new_ex_h = new_h[1];
          new_ex_h1 = new_ex_h[1];
          MACD_ex_h = MACD_h[1];
          MACD_ex_h1 = MACD_ex_h[1];
          //PlotNumeric("MACD_ex_h",MACD_ex_h);
          //PlotNumeric("MACD_ex_h1",MACD_ex_h1);
            }    
        if (new_l <> new_l[1])
          {
          new_ex_l = new_l[1];
          new_ex_l1 = new_ex_l[1];
          MACD_ex_l = MACD_l[1];
          MACD_ex_l1 = MACD_ex_l[1];
          }
          
          
          
          
        }
          
        
        }

评论区
顶部