Problema no indicador Customizado

 

Boa noite.

Estou tentando fazer um indicador que pinte candles com a seguinte condição.

Se a maxima do candle atual for maior que a dos ultimos dois candles e o seu fechamento for menor que o fechamento do ultimo candle. plotar a cor vermelha nessa barra.

o script roda sem erro, porém ao coloca-lo no gráfico não exibe corretamente a plotagem. Se alguem puder me ajudar.

Segue o script.


#property indicator_chart_window

#property indicator_buffers 5

#property indicator_plots   1


#property indicator_label1  "Preço de fechamento de compra"

#property indicator_type1   DRAW_COLOR_CANDLES

#property indicator_style1  STYLE_SOLID

#property indicator_color1  clrRed



double OpenBuffer[];

double HighBuffer[];

double LowBuffer[];

double CloseBuffer[];

double Colors[];



int OnInit()

  {

   SetIndexBuffer(0,OpenBuffer,INDICATOR_DATA);

   SetIndexBuffer(1,HighBuffer,INDICATOR_DATA);

   SetIndexBuffer(2,LowBuffer,INDICATOR_DATA);

   SetIndexBuffer(3,CloseBuffer,INDICATOR_DATA);

   SetIndexBuffer(4,Colors,INDICATOR_COLOR_INDEX);


//-----

  

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

  {

   for(int i=1; i<rates_total;i++)

     {

      if(high[i]>high[i-1] && high[i-1]>high[i-2] && close[i]<close[i-1])

        {

         OpenBuffer[i]=open[i];

         HighBuffer[i]=high[i];

         LowBuffer[i]=low[i];

         CloseBuffer[i]=close[i];

         Colors[i]=0;

        }

      

     


      

      else

        {

         OpenBuffer[i]=0;

         HighBuffer[i]=0;

         LowBuffer[i]=0;

         CloseBuffer[i]=0;

        

     

        }

      


     }


   return(rates_total);

  }