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

 
Trintoro:

我喜欢这篇文章。

你关于制作 MT4 模拟器的想法非常好...

我同意 Trintoro 的观点。这篇文章与迁移无关,更像是模拟。我很担心执行速度,尤其是在读了这篇文章 和 Rosh 对这个话题 的回复之后。 我认为,这个话题发生的原因是用户仍然以 MQL4 的方式思考问题。也许是习惯使然,所以我不能责怪他。

与其使用这篇文章建议的命令,不如重新学习并将所有内容直接写入 mql5。

不过,了解这篇文章所显示的差异还是很有好处的。

顺便说一下。出于我的习惯 :

1.在 MQL4 MetaEditor 中按 F5(或 F7,但很少使用)可以编译,而在 MQL5 MetaEditor 中按 F7 可以编译,按 F5 可以开始/继续调试。

2.在 MQL4 元编辑器中,按 Esc 键会显示/隐藏工具箱窗口,而在 MQL5 元编辑器中,什么都不会发生。

这让我很苦恼:)

 
谢谢!!!!!!酷炫、庞大、非常必要且有用的工作!!!!即使它有个别缺陷,但在将机器人从一种语言翻译成另一种语言时,它还是非常非常有用的。我说的并不是完全的子串翻译,不,只是当你用第四种语言查看机器人,却不知道在第五种语言的帮助下在哪里查找这个无法编译的语言时,比方说......在这里,你可以找到详细的解释!!!这是非常必要和有用的!
 

请问 MQL5 中的哪段代码可用于 MQL4,以获得与下面相同的结果?

double AccountFreeMarginCheck(string symbol,
                              int cmd,
                              double volume)
没有类似的
AccountFreeMarginCheck
返回在当前账户上以当前价格开立指定头寸后剩余的可用资金金额。
AccountFreeMarginCheck - Документация на MQL4
  • docs.mql4.com
AccountFreeMarginCheck - Документация на MQL4
 
solandr:

请问 MQL5 中的哪段代码可以用于 MQL4,以获得与下面相同的结果?

...
查看OrderCalcProfit(...) 和 OrderCalcMargin(...) 函数。
 

iBarShift 错误。

更多信息https://www.mql5.com/ru/forum/11243/

 

亲爱的朋友们

我在我的指标中调用了以下函数。我能否改进下面的函数,使其不显示警告信息?

double MarketInfoMQL4(string symbol,
                      int type)
  {
   switch(type)
     {
      case MODE_LOW:
         return(SymbolInfoDouble(symbol,SYMBOL_LASTLOW));
      case MODE_HIGH:
         return(SymbolInfoDouble(symbol,SYMBOL_LASTHIGH));
      case MODE_TIME:
         return(SymbolInfoInteger(symbol,SYMBOL_TIME));
      case MODE_BID:
         //return(Bid);
      case MODE_ASK:
         //return(Ask);
      case MODE_POINT:
         return(SymbolInfoDouble(symbol,SYMBOL_POINT));
      case MODE_DIGITS:
         return(SymbolInfoInteger(symbol,SYMBOL_DIGITS));
      case MODE_SPREAD:
         return(SymbolInfoInteger(symbol,SYMBOL_SPREAD));
      case MODE_STOPLEVEL:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL));
      case MODE_LOTSIZE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE));
      case MODE_TICKVALUE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE));
      case MODE_TICKSIZE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE));
      case MODE_SWAPLONG:
         return(SymbolInfoDouble(symbol,SYMBOL_SWAP_LONG));
      case MODE_SWAPSHORT:
         return(SymbolInfoDouble(symbol,SYMBOL_SWAP_SHORT));
      case MODE_STARTING:
         return(0);
      case MODE_EXPIRATION:
         return(0);
      case MODE_TRADEALLOWED:
         return(0);
      case MODE_MINLOT:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN));
      case MODE_LOTSTEP:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP));
      case MODE_MAXLOT:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX));
      case MODE_SWAPTYPE:
         return(SymbolInfoInteger(symbol,SYMBOL_SWAP_MODE));
      case MODE_PROFITCALCMODE:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_CALC_MODE));
      case MODE_MARGINCALCMODE:
         return(0);
      case MODE_MARGININIT:
         return(0);
      case MODE_MARGINMAINTENANCE:
         return(0);
      case MODE_MARGINHEDGED:
         return(0);
      case MODE_MARGINREQUIRED:
         return(0);
      case MODE_FREEZELEVEL:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_FREEZE_LEVEL));

      default: return(0);
     }
   return(0);
  }
 
advali82:

亲爱的朋友们

我在我的指标中调用了以下函数。我能否改进下面的函数,使其不显示警告信息?

这些警告是什么?
 
RaptorUK:
什么是警告?

警告是

类型转换可能 导致数据丢失 Ciiio.mq5 676 10

Documentation on MQL5: Language Basics / Data Types / Typecasting
  • www.mql5.com
Language Basics / Data Types / Typecasting - Documentation on MQL5
 

从 MQL4 迁移到 MQL5》一文的结论如下

3.计划创建一个模拟器,让您可以在新的 MT5 终端中运行 MQL4 程序。

谁能告诉我,这个模拟器是否已经可用或何时会出现?

 
Novikov:

从 MQL4 迁移到 MQL5 这篇文章的最后有如下声明

谁能告诉我,这个模拟器是否已经可用或何时会出现?

是的,它与这篇文章同时创建。但如果没有交易功能,就没有意义了!