Histograma com condição por pontos.

 

boa noite.

Estou tentando criar um histograma que faça as ondas com uma condição por pontos, exemplo, a cada 50 pontos cria uma nova barra do histograma.

Tentei pegar alguns modelos, mas não compreendi o funcionamento de _Points ou Point(), como se aplicaria.

Eu imagino que devo guardar o preço em algum buffer e a partir dele fazer a verificação, mas não consigo criar essa lógica.

Tenho um código simples como exemplo, se puderem dar um exemplo de funcionamento agradeceria muito, não precisa ser nada complexo, apenas como aplicar por pontos, o que precisa ser usado e criado.


#property indicator_buffers 2 
#property indicator_plots 1 
//---
#property indicator_label1 "Histograma" 
#property indicator_type1 DRAW_COLOR_HISTOGRAM 
#property indicator_style1 STYLE_SOLID 
#property indicator_color1 clrAqua,clrRed 
#property indicator_width1 2 

double indBuffer[]; 
double indColor[]; 

int OnInit()
  {
//--- Mapear os buffers do indicador
   SetIndexBuffer(0,indBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,indColor,INDICATOR_COLOR_INDEX);

//--
   ArrayInitialize(indBuffer,EMPTY_VALUE); 
   ArrayInitialize(indColor,EMPTY_VALUE);  
//---
   return(INIT_SUCCEEDED);
  }

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[])
  {

int i;
if(prev_calculated == 0) i = 0;
else i = prev_calculated-1;
  for(i = 0; i < rates_total; i++) 
        {
        if(close[i] > open[i]) //Quero aplicar uma condição extra por pontos
          {
           indBuffer[i] = (double)volume[i]; //Somente depois de suprir a condição por pontos que o buffer receberia o volume.
           indColor[i] = 0;
          }
         else
         {
           indBuffer[i] = (double)volume[i];
           indColor[i] = 1;
         }
      }

   return(rates_total);
  }
Razão: