文章 "从 MQL4 迁移到 MQL5" - 页 5

 

OrderMagicNumber() 如何?谢谢

 
song_song:

OrderMagicNumber() 如何?谢谢

请参见 ORDER_MAGIC
 

iBarShift() 很容易使用,但 iBarShiftMQL4() 却相当复杂。等等...

 

为什么 "TickValue() 和 SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)" 都总是返回 "0"?

 

你好,罗什:

我很感谢您说:"我已计划开发 MQL4 仿真器,它将允许您在新的 MetaTrader 5 客户端终端运行您的 MQL4 程序"。

我不是一名优秀的程序设计师,而是一名交易员。MQL5 对我来说太难了。

等待您的 MQL4 仿真器。百万 TKS!

向您致以最美好的祝愿。

[删除]  

我发现一个错误

如果只打开了一个图表窗口。那么这个窗口的 ID = -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);
  }
 

还要注意优先级。 我花了半天时间调试一个逻辑,发现 MQL4(||先)和 MQL5(&&先)中 && 和 || 的优先级是不同的。 因此,在从 MQL4 迁移到 MQL5 时,请确保您搜索了所有比较表达式。

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:

还要注意优先级。 我花了半天时间调试一个逻辑,发现 && 和 || 的优先级在 MQL4(||优先)和 MQL5(&&优先)之间是不同的。 因此,在从 MQL4 迁移到 MQL5 时,请确保您搜索了所有的比较表达式。

您是对的。请参见优先级规则

表中的每组操作具有相同的优先级。操作的优先级越高,该组在表中的位置就越高。优先级规则决定了操作和操作数的分组。

注意 MQL5 语言中操作的优先级与 C++ 中采用的优先级一致,与 MQL4 语言中的优先级不同。

[删除]  
FinGeR:

我发现一个错误

如果只打开了一个图表窗口。那么这个窗口的 ID = -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(i==0)currChart=prevChart; // Wenn nur an Chartfenster offen ist
  
      if( currChart<0) break;
        
      if(ChartSymbol(currChart)==symbol
        && ChartPeriod(currChart)==timeframe)
        
         return((int)currChart);
      prevChart=currChart;
      i++;
     }
   return(0);
  }
 

您好


我很想知道所有这些函数 是否都已通过验证。

使函数 "CopyBufferMQL4 "生效。


谢谢


诺埃尔