¿Cómo se obtienen los parámetros Open, Low, High, Close en MQL5? - página 10

 
//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   int q = rates_total;
   static datetime w = 0;
   
   if(w != time[q-1])
    { 
     w = time[q-1];
     Print("-------------------------------------------------------------------------------");
     Print("  time[q-1]  ",time[q-1],"  time[q-2]  ",time[q-2],"  time[q-3]  ",time[q-3],"  time[q-4]  ",time[q-4],"  time[q-5]  ",time[q-5]);
     Print("  open[q-1]  ",open[q-1],"  open[q-2]  ",open[q-2],"  open[q-3]  ",open[q-3],"  open[q-4]  ",open[q-4],"  open[q-5]  ",open[q-5]);
     Print("  high[q-1]  ",high[q-1],"  high[q-2]  ",high[q-2],"  high[q-3]  ",high[q-3],"  high[q-4]  ",high[q-4],"  high[q-5]  ",high[q-5]);
     Print("  low[q-1]  ",low[q-1],"  low[q-2]  ",low[q-2],"  low[q-3]  ",low[q-3],"  low[q-4]  ",low[q-4],"  low[q-5]  ",low[q-5]);
     Print("  close[q-1]  ",close[q-1],"  close[q-2]  ",close[q-2],"  close[q-3]  ",close[q-3],"  close[q-4]  ",close[q-4],"  close[q-5]  ",close[q-5]);
    }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Me pregunto por qué una barra con índice [rates_total - 1] siempre tiene todos los valores de apertura, cierre, alto y bajo iguales? ¿El índice open[rates_total - 1] no corresponde al índice 1 de la serie temporal? Es decir, es lo mismo que Open[1], Close[1],... en MT4.

Aunque, ¿quizás el índice [rates_total - 1] corresponda al índice 0 en las series temporales? Entonces, ¿significa que [rates_total - 1] es la barra actual y, como aún no se ha formado, sus parámetros OCHL son iguales?

 
Реter Konow:

Me pregunto por qué una barra con índice [rates_total - 1] siempre tiene todos los valores de apertura, cierre, alto y bajo iguales? ¿El índice open[rates_total - 1] no corresponde al índice 1 de la serie temporal? Es decir, es lo mismo que Open[1], Close[1],... en MT4.

Aunque, ¿quizás el índice [rates_total - 1] se corresponde con el índice 0 de la serie temporal? Entonces, ¿significa que [rates_total - 1] es la barra actual y, como aún no se ha formado, sus parámetros OCHL son iguales?

Por defecto los indicadores MQL5 tienen la siguiente indexación (por el ejemplo de "0" y "rates_total-1")

/*
   time[0]              -> D'2018.01.02 00:00:00'
   time[rates_total-1]  -> D'2018.12.31 22:00:00'
*/

Como puede ver, la barra más a la derecha del gráfico tiene el índice "rates_total-1". Pero el índice "0" corresponderá a la barra más a la izquierda del gráfico.

 
Vladimir Karputov:

Por defecto, los indicadores MQL5 tienen la siguiente indexación (utilizando "0" y "rates_total-1" como ejemplos)

Como puede ver, la barra más a la derecha del gráfico tiene el índice "rates_total-1". El índice "0" corresponderá a la barra más a la izquierda del gráfico.

El de la derecha, es decir, el actual... ¿El que no se ha formado?

En general, según entiendo, rates_total-1 apunta a la barra actual, y como no se ha formado, sus parámetros OHCL en los temporizadores son iguales.

 
Реter Konow:
El de más a la derecha, es decir, el actual... ¿La que no se ha formado?

Observe cualquier gráfico: la barra más a la derecha de la GUÍA es la barra actual, que está en proceso de formación (es decir, todos sus precios y volumen pueden cambiar en cualquier momento).

 
Vladimir Karputov:

Observe cualquier gráfico: la barra más a la derecha de la GUÍA es la barra actual, que está en proceso de formación (es decir, todos sus precios y volumen pueden cambiar en cualquier momento).

Sí, lo entiendo. Es que no me di cuenta de que tiene todos los valores de la serie temporal iguales antes de obtener un índice de 1. Es decir, deja de ser actual.
 
Реter Konow:
Sí, lo entiendo. Sólo me ha sorprendido que tenga todos los valores iguales antes de obtener el índice 1 en la serie temporal. Es decir, deja de ser actual.

¿Cuál es el otro índice? La barra más a la derecha del gráfico en los indicadores MQL5 tiene un índice de "rates_total-1".

 
Vladimir Karputov:

¿Cuál es el otro índice? La barra más a la derecha del gráfico en los indicadores MQL5 tiene un índice de "rates_total-1".

No entiendes de qué estoy hablando. rates_total-1 es la barra actual. Lo sé. PERO. LOS VALORES DE OCHL EN LAS SERIES TEMPORALES SON IGUALES. Comprueba el código que he publicado. Eso es exactamente lo que no sabía.
 
Реter Konow:
No entiendes de qué estoy hablando. rates_total-1 Esta es la barra actual. Lo sé. PERO. LOS VALORES DE OCHL EN LAS SERIES TEMPORALES SON IGUALES. Comprueba el código que he publicado. Eso es exactamente lo que no sabía.
Su código sólo toma los valores en el momento en que se abre la barra
 
Реter Konow:
Usted no entiende de qué estoy hablando. rates_total-1 Esta es la barra actual. Lo sé. PERO. LOS VALORES DE OCHL EN LAS SERIES TEMPORALES SON IGUALES. Comprueba el código que he publicado. Eso es exactamente lo que no sabía.

La barra actual (la más a la derecha del gráfico) tendrá precios IGUALES en el momento en que la barra nace - esto es lo básico: la barra acaba de nacer y todos los precios son iguales. Con la llegada de nuevos ticks, los precios de la barra actual (la barra más a la derecha del gráfico) comenzarán a cambiar.


Espero que esté claro. En el momento del nacimiento del bar y su OHLC son iguales.

 
Andrey Barinov:
Su código sólo toma valores cuando la barra se abre

Ouch, apresurado, el propio hombre debería haberse dado cuenta de que ...

Razón de la queja: