MQL4 到 MQL5 兼容性库 - 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
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
