Volume do preço

 

Boa tarde.

Estou tentando fazer um indicador quase parecido com o volume por preço, mas sem aquelas áreas de "poc, vah, val".

Preciso apenas capturar o preço com o maior volume em valor financeiro.

Tentei fazer algo de forma simples, mas está dando o erro "array ou of range", mas no modo que fiz não sei como resolver isso e nem sei se vai funcionar.


Pensei em pegar o volume da posição tick.last e inserir em uma variável com a mesma posição, para depois sim atribuir a uma variável que vai recebendo sempre o maior volume por preço.
#property indicator_buffers 1

//---
double vl[];

//---
int OnInit()
  {
   SetIndexBuffer(0,vl,INDICATOR_DATA);
 
   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 &TickVolume[],
               const long &Volume[],
               const int &Spread[])
  {
   int i;
   MqlTick tick;
   SymbolInfoTick(_Symbol,tick);
   
   if(prev_calculated == 0) i = 1;
   else i = prev_calculated-1;
   while(i < rates_total)
     {
        vl[(int)tick.last] += Volume[(int)tick.last];
     
        i++;
     }
   return(rates_total-1);
  }
Razão: