高精度MT5数据转换MT4方法

avatar
· 阅读量 3,898

我不生产蜂蜜,我只是大自然的搬运工

这方法不是我原创,我只是照搬过来。

献给各位EA交易者

这是一个中国籍名字叫:Ziheng Zhuang 分享,如果他本人看到有意见请与我联系。

下面基本原文找搬,但有些下载连接网站与FOLLOWME有利益冲突,避免封贴我将用百度网盘代替

在 MetaTrader 4 中,通常大多数经纪商不会提供超过3个月的 M1 数据,而在 MT5 中,它们会提供超过3年的 M1 数据. 所以,我们可以使用这个工具来在 MetaTrader 5 测试器中取得 M1 数据,并且把数据保存到 .hst 文件中用来做 MetaTrader 4 的回溯测试。

怎样使用?

 

  • 在 MetaTrader 5 中测试 EA , 选择 M1 时段以及一分钟 OHLC,
  • 在测试结束后,.hst 文件就保存在测试器文件夹中,把它复制到您 MetaTrader 4 的历史文件夹下。
  • 使用时段转换器脚本把 M1 .hst 文件转换为其他时段。

第一步:从MT5下载数据,构造成MT4可用的M1的K线数据(.hst)。

              这需要编写一个MT5的EA,利用该EA做复盘测试的机会下载历史数据,并转换成MT4的M1数据。

第二步:在MT4中把该M1转换成其他周期,这样就可以在MT4中测试了。

             这需要一个MT4的周期转换脚本。

这两步我都替你做好了,看看我分享的代码:

百度网盘代替连接:

https://pan.baidu.com/s/1y6zly...
https://pan.baidu.com/s/1jqoG3...

 

第一步: 用这个MT5的EA在MT5上跑测试,从而获得对应周期的M1的数据。

              EA请自己下载编译 https://pan.baidu.com/s/1y6zly...

             不懂如何编译的,下载后保存到MQL5\Experts文件夹中,重启MT5即可自动编译。

              然后进行测试,按Ctrl+R 调出测试终端,测试时的设置必须是选择 1 minute OHLC 以及 M1 周期

             测试很快就完毕了,完毕后EA自动生成了数据文件  比如 EURGBP1.hst, 这个文件位于测试文件夹 tester下面,比如:

             XXXX \Tester\Agent-127.0.0.1-3001\MQL5\Files

            这个EURGBP1.hst是EURGBP的M1 数据,是MT4中的图表数据格式

高精度MT5数据转换MT4方法

 

第二步:把第一步中获得的数据文件 EURGBP1.hst 拷贝到MT4中,并用用脚本转换M1为其他周期(M5,M15,M30,H1,H4,D1,W1,MN)的数据,用于EA测试。具体步骤:

1. 制作一个专门做测试的MT4(必须与那个MT5是同一个平台),即复制已有的MT4到一个新的文件夹。

2. 打开专用MT4,登录账号,联网,市场报价窗口右键选择显示所有品种,关闭所有打开的图表。

3. 进入到历史数据文件夹,删除历史,具体操作:

   菜单栏--->打开数据文件夹-->....  比如  XXX MT4\history\Alpari-ECN-Demo\  ... 

     Alpari-ECN-Demo(服务器)是你的账号所在的服务器,删除该目录下的所有数据文件,  然后把前面获得的EURGBP1.hst保存到该目录下。

4. 删除MT4账号密码,具体操作:

   菜单栏 --- 工具 --- 选项--- 服务器 ---> 删除密码   然后点击确认,关闭MT4

5.再启动MT4,从市场报价窗口 打开 EURGBP图表,打开时是H1图表,没有任何数据,这时切换到M1,就有K线数据了,但是只有M1的数据。

  接下来就是用脚本转换数据。

6. 下载转换脚本:https://pan.baidu.com/s/1jqoG3...

    下载后保存到MQL4\Scripts文件夹中,重启MT4以便生成可执行文件 PeriodConverterAllTimeframes.ex4

7. 打开MT4后,在图表EURGBP M1上运行这个脚本,就可以基于M1的数据转换出其他周期的数据(M5,M15,M30,H1,H4,D1,W1,MN)。

 

到此为止,已经获得了基于M1的所有周期历史数据,可以进行EA测试了。

小白用户务必严格按照上述步骤,每一步都是有其作用的,不具体说明。

                                                                                                                                                     

下面针对第一第二步作者又更详细的解说于图解

第一:

怎样使用?

  • 在 MetaTrader 5 中测试 EA , 选择 M1 时段以及一分钟 OHLC,
  • 在测试结束后,.hst 文件就保存在测试器文件夹中,把它复制到您 MetaTrader 4 的历史文件夹下。
  • 使用时段转换器脚本把 M1 .hst 文件转换为其他时段。https://pan.baidu.com/s/1y6zly....

高精度MT5数据转换MT4方法

在MT4测试中,很多人到处购买的历史数据,网络上很多第三方的数据都有坑,找到高质量的数据很难。

所以最好的方式就是找到一个同时提供MT5和MT4的平台商,从该平台的MT5上获得M1数据,然后在其MT4平台上测试。

有必要提醒下:

在MT4中转换数据之前,你必须登录MT4账号,并在“市场报价”窗口中显示所有品种,这么做的目的是为了获得品种属性即合约规格(点差,利率,佣金,交易模式,杠杠等)

因为在测试时需要用到品种的这些属性。

登录账号,显示所有品种,之后就可以删除账号密码了,然后就可以转换数据了。

有些朋友可能需要txt数据,用于Python测试。

那么只需要修改EA中的保存数据的格式,用参数 1 

void OnDeinit(const int reason)
  {
//--- 
    //hstBar.SaveData(0);
      hstBar.SaveData(1);   //1 则是保存为txt文档,可用于Python测试。

  }

第二:

https://pan.baidu.com/s/1jqoG3...

当我们进行回测时,通常会从第三方下载M1数据,然后将M1数据转换为其他时间范围。

该脚本有助于将历史数据从M1转换为M5,M15,M30,H1,H4,D1,W1和MN。

该脚本必须在M1图表上运行。

您可以选择是否转换为D1,W1,MN。默认情况下为false。

  • ConverterD1 = FALSE;
  • ConverterW1 = FALSE;
  • ConverterMN = FALSE;

请注意,在回测之前,您应断开与代理服务器的连接,否则服务器数据将覆盖数据。

为了避免覆盖,实际的方法是删除MetaTrader 4设置中的密码(菜单“工具”→“选项”→“服务器”)。

 

以上方法都是可行的,我也亲测。

为什么需要高精度数据,为什么不直接在MT4下载。

这问题在好多老EA交易者都知道的痛点,我简单说说:

在MT4历史数据下载通常速度都奇慢,而且可能根本下载不了,无法控制时间周期,做成文件巨大(我的指导者告诉我,他的MT4文件达到100G容量,99%都是数据)。

还有一个致命的问题,就是丢包,数据不连贯,可能你回测2015-2019时间,中间2016的8月数据整个消失或者1分钟周期里,有些分钟数据消失。这些问题都会做成回测失效,变的无意义。

可能有些人会去数据网站购买高精度数据,但有很多经纪商都是有冬夏令时的转换,会做成本来经纪商星期一00::00才出现的数据,变成星期天23:00就出现,对于很多指定时间段运行的EA做成回测失效。

说到这里就这样吧,假如大家有不明白怎么使用,可以留言,我会“尝试”说明,毕竟我不是原创,我都一步一步按照方法做

风险提示:以上内容仅代表作者或嘉宾的观点,不代表 FOLLOWME 的任何观点及立场,且不代表 FOLLOWME 同意其说法或描述,也不构成任何投资建议。对于访问者根据 FOLLOWME 社区提供的信息所做出的一切行为,除非另有明确的书面承诺文件,否则本社区不承担任何形式的责任。

FOLLOWME 交易社区网址: www.followme.asia

喜欢的话,赞赏支持一下
avatar
回复 0

加载失败()

  • tradingContest