OnCalculate y ArraySetAsSeries

 
Hola, buenas tardes, tengo una pregunta, si tengo esto: 
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[])
  {
   return(rates_total);
  }

Me grafica igual que:

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[])
  {
   ArraySetAsSeries(open, false);
   ArraySetAsSeries(high, false);
   ArraySetAsSeries(low, false);
   ArraySetAsSeries(close, false);

   return(rates_total);
   }

Mi pregunta: OnCalculate siempre llama de la barra mas antigua hasta la mas reciente?

 
Jhon Michael Antony Florez Roa:
OnCalculate no recorre nada por sí mismo, solo te entrega los arrays.

Lo importante es el orden. Las series de precios suelen venir con la barra 0 como la más reciente. Si usas ArraySetAsSeries(..., false) las pones en orden cronológico (0 = más antigua). Por eso en tu ejemplo ves el mismo resultado; lo que cambia es cómo lees los índices, no cómo "recorre" OnCalculate.

Y un pequeño apunte: cuando compartas código en el foro usa la función de insertar código (Alt+S), así se conserva el formato y es más fácil de leer. Por esta vez hice eso por ti.