Как просто отобразить заранее известные данные в своем индикаторе?

 

Как просто нарисовать гистограмму по заранее известным данным? Например, есть массив arr и надо нарисовать столбики гистограммы длиной равной значению элементов массива. Начиная с настоящего(с 0 бара) в прошлое. Т.е. arr[0] на 0-баре, arr[1] на 1 баре и т.д. 

#property indicator_separate_window
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  Blue
#property indicator_width1  1
#property indicator_label1  "My Data"
#property indicator_buffers 1
#property indicator_plots   1

double         buffer[];
int OnInit()
  {
      SetIndexBuffer(0, buffer ,INDICATOR_DATA);
      int arr[5] = {1, 2, 3, 4, 5}; // надо при старте построить гистограмму по массиву 
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
 return(rates_total);
  }
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   
  }


 

 
olegeskevich:

Как просто нарисовать гистограмму по заранее известным данным? Например, есть массив arr и надо нарисовать столбики гистограммы длиной равной значению элементов массива. Начиная с настоящего(с 0 бара) в прошлое. Т.е. arr[0] на 0-баре, arr[1] на 1 баре и т.д. 


 

В OnCalculate() заполняйте индикаторный буфер.

 
Решил. В OnCalculate() индикаторный  буфер заполнял, но ни чего всё равно не отображалось, т.к. заполнялось "не с того конца". Надо было установить buffer[] как таймсерию. 
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   ArraySetAsSeries(buffer, true); //так надо было 
   buffer[0] = 1.0;
   buffer[1] = 2.0;
   buffer[2] = 3.0;   
 return(rates_total);
  }