Indicador aparece em branco / as veses veem preenchido (existe limitação de valores mínimos / máximos ?)

 

Ola, boa noite!

O código abaixo é um exemplo que compilando executa a monta um indicador em uma janela separada:

#property indicator_separate_window
#property indicator_buffers 1                 
#property indicator_plots   1                
#property indicator_type1   DRAW_HISTOGRAM    
#property indicator_color1  Silver            
#property indicator_width1  2   

double    valor_resultado_indicador[];

void OnInit() 
{
   SetIndexBuffer(0,valor_resultado_indicador,INDICATOR_DATA);
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
   PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, 12);
   IndicatorSetString(INDICATOR_SHORTNAME, "Teste:");
}

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& spreads[])
{
   int i;
   Print ("Teste");
     for(i=13;i<rates_total ;i++)
           {
            valor_resultado_indicador[i] = 500;
           }
      return(rates_total);

}

 

Propositalmente fixei o valor de retorno do indicador no numero 500 logo ele deveria mostrar todas as barras com o numero 500.

Se alterar para 200, deveria fixar todas as barras nesse valor. Se inserisse um numero negativo, a barra do resultado do indicador tinha que ser negativo.

O problema que simulando / alterando o valor fixo, as vezes o indicador aparece em branco, eu queria saber o motivo e saber como tratar?

 

Atenciosamente,

Daniel 

 
DRAW_HISTOGRAM aceita valores negativos? 
 

print

Boa noite,


Continuando o teste/aprendizado, alterei o código acima para:

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& spreads[])
{
   int i, k;
   i=1;
   k = 0;
     for(i=1;i<rates_total ;i++)
           {
            valor_resultado_indicador[i] = 0;
            //valor_resultado_indicador[i] = close[i];
            if(k==2)
               {
               //valor_resultado_indicador[i] = close[i] * (-1);
               //valor_resultado_indicador[i] = 0;
               valor_resultado_indicador[i] = close[i];
               k=0;
               }
              else
               {
               }
           k = k + 1;
           }
      return(rates_total);

}

 

E o resultado plotado não foi o esperado, conforme a foto acima:

Não poderia cada barra ter o mesmo tamanho. 

Passandoo cursor sobre a barra, o valor indicado de cada um é diferente.

Nota, foi ajustado IndicatorSetInteger(INDICATOR_DIGITS,_Digits+10); 

 

O que fazer para ajustar?