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

 

Bonne journée et bonne humeur à tous !

Je me demande si ce code

bool IsNewBar()
  {
   static datetime TimeOld;
   datetime TimeNew[1];
   CopyTime(_Symbol,PERIOD_CURRENT,0,1,TimeNew);
   if(TimeNew[0]!=TimeOld)
     {
      TimeOld=TimeNew[0];
      return(true);
     }
   return(false);
  }

fonctionnera-t-il ? Je l'ai trouvé sur le site Web de MQL5 il y a longtemps et je ne me souviens pas de qui je l'ai copié.

Cordialement, Vladimir.

 
MrBrooklin #:

Bonne journée et bonne humeur à tous !

Je me demande si un code comme celui-ci :

fonctionnera-t-il ? Je l'ai trouvé sur le site MQL5 il y a longtemps et je ne me souviens plus de qui l'a copié.

Cordialement, Vladimir.

Au fait, j'utilise également ce code et il fonctionne très bien, mais il est un peu plus large, il peut être utilisé pour n'importe quelle TF !

bool isNewBar(string INST,int K, ENUM_TIMEFRAMES timeFrame)
  {
//----
   bool res=false;               // variable du résultat de l'analyse 
   int  i=0;                     // numéro de cellule du tableau old_Times[] 
   datetime new_Time[1];         // heure de la nouvelle barre

   switch(K)
     {
      case 0:  i= 0; break;
      case 1:  i= 1; break;
      case 2:  i= 2; break;
      case 3:  i= 3; break;
      case 4:  i= 4; break;
      case 5:  i= 5; break;
      case 6: i= 6; break;
      case 7: i= 7; break;
      case 8: i= 8; break;
      case 9: i= 9; break;
      case 10: i=10; break;
      case 11:  i=11; break;
      case 12:  i=12; break;
      case 13:  i=13; break;
     }
   // copie l'heure de la dernière barre dans la cellule new_Time[0] 
   int copied=CopyTime(INST,timeFrame,0,1,new_Time);
   
   if(copied>0) // tout va bien. données copiées
      {
      if(old_Times[i]!=new_Time[0])       // si l'ancien temps de barre n'est pas égal au nouveau temps de barre
         {
         if(old_Times[i]!=0) res=true;    // s'il ne s'agit pas de la première exécution, alors true = nouvelle barre
         old_Times[i]=new_Time[0];        // se souvenir de l'heure du bar 
         }
      }      
//----
   return(res);
  }
 
switch(K)
     {
      case 0:  i= 0; break;
      case 1:  i= 1; break;
      case 2:  i= 2; break;
      case 3:  i= 3; break;
      case 4:  i= 4; break;
      case 5:  i= 5; break;
      case 6: i= 6; break;
      case 7: i= 7; break;
      case 8: i= 8; break;
      case 9: i= 9; break;
      case 10: i=10; break;
      case 11:  i=11; break;
      case 12:  i=12; break;
      case 13:  i=13; break;
     }

Wow.)

 
Dmitry Fedoseev #:

Wow.)

Qui est dans K ? Je crois que j'ai tout regardé.

Comparaison des tableaux

J'ai été déçu par la nouvelle barre, pas de coïncidence des trades, pour une raison que je ne comprends pas, il n'y a pas d'impression, c'est à dire pas de déclenchement ou de serieslastbar ou juste un décalage dans le temps, j'ai un ping élevé (140), peut être que c'est la raison.

J'ai essayé de nombreuses variantes de newbar, partout il y avait un bégaiement, testé sur 3 terminaux sur un ordinateur.

J'ai supprimé newbar et tous les terminaux ont échangé sur le serveur 1in1 à 100% pendant plusieurs jours.

 
Fast235 #:

Qui est dans K ? Je crois que j'ai tout regardé.

comparaison des tableaux

Je suis déçu par la nouvelle barre, pas de coïncidence de deals, pour des raisons que je ne comprends pas, il n'y a pas d'impression, c'est à dire pas de déclenchement ou de serieslastbar ou juste un décalage dans le temps, j'ai un ping élevé (140), peut être que c'est la raison.

Dans les paramètres K.

Car avec cette fonction il n'y a pas de deuxième tentative en cas d'erreur sur un ordre.

 

et le trade ne se fait pas dans OnTick, mais par OnChartEvent(spy), et dans l'implémentation la plus rapide possible, seulement par id, le reste n'est pas transféré

7 symboles, le passage d'un symbole sur un grand nombre de conditions et de comptes, dans la session américaine, 0.5-0.7% ryzen 3700x

essayé même une nouvelle barre à travers une nouvelle barre de l'indicateur, aussi diverger les transactions, 5 normal et puis dans l'un, puis dans l'autre bégaie.

 
Je l'ai éliminé complètement, de toute façon l'algorithme regarde la dernière barre, et dans ce cas il y a même un avantage, si la transaction est annulée, elle n'ira nulle part dans les limites de l'écart et de la limitation de la "déviation".
 
Mihail Marchukajtes #:

Au fait, j'utilise aussi ce code et il fonctionne très bien, sauf qu'il est un peu plus large, mais vous pouvez l'utiliser pour n'importe quel TF !

Merci, Mikhail, je vais l'ajouter à ma bibliothèque de fonctions.

Cordialement, Vladimir.

 
Armen Shahinyan #:

Je n'ai pas de méthode plus simple que celle-ci.
suit l'heure d'ouverture de la barre actuelle et les compare à chaque tic-tac.


Supprimez la première fonction du code. Et la vie s'améliorera.

 

En général, deux circonstances sont intéressantes :

1. Tout le monde a été banni pour une raison ou une autre.

2. Une nouvelle barre est toujours différente dans le temps de la précédente. N'importe quand, car elle va toujours de gauche à droite. Prenez n'importe quel moment. Si elle ne coïncide pas avec la même barre précédente, alors la barre est nouvelle.