欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

MQL4 到 MQL5 兼容性库 - MetaTrader 5 的库

author emer | 991 人阅读 | 0 人评论 |

MQL4 to MQL5 compatibility library - library for MetaTrader 5

MQL4 to MQL5 compatibility library - library for MetaTrader 5

该库允许在 MetaTrader 5 上运行 MetaTrader 4 中的大多数脚本和指标。大多数功能已经涵盖,只有交易逻辑没有添加,因此对于专家来说,因为交易机制需要重写。

该库已经涵盖了除 EA 交易机制之外的大部分功能。此外,对于在 MT5 上出错的函数,还有其他同名但以 MQL4 结尾的函数。其中大多数是针对 MQL5 中已具有相同名称的冲突函数。原始文章仅提供了框架库,因此该版本的库主要包含 MQL4 函数。  请参阅带有搜索模式“MQL4”的库源代码以获取特定函数名称。

待办事项:  用于订单发送和控制的 EA 交易机制。有些函数具有通用存根,并会在日志中给出相应的错误消息。这些的返回码始终是-1

将 mql4compat.mqh 放入您的 Include 目录中(它位于您的 Windows 用户漫游配置文件中)。

在您的 MQL4 EA/指标/库/脚本中,请在 #property 定义之后添加:

#包括

更改 MQL4 函数:

