Come posso ottenere i parametri Open,Low,High,Close in MQL5? - pagina 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);
  }
//+------------------------------------------------------------------+

Mi chiedo perché una barra con indice [rates_total - 1] ha sempre tutti i valori open, close, high, low uguali? L'indice open[rates_total - 1] non corrisponde all'indice 1 nella serie temporale? Cioè, è lo stesso di Open[1], Close[1],... in MT4.

Anche se forse l'indice [rates_total - 1] corrisponde all'indice 0 nella serie temporale? Allora significa che [rates_total - 1] è la barra attuale e poiché non si è ancora formata, i suoi parametri OCHL sono uguali?

 
Реter Konow:

Mi chiedo perché una barra con indice [rates_total - 1] ha sempre tutti i valori open, close, high, low uguali? L'indice open[rates_total - 1] non corrisponde all'indice 1 nella serie temporale? Cioè, è lo stesso di Open[1], Close[1],... in MT4.

Anche se forse l'indice [rates_total - 1] corrisponde all'indice 0 nella serie temporale? Allora significa che [rates_total - 1] è la barra attuale e poiché non si è ancora formata, i suoi parametri OCHL sono uguali?

Di default gli indicatori MQL5 hanno la seguente indicizzazione (per esempio "0" e "rates_total-1")

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

Come potete vedere la barra più a destra del grafico ha l'indice "rates_total-1". Ma l'indice "0" corrisponderà alla barra più a sinistra del grafico.

 
Vladimir Karputov:

Di default gli indicatori MQL5 hanno la seguente indicizzazione (usando "0" e "rates_total-1" come esempi)

Come potete vedere, la barra più a destra del grafico ha l'indice "rates_total-1". L'indice "0" corrisponderà alla barra più a sinistra del grafico.

Quello a destra è quello attuale? Quello che non si è formato?

In generale, per come la vedo io, rates_total-1 punta alla barra attuale, e dato che non si è formata, i suoi parametri OHCL nei timer sono uguali.

 
Реter Konow:
Quello più a destra - è quello attuale? Quello che non si è formato?

Guardate qualsiasi grafico - la barra più a destra sulla GUIDA è la barra attuale, che è in fase di formazione (cioè tutti i suoi prezzi e volumi possono essere cambiati in qualsiasi momento).

 
Vladimir Karputov:

Guardate qualsiasi grafico - la barra più a destra sulla GUIDA è la barra attuale, che è in fase di formazione (cioè tutti i suoi prezzi e volumi possono essere cambiati in qualsiasi momento).

Sì, lo capisco. Solo che non mi sono reso conto che ha tutti i valori della serie temporale uguali prima di ottenere un indice di 1. Cioè, smette di essere attuale.
 
Реter Konow:
Sì, lo capisco. Ero solo sorpreso dal fatto che ha tutti i valori uguali prima di ottenere l'indice 1 nella serie temporale. Cioè, smette di essere attuale.

Qual è l'altro indice? La barra più a destra del grafico negli indicatori MQL5 ha un indice di "rates_total-1".

 
Vladimir Karputov:

Qual è l'altro indice? La barra più a destra del grafico negli indicatori MQL5 ha un indice di "rates_total-1".

Lei non capisce di cosa sto parlando. rates_total-1 è la barra corrente. Lo so. MA. I VALORI DI OCHL NELLE SERIE TEMPORALI SONO UGUALI. Controlla il codice che ho postato. Questo è esattamente quello che non sapevo.
 
Реter Konow:
Lei non capisce di cosa sto parlando. tassi_totale-1 QUESTA è la barra corrente. Lo so. MA. I VALORI DI OCHL NELLE SERIE TEMPORALI SONO UGUALI. Controlla il codice che ho postato. Questo è esattamente quello che non sapevo.
Il tuo codice prende solo i valori nel momento in cui la barra si apre
 
Реter Konow:
Lei non capisce di cosa sto parlando. rates_total-1 QUESTA è la barra corrente. Lo so. MA. I VALORI DI OCHL NELLE SERIE TEMPORALI SONO UGUALI. Controlla il codice che ho postato. Questo è esattamente quello che non sapevo.

La barra attuale (la più a destra del grafico) avrà prezzi UGUALI al momento in cui la barra è nata - questa è la base: la barra è appena nata e tutti i prezzi sono uguali. Con l'arrivo di nuovi tick i prezzi della barra corrente (la barra più a destra nel grafico) inizieranno a cambiare.


Spero che sia chiaro? Al momento della nascita della barra e il suo OHLC sono uguali.

 
Andrey Barinov:
Il tuo codice prende valori solo quando la barra si apre

Ahi, frettoloso, l'uomo stesso avrebbe dovuto rendersi conto che ...

Motivazione: