Array out of range - Indicador

 

Estou tentando implementar no meu indicador a função de mostrar o tamanho do candle anterior. Pra isso eu estou usando:

for(int i=0;i<rates_total;i++)
  {
   ObjectCreate(0,"Tamanho",OBJ_TEXT,0,time[i],low[i]);
   ObjectSetString(0,"Tamanho",OBJPROP_TEXT,TamanhoCandleString);
   ObjectSetInteger(0,"Tamanho",OBJPROP_COLOR,clrWhite);
   ObjectMove(0,"Tamanho",0,time[i],low[i]);
  }

Porém dessa forma o Texto fica abaixo da minima atual, eu gostaria de deixar na minima anterior, eu tentei da seguinte forma:

for(int i=0;i<rates_total;i++)
  {
   ObjectCreate(0,"Tamanho",OBJ_TEXT,0,time[i],low[i-1]);
   ObjectSetString(0,"Tamanho",OBJPROP_TEXT,TamanhoCandleString);
   ObjectSetInteger(0,"Tamanho",OBJPROP_COLOR,clrWhite);
   ObjectMove(0,"Tamanho",0,time[i],low[i-1]);
  }

E então ele me retorna esse erro:

Não entendi o motivo do array out of range, já que em rates_total é percorrido todas as barras.

 
HENRIQUE ARAUJO DOS SANTOS:

Estou tentando implementar no meu indicador a função de mostrar o tamanho do candle anterior. Pra isso eu estou usando:

Porém dessa forma o Texto fica abaixo da minima atual, eu gostaria de deixar na minima anterior, eu tentei da seguinte forma:

E então ele me retorna esse erro:

Não entendi o motivo do array out of range, já que em rates_total é percorrido todas as barras.

Boa noite,

Veja que em i=0, [i-1]= -1, daí o problema no array.

Boa sorte!

 
HENRIQUE ARAUJO DOS SANTOS:

Estou tentando implementar no meu indicador a função de mostrar o tamanho do candle anterior. Pra isso eu estou usando:

Porém dessa forma o Texto fica abaixo da minima atual, eu gostaria de deixar na minima anterior, eu tentei da seguinte forma:

E então ele me retorna esse erro:

Não entendi o motivo do array out of range, já que em rates_total é percorrido todas as barras.

Se vc pretende chamar "i-1", JAMAIS começe seu loop com i=0...

Faz sentido?

;)

 
Obrigado pelas Respostas! Não me atentei a esse simples detalhe lógico. 
 
   if(prev_calculated < 1) {
      i = 0;
   } else {
      i = prev_calculated - 1;
   }

   while(i < rates_total && !IsStopped()) { ... }

Prefiro usar esse template padrão nos códigos

Em vez de chamar diretamente a posição anterior do array, por que não armazena esse valor [i-1] em uma variável e a sobreponha no final de cada execução?

 
Genial, e interessante tbm usar ele com um painel...
 
essoal.. eu tenho um robô na base do RSI. Mas ele funciona apenas no timeframe M1,  TENHO O CODIGO FONTE, gostaria de pedir uma dica de como mudar para M5.... Poderei também te dar o robô
 
38222551:
essoal.. eu tenho um robô na base do RSI. Mas ele funciona apenas no timeframe M1,  TENHO O CODIGO FONTE, gostaria de pedir uma dica de como mudar para M5.... Poderei também te dar o robô

PARE de postar em lugares errados do Fórum!

Se não te responderam da primeira vez, não vai ser aqui...

E, você não quer dica, você quer alguém que faça isso de graça pra você.

Seja, em primeiro lugar, honesto com você mesmo. Do contrário ninguém irá ajudar.

Razão: