Discussion de l'article "Le gestionnaire d'événements "New Bar"" - page 3

 
laplacianlab:

Bon article, merci pour le partage ! Tout cela est très utile !

Quoi qu'il en soit, j'ai pris votre fonction isNewBar et elle affiche le message suivant lors de la compilation :"possible loss of data due to type conversion".

J'ai donc changé les types de var de datetime à long de cette façon :

Maintenant, elle compile sans problème et semble fonctionner correctement. Je vous remercie !


Il est probablement plus clair de le changer de cette façon :

   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
 

Dans la première façon de demander une nouvelle ligne de colonne, je ne comprends pas comment le nombre de nouvelles colonnes peut être directement assigné à 1 ;

 //--- Vérifier la présence de nouvelles lignes de colonnes.
   if(m_lastbar_time<newbar_time)       
     { 
      m_new_bars=1;               // Nombre de nouvelles lignes de colonnes
      m_lastbar_time=newbar_time; // Se souvenir de la dernière heure de la barre
      return(true);
     }
   //--- //--- Vérifier la présence de nouvelles lignes de colonnes.
   if(m_lastbar_time<newbar_time)       
     { 
      m_new_bars=1;               // Nombre de nouvelles lignes de colonnes
      m_lastbar_time=newbar_time; // Se souvenir de la dernière heure de la barre
      return(true);
     }
   //---
 

Selon les règles de la modélisation d'objets, il est erroné de l'appeler CIsNewBar.

Voyons, si voiture est une classe, je peux créer/posséder un objet voiture. Mais si ma classe est "ÉUmCarroNovo", on peut avoir ou posséder un "ÉUmCarroNovo".

L'auteur aurait dû l'appeler CNewBarChecker. Quelqu'un pourrait inventer un New Car Checker et le créer (notre classe serait NewCarChecker.

[Supprimé]  
Vous n'utilisez pas le temps, vous utilisez les barres
 
Il y a tellement de variations de code dans l'article, mais en fin de compte il n'est toujours pas clair, quelle fonction est la plus correcte à utiliser sur MT4 pour augmenter au moins un peu la correspondance de ce que le testeur dessine avec le trade. Donnez-moi un indice !
 
Pavel Komarovsky:
Il y a tellement de variations de code dans l'article, mais en fin de compte il n'est toujours pas clair, quelle fonction est la plus correcte à utiliser sur MT4 pour augmenter au moins un peu la correspondance de ce que le testeur dessine avec le trade. Donnez-moi un indice !
datetime counted_bar = 0;

int OnInit()
{
   counted_bar = 0; // si vous voulez que la dernière barre soit analysée au redémarrage
   ...

void OnTick()
{
   // S'il y a une nouvelle barre
   if ( iTime( _Symbol, _Period, 0 ) > counted_bar )
   {
      counted_bar = iTime( _Symbol, _Period, 0 );

      // Analyser les indicateurs
      ...
   }
 
Andrey Khatimlianskii:

Andrey, merci. Dites-moi pourquoi iTime est utilisé maintenant, alors que je me souviens que la plupart des fonctions et des exemples étaient basés sur iBars.

iTime est-il plus précis ?

 
Pavel Komarovsky:

Andrey, merci. Dites-moi pourquoi iTime est utilisé maintenant, alors que je me souviens que la plupart des fonctions et des exemples étaient basés sur iBars.

iTime est-il plus précis ?

Je n'ai jamais utilisé les iBars à cette fin, je ne sais pas.
 
Je me demande pourquoi cet exemple ne peut pas obtenir les données de la série temporelle ? Copy... toujours -1 et Bars() toujours 0. C'est-à-dire qu'il n'y a pas d'accès aux données de la classe.
 

Cet article est tellement bon qu'il est même utilisé dans les cours de programmation MQL5, y compris les commentaires, les collaborations et les corrections de bogues. Félicitations à tous.