Discussion de l'article "Migration de MQL4 vers MQL5" - page 5

 

Pourquoi pas OrderMagicNumber() ? Merci de votre compréhension.

 
song_song:

Pourquoi pas OrderMagicNumber() ? Merci de votre compréhension.

Voir ORDER_MAGIC
 

iBarShift() est facile à utiliser mais iBarShiftMQL4() est assez complexe. Et ainsi de suite...

 

Pourquoi les deux méthodes "TickValue() et SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)" renvoient-elles toujours "0" ?

 

Bonjour, Rosh :

Je suis très heureux que vous ayez dit que : "J'ai l'intention de développer l'émulateur MQL4, qui vous permettra d'exécuter vos programmes MQL4 dans le nouveau terminal client MetaTrader 5".

Je ne suis pas un bon concepteur de programmes mais un trader. MQL5 est trop difficile pour moi.

J'attends votre émulateur MQL4. TKS un million !

Meilleurs voeux pour vous.

[Supprimé]  

J'ai trouvé une erreur

Si une seule fenêtre graphique est ouverte. Alors l'ID de cette fenêtre est = -1

int WindowHandleMQL4(string symbol,
                     int tf)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   long currChart,prevChart=ChartFirst();
   int i=0,limit=100;
   while(i<limit)
     {
      currChart=ChartNext(prevChart);
      if(currChart<0) break; 
      if(ChartSymbol(currChart)==symbol
         && ChartPeriod(currChart)==timeframe)
         return((int)currChart);
      prevChart=currChart;
      i++;
     }
   return(0);
  }

-

int WindowHandleMQL4(string symbol,
                     int tf)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   long currChart,prevChart=ChartFirst();
   int i=0,limit=100;
   while(i<limit)
     {
      currChart=ChartNext(prevChart);
        
      if( currChart<0 && currChart != -1) break;
        
      if(ChartSymbol(currChart)==symbol
        && ChartPeriod(currChart)==timeframe)
         
         return((int)currChart);
      prevChart=currChart;
      i++;
     }
   return(0);
  }
 

J'ai passé une demi-journée à déboguer une logique et j'ai découvert que la priorité de && et || est différente entre MQL4 (|| en premier) et MQL5 (&& en premier). Ainsi, lors de la migration de MQL4 vers MQL5, assurez-vous de rechercher toutes les expressions de comparaison.

Migrating from MQL4 to MQL5
  • 2010.05.17
  • Sergey Pavlov
  • www.mql5.com
This article is a quick guide to MQL4 language functions, it will help you to migrate your programs from MQL4 to MQL5. For each MQL4 function (except trading functions) the description and MQL5 implementation are presented, it allows you to reduce the conversion time significantly. For convenience, the MQL4 functions are divided into groups, similar to MQL4 Reference.
 
williamwong:

J'ai passé une demi-journée à déboguer une logique et j'ai découvert que la priorité de && et || est différente entre MQL4 (|| en premier) et MQL5 (&& en premier). Ainsi, lors de la migration de MQL4 vers MQL5, assurez-vous de rechercher toutes les expressions de comparaison.

Vous avez raison. Voir Règles de préséance:

Chaque groupe d'opérations de la table a la même priorité. Plus la priorité des opérations est élevée, plus la position du groupe dans la table est élevée. Les règles de préséance déterminent le regroupement des opérations et des opérandes.

Attention : La priorité des opérations dans le langage MQL5 correspond à la priorité adoptée en C++, et diffère de la priorité donnée dans le langage MQL4.

[Supprimé]  
FinGeR:

J'ai trouvé une erreur

Si une seule fenêtre graphique est ouverte. Alors l'ID de cette fenêtre est = -1

-

Je me suis trompé, c'est vrai :)

int WindowHandleMQL4(string symbol,
                     int tf)
  {
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   long currChart,prevChart=ChartFirst();
   int i=0,limit=100;
   while(i<limit)
     {
      
         currChart=ChartNext(prevChart);
      if(i==0)currChart=prevChart; // Wenn nur ein Chartfenster offen ist
  
      if( currChart<0) break;
        
      if(ChartSymbol(currChart)==symbol
        && ChartPeriod(currChart)==timeframe)
        
         return((int)currChart);
      prevChart=currChart;
      i++;
     }
   return(0);
  }
 

Bonjour


Je serais heureux de savoir si toutes ces fonctions ont été validées, je n'ai pas réussi à faire fonctionner la fonction "CopyBufferMQL4".

à faire fonctionner la fonction "CopyBufferMQL4".


Je vous remercie.


Noel