我最近完成的一个项目, 转换后的代码,我从写的MetaTrader 4 到MT5. 这个帖子应该提供一些洞察来回移动两种语言之间的困难.
1) 了解MT5对象; 他们的方法和成员
MT5是MT4一个有点不同. 相较于MT5, MT4是一个面向'C挺古怪非对象’ 像编程语言,一组语句有限. MT5增加面向对象的语言部分. 除了对象, 方法, 和成员, MT5还增加了各种结构, 枚举和其他结构. 正因为如此,我不得不找MT5的方式来完成什么是在MT4的EA. 这意味着大量的时间阅读的语言文档, 通过通讯的例子和论坛讨论的时候钻研逻辑问题随之而来,这是不相关的语法, 编码, 和调试. 一区特别是我和就是这样的历史数据数组中返回的麻烦.
2) MT5结合多个行业为一体的贸易.
这与其说是一个问题,如果合并交易使用相同的止损和止盈. 然而, 在这个特定的EA, 这两个行业置于同行业的信号使用不同的获利了结. 这需要第一贸易参数的存储,然后监视时,出价或要价决定现在合并交易的部分关闭.
3) 该 策略测试 不得不在一个EA的工作访问的多个货币对; 和创建指标手柄.
主要的原因将这个特殊的EA从MT4到MT5是利用MT5战略测试仪, 允许 先 在多个货币对. 在它的初始配置的EA将测试不同的货币对,以找到最有利的对与每一个刻度工作,然后访问和测试众多指标 (基于货币对和图表时段) 所选货币对.
经过反复试验才发现,取消旧指标手柄和创造新的指标处理每一个滴答税收内存和CPU资源的地步了EA将耗尽这些资源. 尝试不同的调整后,以减少对这些资源的需求, 我开始寻找从外部来源的想法 (在MetaTrader的论坛,从不同的博客). 经过一番论坛和支持票交流我决定一些方法来尝试, 包括使用重试循环和方法的调用来测试所需的数据的存在. 只有这个工作在一定程度上 (用货币对的数目减少).
我想,最后才决定预分配的所有指标句柄,在EA的初始化部分其他几个方法. 我不得不分配一个不同的指示器手柄各货币对,并与各货币对每个时间段中使用. 在实际的测试策略,这极大地延长了EA的初始加载时间,但它是唯一的可扩展解决方案.
4) 获取历史数据需要进行一些手动设置.
之一的该延迟的最佳解决方案的发现中的一部分的问题 3 (以上) 是历史数据的各种货币对没有出席该战略测试仪访问客户端上. 很多不得不与加载数据,指标的错误是由于缺乏数据,不得不无关,与其他的解决方案正在尝试. 虽然我觉得有可能是一个更优雅的方式来编程请求此数据, 我还没有临到如何做到这一点还没有.
最后我手动加载一个图表各货币对的, 关闭图表自动滚屏, 然后回到间隔在一定时间的期间被测试. 我不仅要加载图表各货币对, 我不得不改变图表期间的 4 或 5 要使用的各种指标不同时期,这是. 我也不得不说指标添加到图表. 这样我就能够强制需要的测试策略的历史数据加载. 如果我没有在一个小窗口,测试的是最近的一段时间内,这可能被证明是一个非常繁重的任务.
菲沃斯乔治亚季斯 说
请参阅 MQL5.com 论坛文章的/代码基和专用编程专业人员.
我敢肯定你 wll 能够找到你的问题有解决的办法.
FG
肖恩·奥弗顿 说
嗨,菲沃斯,
谢谢你的评论. 我们致力于编程专业人员自己. 这篇文章的目的是简单地从我们的经验教训的文件.
感谢您阅读我们的博客!
Trinity@metatrader5 说
一边向外汇市场的客户提供经纪服务. 有哪些其他主要服务的平台 5 可以提供的平台 4 没有?
我所知道的最主要的事情那平台 5 和平台 4 有共同之处是他们是来为客户的外汇交易提供经纪服务, CFD, 和未来市场. 除此之外, 平台还会做什么 5 和平台 4 有共同点?
肖恩·奥弗顿 说
大部分的 MT5 的变化旨在提高经纪人的能力. MQL5 照顾 MQL4 一些固有的局限性, 虽然它方式更复杂的程序.