2015-10-20 117 views
0

我已經在MQL5中作了一個代碼來計算連勝時間(ConnorsRSI)。但它不起作用。如何計算連勝時間?

的MQL代碼:

///////////////////////////////////////////////////////// 


int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) 
    { 
//----+ 
    //---- check for the presence of bars, sufficient for the calculation 
    if (rates_total < (sdPer - 1) + begin) 
    return(0); 

//---- declaration of local variables 
    int first, bar, i, t; 

//---- calculation of starting index first of the main loop 
    if(prev_calculated==0) // check for the first start of the indicator 
     first=sdPer-1+begin; // start index for all the bars 
    else first=prev_calculated-1; // start index for the new bars 

//---- main loop of the calculation 
    for(bar = first; bar < rates_total - 1; bar++) 
    {  
     t = 0; 
     //---- avaliation loop for the current bar 
     for(i = 0; i < sdPer; i++) 

     if(price[bar] > price[bar - i]) 
     { 
     if(t >= 1) 
      t = t + 1; 
     else t = 1; 
     } 

     else if(price[bar] < price[bar - i]) 
     {  
     if(t <= -1) 
     t = t - 1; 
     else t = -1; 
     } 

     else if(price[bar] == price[bar - i]) 
     { 
     t = 0; 
     } 

//---- set the element of the indicator buffer with the value of SMA we have calculated 
     ExtLineBuffer[bar]=t;// **streak duration** 
    } 
//----+  
    return(rates_total); 
    } 

//////////////////////////////////////////////////////////// 

我不識別錯誤。怎麼了?

+0

我可以識別錯誤。 –

回答

1

我測試了代碼,它工作正常。請確保您正在做這些事情:

  1. 將指標設置爲單獨的窗口指示器:#property indicator_separate_window
  2. 定義緩衝區和圖。例如,像這樣:

    #property indicator_buffers 1 
    #property indicator_plots 1 
    #property indicator_color1 clrRed 
    #property indicator_type1 DRAW_LINE 
    #property indicator_style1 STYLE_SOLID 
    
  3. 分配索引緩衝器(在OnInit()):SetIndexBuffer(0, ExtLineBuffer, INDICATOR_DATA);