Как рассчитать продолжительность полосы?

Я сделал код для расчета продолжительности полосы ( ConnorsRSI) в MQL5, Но это не работает.

Код 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);
  }

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

Я не идентифицирую ошибку. Как не так?

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);,
Другие вопросы по тегам