Почему не рисуется буфер?

 
Данные в буфере для графика верные (печать подтверждает), но на графике данные не отображаются. В .png файле показано, что данные в буфере LinReg[] верные.
Файлы:
LinReg.mq5  7 kb
Print.png  192 kb
 
pontifix:
Данные в буфере для графика верные (печать подтверждает), но на графике данные не отображаются. В .png файле показано, что данные в буфере LinReg[] верные.
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[]
                )
  {
//---
      //////Линейная регрессия
      DD Par;
      Par = LinPar(period,0);//

      //Отрисовка регрессии
      int j;
      for(j=0;j<period;j++) 
      {
         //LinReg[j] = Line(j, Par.a0, Par.a1);
         double lr = Line(j, Par.a0, Par.a1);
         int k = rates_total-1-period+j;
         LinReg[k] = lr;
         Print("LinReg[",j,"/",k,"] = ",LinReg[k]);
      }
      
      LinReg[period] = EMPTY_VALUE;//гасим линию слева периода
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }

-- примерно так -- не проверял -- возможно корректность расчёта k надо проверить -- но в каком направлении "копать" должно быть понятно

-- по вашей формуле -- данные в LinReg[] пишутся начиная с 0-го бара (с начала истории) -- а текущий бар имеет номер rates_total-1 -- т.е. запись в  LinReg[] надо сместить от начала истории к текущему бару

 
Andrey F. Zelinsky #:

... возможно корректность расчёта k надо проверить ...

да, надо уточнить k:

int k = rates_total-period+j;

также надо проверить корректно ли берёт данные функция Line() -- чтобы не с начала истории

 
Andrey F. Zelinsky #:

да, надо уточнить k:

также надо проверить корректно ли берёт данные функция Line() -- чтобы не с начала истории

Спасибо Андрей, но проблема не в расчётах. Все расчёты ведутся корректно. Данные выверены по точкам и даже с калькулятором. Это иллюстрирует Print всех 60-ти точек значений регрессии внизу под графиком. Проблема в отрисовке буфера LinReg[]. Где то там я накосячил. И это связано только с моей попыткой переписать прогу с mql4 на mql5. Что то в пятом я туплю. Только начал переходить с четвёртого на пятый. Это просто моя первая тестовая программка, которую я набросал для самопроверки и которая с треском провалилась в mql5 :) В mql4 всё работает отлично. В приложении работающий код LinReg.mq4 с картинкой результата в 1.png. А код LinReg.mq5, который я как то криво переделал для mql5, на график ничего не выводит, хотя распечатывает все 60 значений LinReg[] абсолютно точно (см. 0.png).

Файлы:
LinReg.mq4  3 kb
1.png  148 kb
LinReg.mq5  8 kb
0.png  163 kb
 
pontifix #:

Спасибо Андрей, но проблема не в расчётах. Все расчёты ведутся корректно. Данные выверены по точкам и даже с калькулятором. Это иллюстрирует Print всех 60-ти точек значений регрессии внизу под графиком. Проблема в отрисовке буфера LinReg[]. Где то там я накосячил. И это связано только с моей попыткой переписать прогу с mql4 на mql5. Что то в пятом я туплю. Только начал переходить с четвёртого на пятый. Это просто моя первая тестовая программка, которую я набросал для самопроверки и которая с треском провалилась в mql5 :) В mql4 всё работает отлично. В приложении работающий код LinReg.mq4 с картинкой результата в 1.png. А код LinReg.mq5, который я как то криво переделал для mql5, на график ничего не выводит, хотя распечатывает все 60 значений LinReg[] абсолютно точно (см. 0.png).

вы мои исправления в посту выше не учли -- внесите правки, как я расписал -- и проверьте -- должно работать корректно.

проблема не в расчёте -- а в методике определения индекса бара -- в мкл4 нумерация от текущего бара в историю -- в мкл5 от истории до текущего бара

 
Огромное спасибо, Андрей!!! Всё заработало. Ключивая фраза была: "... в мкл5 от истории до текущего бара" !!! Когда я читал методику, то видимо пролистнул и не обратил на эту тонкость внимания, посчитав, что должна быть очевидная приемственность в семействах языков:) Ошибся:) Прошу извинения за мою невнимательность:)
Файлы:
3.png  189 kb
 
pontifix #:
... Ключивая фраза была: "... в мкл5 от истории до текущего бара" !!! Когда я читал методику, то видимо пролистнул и не обратил на эту тонкость внимания, посчитав, что должна быть очевидная приемственность в семействах языков:)

в документации об индексации баров подробно расписано здесь -- https://www.mql5.com/ru/docs/series