Comment obtenir les paramètres Open,Low,High,Close dans MQL5 ? - page 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);
  }
//+------------------------------------------------------------------+

Je me demande pourquoi une barre avec l'indice [rates_total - 1] a toujours des valeurs d'ouverture, de fermeture, de haut et de bas égales ? L'indice open[rates_total - 1] ne correspond-il pas à l'indice 1 dans la série chronologique ? C'est-à-dire que c'est la même chose que Open[1], Close[1],... dans MT4.

Mais peut-être que l'indice [taux_total - 1] correspond à l'indice 0 dans les séries chronologiques ? Cela signifie donc que [rates_total - 1] est la barre actuelle et que, comme elle ne s'est pas encore formée, ses paramètres OCHL sont égaux ?

 
Реter Konow:

Je me demande pourquoi une barre avec l'indice [rates_total - 1] a toujours des valeurs d'ouverture, de fermeture, de haut et de bas égales ? L'indice open[rates_total - 1] ne correspond-il pas à l'indice 1 dans la série chronologique ? C'est-à-dire que c'est la même chose que Open[1], Close[1],... dans MT4.

Mais peut-être que l'indice [rates_total - 1] correspond à l'indice 0 dans la série chronologique ? Cela signifie donc que [rates_total - 1] est la barre actuelle et que, comme elle ne s'est pas encore formée, ses paramètres OCHL sont égaux ?

Par défaut, les indicateurs MQL5 ont l'indexation suivante (par l'exemple de "0" et "rates_total-1")

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

Comme vous pouvez le constater, la barre la plus à droite du graphique contient l'indice "rates_total-1". Mais l'indice "0" correspondra à la barre la plus à gauche du graphique.

 
Vladimir Karputov:

Par défaut, les indicateurs MQL5 ont l'indexation suivante (par l'exemple de "0" et "rates_total-1")

Comme vous pouvez le voir, la barre la plus à droite du graphique comporte l'indice "rates_total-1". L'indice "0" correspondra à la barre la plus à gauche du graphique.

Celui de droite est l'actuel ? Celui qui n'a pas été formé ?

En général, si je comprends bien, rates_total-1 pointe sur la barre actuelle, et comme elle ne s'est pas formée, ses paramètres OHCL dans les timers sont égaux.

 
Реter Konow:
Le plus à droite - c'est celui qui est en cours ? Celui qui n'a pas été formé ?

Regardez n'importe quel graphique - la barre la plus à droite du GUIDE est la barre actuelle, qui est en cours de formation (c'est-à-dire que tous ses prix et son volume peuvent être modifiés à tout moment).

 
Vladimir Karputov:

Regardez n'importe quel graphique - la barre la plus à droite du GUIDE est la barre actuelle, qui est en cours de formation (c'est-à-dire que tous ses prix et son volume peuvent être modifiés à tout moment).

Oui, je comprends. Je n'avais pas réalisé qu'il fallait que toutes les valeurs de la série temporelle soient égales avant d'obtenir un indice de 1. C'est-à-dire qu'elle cesse d'être actuelle.
 
Реter Konow:
Oui, je comprends. J'étais juste surpris que toutes les valeurs soient égales avant d'atteindre l'indice 1 dans la série chronologique. C'est-à-dire qu'elle cesse d'être actuelle.

Quel est l'autre indice ? La barre la plus à droite du graphique dans les indicateurs MQL5 a un indice de "rates_total-1".

 
Vladimir Karputov:

Quel est l'autre indice ? La barre la plus à droite du graphique dans les indicateurs MQL5 a un indice de "rates_total-1".

Vous ne comprenez pas de quoi je parle. rates_total-1 est la barre actuelle. Je le sais. MAIS. LES VALEURS D'OCHL DANS LES SÉRIES TEMPORELLES SONT ÉGALES. Vérifiez le code que j'ai posté. C'est exactement ce que je ne savais pas.
 
Реter Konow:
Vous ne comprenez pas de quoi je parle. rates_total-1 C'est la barre actuelle. Je le sais. MAIS. LES VALEURS D'OCHL DANS LES SÉRIES TEMPORELLES SONT ÉGALES. Vérifiez le code que j'ai posté. C'est exactement ce que je ne savais pas.
Votre code ne prend que les valeurs au moment où la barre s'ouvre.
 
Реter Konow:
Vous ne comprenez pas ce dont je parle. rates_total-1 Il s'agit de la barre actuelle. Je le sais. MAIS. LES VALEURS D'OCHL DANS LES SÉRIES TEMPORELLES SONT ÉGALES. Vérifiez le code que j'ai posté. C'est exactement ce que je ne savais pas.

La barre actuelle (la plus à droite sur le graphique) aura des prix EGAUX au moment où la barre est née - c'est la base : la barre vient de naître et tous les prix sont les mêmes. Avec l'arrivée de nouveaux ticks, les prix de la barre actuelle (la barre la plus à droite dans le graphique) commencent à changer.


J'espère que c'est clair ? Au moment de la naissance de la barre et son OHLC sont égaux.

 
Andrey Barinov:
Votre code ne prend des valeurs que lorsque la barre s'ouvre

Aïe, hâtif, l'homme lui-même aurait dû se rendre compte que ...

Raison: