Comment obtenir les paramètres Open,Low,High,Close dans MQL5 ? - page 5

 
Igor Makanu:

vous pouvez soit classer CNewbar, soit chercher NewBar dans le forum.


Vous avez un appel iTime dans votre classe. On m'a conseillé de l'oublier). D'ailleurs, où est la garantie qu'il ne fait pas le même travail que CopyRates ? Vous l'appelez sur chaque tic. Quoi qu'il en soit, j'appelle CopyRates à chaque tick et le problème est clos.

 
Artyom Trishkin:

Oui, à chaque tic, nous vérifions l'heure :

Et en un mot, c'est comme ça :

j'écris juste sur mes genoux - pour montrer l'idée, pas la précision de l'écriture

Il est inutile de calculer une nouvelle barre si le calcul lui-même implique CopyRates ou son équivalent. Les mêmes dépenses le seront.

Je vais appeler à chaque fois. Oups.

 
Igor Makanu:

vous pouvez soit classer CNewbar, soit chercher NewBar dans le forum.

ZS : tout l'article !https://www.mql5.com/ru/articles/159



OK, les habituels...oups, oups, oups...et pas une seule ligne de code ))))

J'ai cité mon exemple pour montrer qu'il n'est pas toujours pratique (et rarement nécessaire) d'obtenir un tableau de valeurs OHLC consécutives. Dans les problèmes pratiques, il faut généralement obtenir une sélection de valeurs OHLC de différentes barres (les indicateurs ne sont pas pris en compte).

Ok, ne sois pas malade !

Oh, allez. Les personnes grosses sont le plus souvent chaudes. C'est pourquoi vous pouvez également utiliser ces comparaisons. Qui se soucie de savoir si vous avez besoin de l'OHLC... Igor a dit que tu devais utiliser les fractales, alors utilise-les...

 
Реter Konow:

Vous avez un appel iTime dans votre classe. On m'a conseillé de l'oublier). D'ailleurs, où est la garantie qu'il ne fait pas le même travail que CopyRates ? Vous l'appelez sur chaque tic. Quoi qu'il en soit, j'appelle CopyRates à chaque tick et le problème est clos.

C'est plus long que d'appeler CopyTime() ou iTime() une fois par tick.

CopyRates() est appelé uniquement lorsque vous avez besoin d'obtenir toutes les valeurs de la barre en une seule fois - au moment de la définition de la nouvelle barre.

 
Реter Konow:
Il est inutile de calculer une nouvelle barre si le calcul lui-même implique CopyRates ou son équivalent. Les mêmes dépenses le seront.

Je vais appeler à chaque fois. Spas.

Réponse - vous avez tort.

 
Artyom Trishkin:

C'est plus long que d'appeler CopyTime() ou iTime() une fois par tick.

Appelez CopyRates() uniquement lorsque vous avez besoin d'obtenir toutes les valeurs de la barre en une seule fois - au moment de définir une nouvelle barre.

Ok. Il faut donc oublier le réglage permettant d'oublier les fonctions iXXX).

 
Реter Konow:

Ok. Vous devez donc oublier les fonctions iXXX)).

Bien sûr. Tout n'est pas utile comme on le dit. Et je peux dire de telles bêtises :))))

Mais ici - pour des raisons de rapidité : CopyRates() est utile lorsque vous avez besoin d'obtenir plusieurs valeurs d'une barre simultanément (votre cas). Elle est plus lente que CopyTime() ou iTime(), mais si vous appelez CopyOpen(), CopyHigh(), CopyLow() et CopyClose() + (CopyTime() si nécessaire), alors elle sera plus lente que l'appel uniqueCopyRates(), qui renverra toutes les valeurs requises en une seule fois.

Conclusion : à chaque tick nous travaillons avec CopyTime() ou iTime() pour déterminer une nouvelle barre, et au moment de l'apparition de la nouvelle barre nous appelons CopyRates() une fois.

Et vous ne devriez pas prendre en compte les déclarations religieuses, qui ne sont confirmées par rien d'autre que la croyance. Vous pouvez vérifier vous-même ce qui serait le plus rapide pour votre cas de définition d'une nouvelle barre - CopyTime() ou iTime() - fonction récemment implémentée dans MQL5, qui facilite l'écriture de code multiplateforme (il y a un mensonge - puisque MQL4 contient également des fonctions CopyXXX, mais le portage du code MQL4 dans MQL5 est plus facile - vous n'avez pas besoin de fonctions iXXX à refaire)

 
Реter Konow:
Sinon, comment sauriez-vous que l'heure d'ouverture du bar actuel a changé ?
//+------------------------------------------------------------------+
//|                                                       NewBar.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"

MqlDateTime time;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{

   EventSetMillisecondTimer(100);
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   EventKillTimer();   
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{

   
}

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
{
   TimeGMT(time);   
   //TimeLocal(time);

   if(NewMinute())
   {
     Print("Я новая минута");
   }		
}

//####################################################################

//Получить новое время
int zero = 0;
bool NewMinute()
{
  int minute = time.min; //time.sec; time.hour;  time.day; 
  if(zero != minute)
  {    
    zero = minute;
    return(true);
  }
  else return(false); 
}
 
Реter Konow:

Vous avez un appel iTime dans votre classe. On m'a conseillé de l'oublier). D'ailleurs, où est la garantie qu'il ne fasse pas à son tour le même travail que CopyRates ? Vous l'appelez sur chaque tic. Quoi qu'il en soit, j'appelle CopyRates à chaque tick et le problème est clos.

Tu te contentes toujours d'écrire sans essayer de lire ? Je t'ai donné un lien vers un article complet sur le nouveau bar ! Les articles sont vérifiés - vérifiés par des personnes d'une autre compétence que celles qui écrivent constamment sur le forum ;)

ZS : Si vous arrêtez d'écrire et commencez à lire, comme l'article sur mon lien, vous pouvez trouver un autre moyen (SERIES_LASTBAR_DATE ) de ne pas utiliser les iXXX() - je vous ai dit de ne pas les utiliser ;))) - Qui signalerait les bogues et les erreurs, que les développeurs ont publié un site de mauvaise qualité ))))).

 
Igor Makanu:

Tu te contentes toujours d'écrire sans essayer de lire ? Je t'ai donné un lien vers un article complet sur le nouveau bar ! Les articles sont vérifiés - vérifiés par des personnes d'une autre compétence que celles qui écrivent constamment sur le forum ;)

ZS : Si vous arrêtez d'écrire et commencez à lire, comme l'article sur mon lien, vous pouvez trouver un autre moyen ( SERIES_LASTBAR_DATE ) de ne pas utiliser les iXXX() - je vous ai dit de ne pas les utiliser ;))) - qui dirait aux bogues et aux erreurs que les développeurs ont publié de façon bâclée ))))).

Il y avait quelques problèmes avec SERIES_LASTBAR_DATE. On en a discuté ici quelque part il y a longtemps. Peut-être qu'il a été réparé.