如何把MQL4代码自动转换成MQL5? 新评论 Jia Jia Chen 2020.03.13 11:13 如何把MQL4代码自动转换成MQL5? 比较MQL4 和MQL5 官方文档发现,是没有方法只通过兼容库让MT5运行MQL4代码的 有一部分函数MQl4有,MQL5没有,可以通过重新实现,兼容 有一部分函数MQL4,MQL5都有,但是参数不一样,这些兼容函数需要跟现有MQL5函数区别开,方法名添加了MQL4后缀 还有一部分函数MQL4和MQL5使用方式变了,单纯文本替换实现不了,比如iRSI,iMACD等,MQL5要先在OnInit 初始化,在调用 要想实现自动转换,要实现MQL4语言解析,对这些不兼容的部分,进行语法级别的转换 所以,自动转换需要两个组成部分 MQL4 API兼容库 解析MQL4语言对方法,变量,表达式进行替换 MQL4兼容库 社区里已经有人完成了大部分工作,两个兼容库拼在一起,实现了大部分的兼容函数 mql4compat.mqh 地址(https://www.mql5.com/ru/code/1787) 感谢 t-1000 (https://www.mql5.com/ru/users/t-1000)的工作 MT4Orders.mqh 地址 https://www.mql5.com/ru/code/16006 ,感谢 fxsaber( https://www.mql5.com/ru/users/fxsaber )的工作 结合两个兼容库,对代码库中的MQL4代码进行测试,修复了mql4compact.mqh 部分函数的bug,以及缺失的函数和常量定义,最后结果放在MQL4TO5.mqh文件中,参见附件 ,兼容库就准备好了 MQL4到MQL5的语言转换 借助antlr4 通过对C++ 语法文件的改写,识别MQL4语言,对生成的抽象语法树的关键节点进行事件注册 包括所有函数声明,函数调用,return语句,数组声明这些节点 解析函数声明,把init,deinit,start 等函数替换成MQL5新的OnInit等函数 解析函数调用,对于所有MQL4和MQL5冲突的函数,函数名后加MQL4后缀,替换为重写的兼容函数 解析函数调用,对iRSI,iMACD等函数调用,改写成MQL5的使用方式 return语句,修正预定义回调函数的返回值类型 数组声明,转换MQL4 预定义High,Low 等数组,改为函数调用方式 其他语言细节的转换 MQL4到MQL5语言转换程序,部署到了 MQL4TO5.com 使用步骤 下载附件中的MQL4TO5.mqh 和MT4Orders.mqh 到MQL5\Include目录 使用https://mql4to5.com 提供的mql4自动转mql5服务,转换mql4代码,粘贴转换后mql5代码到metaeditor 编译转换后的源码,修正可能出现的错误 使用限制 iBandsOnArray 等 OnArray后缀函数未实现 iBands 等系统指标调用,只支持shift变化的调用 部分MQL4有,MQL5没有同等功能的函数没有实现,调用会提示该函数暂未实现 特别说明 MQL4TO5.mqh 非完全原创,在社区代码库 mql4compat.mqh(https://www.mql5.com/ru/code/1787) 的基础上修改和功能扩展得到,感谢 t-1000 (https://www.mql5.com/ru/users/t-1000)的工作 为了方便用户直接下载两个兼容文件,MT4Orders.mqh 直接搬运自https://www.mql5.com/ru/code/16006 ,感谢 fxsaber( https://www.mql5.com/ru/users/fxsaber )的工作 s7744woaini 2020.04.12 11:21 #1 more than 100 problems ,how to do? s7744woaini 2020.04.12 11:41 #2 change the encode ,it works redmountain 2020.04.15 07:07 #3 好像思路未必对 因为MT5和MT4有关键的区别,如果硬是按照MT4的思维方式转换成MT5那基本上升级MT5的意义就会大打折扣! 甚至就没必要升级升级,出MT5了 alan Yang 2022.08.14 09:47 #4 https://mql4to5.com 这个网址都打不开了啊! 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如何把MQL4代码自动转换成MQL5?
比较MQL4 和MQL5 官方文档发现,是没有方法只通过兼容库让MT5运行MQL4代码的
有一部分函数MQl4有,MQL5没有,可以通过重新实现,兼容
有一部分函数MQL4,MQL5都有,但是参数不一样,这些兼容函数需要跟现有MQL5函数区别开,方法名添加了MQL4后缀
还有一部分函数MQL4和MQL5使用方式变了,单纯文本替换实现不了,比如iRSI,iMACD等,MQL5要先在OnInit 初始化,在调用
要想实现自动转换,要实现MQL4语言解析,对这些不兼容的部分,进行语法级别的转换
所以,自动转换需要两个组成部分
MQL4兼容库
社区里已经有人完成了大部分工作,两个兼容库拼在一起,实现了大部分的兼容函数
结合两个兼容库,对代码库中的MQL4代码进行测试,修复了mql4compact.mqh 部分函数的bug,以及缺失的函数和常量定义,最后结果放在MQL4TO5.mqh文件中,参见附件 ,兼容库就准备好了
MQL4到MQL5的语言转换
借助antlr4 通过对C++ 语法文件的改写,识别MQL4语言,对生成的抽象语法树的关键节点进行事件注册
包括所有函数声明,函数调用,return语句,数组声明这些节点
MQL4到MQL5语言转换程序,部署到了 MQL4TO5.com
使用步骤
使用限制
特别说明