Diskussion zum Artikel "Übersetzung von MQL4 in MQL5" - Seite 5

 

Wie wäre es mit OrderMagicNumber()? Danke

 
song_song:

Wie wäre es mit OrderMagicNumber()? Danke

Siehe ORDER_MAGIC
 

iBarShift() ist einfach zu verwenden, aber iBarShiftMQL4() ist ziemlich komplex. Und so weiter...

 

Warum geben sowohl "TickValue() als auch SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)" immer "0" zurück?

 

Hallo, Rosh:

Ich bin sehr dankbar, dass Sie gesagt haben, dass:" Ich habe Pläne, den MQL4-Emulator zu entwickeln, der es Ihnen ermöglichen wird, Ihre MQL4-Programme im neuen MetaTrader 5-Client-Terminal auszuführen."

Ich bin kein guter Programmdesigner, sondern ein Händler. MQL5 ist zu schwierig für mich.

Ich warte auf Ihren MQL4-Emulator. TKS eine Million!

Beste Wünsche für Sie.

[Gelöscht]  

Ich habe einen Fehler gefunden

Wenn nur ein Diagrammfenster geöffnet ist. Dann ist die ID dieses Fensters von = -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);
  }
 

Achten Sie auch auf die Vorrangigkeit. Ich habe einen halben Tag mit dem Debuggen einer Logik verbracht und festgestellt, dass die Vorrangigkeit von && und || zwischen MQL4 (|| zuerst) und MQL5 (&& zuerst) unterschiedlich ist. Wenn Sie also von MQL4 zu MQL5 migrieren, stellen Sie sicher, dass Sie alle Vergleichsausdrücke durchsuchen.

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:

Achten Sie auch auf die Rangfolge. Ich habe einen halben Tag mit der Fehlersuche in einer Logik verbracht und festgestellt, dass die Rangfolge von && und || zwischen MQL4 (|| zuerst) und MQL5 (&& zuerst) unterschiedlich ist. Wenn Sie also von MQL4 zu MQL5 migrieren, stellen Sie sicher, dass Sie alle Vergleichsausdrücke durchsuchen.

Sie haben Recht. Siehe Vorrangregeln:

Jede Gruppe von Operationen in der Tabelle hat die gleiche Priorität. Je höher die Priorität der Operationen ist, desto höher ist die Position der Gruppe in der Tabelle. Die Vorrangregeln bestimmen die Gruppierung von Operationen und Operanden.

Achtung! Die Priorität der Operationen in der Sprache MQL5 entspricht der in C++ angenommenen Priorität und unterscheidet sich von der in der Sprache MQL4 gegebenen Priorität.

[Gelöscht]  
FinGeR:

Ich habe einen Fehler gefunden

Wenn nur ein Diagrammfenster geöffnet ist. Dann ist die ID dieses Fensters von = -1

-

Mein Fehler, es ist richtig :)

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);
  }
 

Hallo


ich würde mich freuen zu erfahren, ob alle diese Funktionen validiert wurden, ich habe es nicht geschafft

die Funktion "CopyBufferMQL4" zum Laufen zu bringen.


Dankeschön


Noel