I have a rare error that cant find what is going on.
I have this code:
protected override void OnBarUpdate()
{
dibujarCuatroHoras();
}
private void dibujarCuatroHoras(){
int limiteIzquierdo;
int limiteDerecho;
double maximo = 0;
double minimo = 0;
bool encontre = false;
if(ToTime(Time[0]) == 040000)
{
maximo = High[0];
minimo = Low[0];
limiteDerecho = 0;
for(int x = 0 ; x < 100 && !encontre; x++)
{
if(maximo < High[x]){maximo = High[x];}
if(minimo > Low[x]){minimo = Low[x];}
if(ToTime(Time[x])==000000)
{
encontre = true;
dibujar(x,0,maximo,minimo, Brushes.Blue, Brushes.White);
}
}
}
if(ToTime(Time[0]) == 080000)
{
maximo = High[0];
minimo = Low[0];
limiteDerecho = 0;
for(int x = 0 ; x < 100 && !encontre; x++)
{
if(maximo < High[x]){maximo = High[x];}
if(minimo > Low[x]){minimo = Low[x];}
if(ToTime(Time[x])==040000)
{
encontre = true;
dibujar(x,0,maximo,minimo, Brushes.Blue, Brushes.White);
}
}
}
if(ToTime(Time[0]) == 120000)
{
maximo = High[0];
minimo = Low[0];
limiteDerecho = 0;
for(int x = 0 ; x < 100 && !encontre; x++)
{
if(maximo < High[x]){maximo = High[x];}
if(minimo > Low[x]){minimo = Low[x];}
if(ToTime(Time[x])==080000)
{
encontre = true;
dibujar(x,0,maximo,minimo, Brushes.Blue, Brushes.White);
}
}
}
if(ToTime(Time[0]) == 160000)
{
maximo = High[0];
minimo = Low[0];
limiteDerecho = 0;
for(int x = 0 ; x < 100 && !encontre; x++)
{
if(maximo < High[x]){maximo = High[x];}
if(minimo > Low[x]){minimo = Low[x];}
if(ToTime(Time[x])==120000)
{
encontre = true;
dibujar(x,0,maximo,minimo, Brushes.Blue, Brushes.White);
}
}
}
// if(ToTime(Time[0]) == 200000)
// {
// maximo = High[0];
// minimo = Low[0];
// limiteDerecho = 0;
// for(int x = 0 ; x < 100 && !encontre; x++)
// {
// if(maximo < High[x]){maximo = High[x];}
// if(minimo > Low[x]){minimo = Low[x];}
// if(ToTime(Time[x])==160000)
// {
// encontre = true;
// dibujar(x,0,maximo,minimo, Brushes.Blue, Brushes.White);
// }
// }
// }
if(ToTime(Time[0]) == 000000)
{
maximo = High[0];
minimo = Low[0];
limiteDerecho = 0;
for(int x = 0 ; x < 100 && !encontre; x++)
{
if(maximo < High[x]){maximo = High[x];}
if(minimo > Low[x]){minimo = Low[x];}
if(ToTime(Time[x])==200000)
{
encontre = true;
dibujar(x,0,maximo,minimo, Brushes.Blue, Brushes.White);
}
}
}
}
private void dibujar(int limiteIzquierdo, int limiteDerecho, double maximo, double minimo, SolidColorBrush borde
, SolidColorBrush relleno){
int id = contadorCuadros;
contadorCuadros++;
Draw.Rectangle(this, id.ToString(), true /*IsAutoScale*/, limiteIzquierdo /*startBarsAgo*/,
minimo /*startY*/, limiteDerecho /*endBarsAgo*/,maximo/*endY*/, borde /*Brushes.Blue*/,
relleno /*Brushes.Aqua*/ /*areaBrush*/, 40);
Print(maximo+" - "+ minimo + " LimiteDerecho: " + limiteDerecho+ " Limite Izquierdo: " + limiteIzquierdo);
}
This code works perfectly, but because is commented the block where time range handled is between 200000 and 1600000.
That block throws me an error : You are accessing an index with a value that is invalid.
Is hard to see the error because all blocks are equals and works, the think is whit the range 200000 to 160000.
Please, could you help me?

Comment