整数初始化()到整数 初始化时()整数deinit() 到空白 解初始化常量 整数原因);整数脚本中的 start() 到空白 启动时();整数start() 在指示器中:整数 计算时常量 整数费率_总计,
                常量 整数先前计算的,
                常量 日期时间&时间[],
                常量 双倍的&打开[],
                常量 双倍的&高的[],
                常量 双倍的&低的[],
                常量 双倍的&关闭[],
                常量 长的&tick_volume[],
                常量 长的&体积[],
                常量 整数&传播[])
  {

return() 函数的最后一行应如下所示:

  返回(费率_总计);

 通过将 MQL4 添加到其名称中,更改 MQL4 和 MQL5 之间由于参数更改而导致的冲突函数:

  整数数组初始化MQL4(双倍的&大批[],双倍的价值)
  整数数组最大MQL4(双倍的&大批[],整数计数=整个数组,整数开始=0)
  整数数组最小MQL4(双倍的&大批[],整数计数=整个数组,整数开始=0)
  整数数组排序MQL4(双倍的&大批[],整数计数=整个数组,整数开始=0,整数排序目录=MODE_ASCEND)
  双倍的复制缓冲区MQL4(整数处理,整数指数,整数转移)
  双倍的信封MQL4(细绳象征,整数特夫,整数ma_period,整数方法,整数ma_shift,整数价格,双倍的偏差,整数模式,整数转移)
  双倍的文件读取DoubleMQL4(整数处理,整数大小=DOUBLE_VALUE)
  布尔值文件查找MQL4(长的处理,整数抵消,ENUM_FILE_POSITION起源)
  整数指标计数MQL4(整数_prev_calculated=0)
  布尔值对象创建MQL4(细绳姓名,ENUM_OBJECT类型,整数窗户,日期时间时间1,双倍的价格1,日期时间时间2=0,双倍的价格2=0,日期时间时间3=0,双倍的价格3=0)
  布尔值对象删除MQL4(细绳姓名)
  细绳对象描述MQL4(细绳姓名)
  整数对象查找MQL4(细绳姓名)
  布尔值对象移动MQL4(细绳姓名,整数观点,日期时间时间1,双倍的价格1)
  细绳对象名称MQL4(整数指数)
  整数对象删除所有MQL4(整数窗口=空,整数类型=空)
  整数对象总数MQL4(整数类型=空,整数窗口=-1)
  布尔值设置索引缓冲区MQL4(整数指数,双倍的&大批[])
  细绳字符串连接MQL4(细绳_str1,细绳_str2,...细绳_str64=””)
  整数StringGetCharMQL4(细绳文本,整数位置)
  细绳字符串集CharMQL4(细绳文本,整数位置,整数价值)
  双倍的iACMQL4(细绳象征,整数特夫,整数转移)
  双倍的iADMQL4(细绳象征,整数特夫,整数转移)
  双倍的iADXMQL4(细绳象征,整数特夫,整数时期,整数价格,整数模式,整数转移)
  双倍的iAOMQL4(细绳象征,整数特夫,整数转移)
  双倍的iATRMQL4(细绳象征,整数特夫,整数时期,整数转移)
  双倍的iAlligatorMQL4(细绳象征,整数特夫,整数下颌期,整数下颌移位,整数牙齿周期,整数牙齿移位,整数嘴唇期,整数嘴唇移动,整数方法,整数价格,整数模式,整数转移)
  双倍的iBWMFIMQL4(细绳象征,整数特夫,整数转移)
  双倍的iBandsMQL4(细绳象征,整数特夫,整数时期,双倍的偏差,整数band_shift,整数方法,整数模式,整数转移)
  双倍的iBearsPowerMQL4(细绳象征,整数特夫,整数时期,整数价格,整数转移)
  双倍的iBullsPowerMQL4(细绳象征,整数特夫,整数时期,整数价格,整数转移)
  双倍的iCCIMQL4(细绳象征,整数特夫,整数时期,整数价格,整数转移)
  双倍的iDeMarkerMQL4(细绳象征,整数特夫,整数时期,整数转移)
  双倍的iForceMQL4(细绳象征,整数特夫,整数时期,整数方法,整数价格,整数转移)
  双倍的i分形MQL4(细绳象征,整数特夫,整数模式,整数转移)
  双倍的iGatorMQL4(细绳象征,整数特夫,整数下颌期,整数下颌移位,整数牙齿周期,整数牙齿移位,整数嘴唇期,整数嘴唇移动,整数方法,整数价格,整数模式,整数转移)
  双倍的一目MQL4(细绳象征,整数特夫,整数天观森,整数kijun_sen,整数senkou_span_b,整数模式,整数转移)
  双倍的iMACDMQL4(细绳象征,整数特夫,整数快_EMA_周期,整数慢速EMA周期,整数信号周期,整数价格,整数模式,整数转移)
  双倍的iMAMQL4(细绳象征,整数特夫,整数时期,整数ma_shift,整数方法,整数价格,整数转移)
  双倍的iMFIMQL4(细绳象征,整数特夫,整数时期,整数转移)
  双倍的iMomentumMQL4(细绳象征,整数特夫,整数时期,整数价格,整数转移)
  双倍的iOBVMQL4(细绳象征,整数特夫,整数价格,整数转移)
  双倍的iOsMAMQL4(细绳象征,整数特夫,整数快_EMA_周期,整数慢速EMA周期,整数信号周期,整数价格,整数转移)
  双倍的iRSIMQL4(细绳象征,整数特夫,整数时期,整数价格,整数转移)
  双倍的 iRVIMQL4(细绳象征,整数特夫,整数时期,整数模式,整数转移)
  双倍的iSARMQL4(细绳象征,整数特夫,双倍的步,双倍的最大限度,整数转移)
  双倍的iStdDevMQL4(细绳象征,整数特夫,整数ma_period,整数ma_shift,整数方法,整数价格,整数转移)
  双倍的iStochasticMQL4(细绳象征,整数特夫,整数K周期,整数D期,整数放慢速度,整数方法,整数场地,整数模式,整数转移)
  双倍的iWPRMQL4(细绳象征,整数特夫,整数时期,整数转移)

在指标中,OnInit() 函数和#property 标头需要手动调整。此外,IndicatorCounted() 函数需要通过删除子句或更改为 MQL5 prev_calculated 变量来更改为同名变量:

#定义IndicatorCounted IndicatorCountedMQL4(prev_calculated)

在自定义指标中,请查看如何#财产标头采用 MQL5,然后交换输入参数定义类型外部的输入。现在也在 MQL5 中常量任何改变值的尝试都会导致错误。解决方法是添加临时变量,然后将输入参数值复制到其中。

在您的基本代码的第一行,请添加 MQL4 保留变量初始化函数(如果自定义指标用于 OHLC/时间/成交量保留变量,则会发出有关它们的警告)OnCalculate()函数,可以安全忽略): 


附件下载

📎 mql4compat.mqh (54.62 KB)

Source: MQL5 #1787

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录