Как рассчитать продолжительность полосы?
Я сделал код для расчета продолжительности полосы ( 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 ответ
Я проверил код, и он отлично работает. Пожалуйста, убедитесь, что вы делаете эти вещи:
- Установить индикатор как отдельный индикатор окна:
#property indicator_separate_window
, Определите буферы и графики. Например, вот так:
#property indicator_buffers 1 #property indicator_plots 1 #property indicator_color1 clrRed #property indicator_type1 DRAW_LINE #property indicator_style1 STYLE_SOLID
- Назначить индексный буфер (в
OnInit()
):SetIndexBuffer(0, ExtLineBuffer, INDICATOR_DATA);
,