分享一个快速获取10年高质量历史数据的方法

1 六月 2021, 07:24
Ziheng Zhuang
19
4 364

本文所用到的EA和脚本在附件中,在本文末尾下载。

问题:在MT4中进行最精确的测试,即所谓的tick测试,必须要有最小M1的历史数据。一般平台MT4账号提供的M1历史数据不超过3个月,但是MT5账号提供超过10年的M1历史数据。

方案:在MT5中用EA做复盘测试,测试10年周期,能下载到10年的M1数据,把数据转换成MT4格式的K线数据(*.hst),保存到MT4的相应数据文件夹,供MT4使用。


准备:

  1. 一个MT5账号和一个MT4账号,最好是同一个平台的。
  2. 一个MT5的EA,见附件中的GetM1Data v2 保存:菜单栏“文件”--->“ 数据文件夹 ”,MQL5\Experts\,并重启MT5。
  3. 一个MT4的脚本,见附件中的PeriodConverterAllTimeframes保存:菜单栏“文件”--->“ 数据文件夹 ”, MQL4\Scripts\,并重启MT4。

一,MT5测试EA获取数据步骤(以黄金为例,获取2000.01.01到2021.05.31的数据)

1.打开MT5,按Ctrl+R弹出测试终端,在“概览”中选择“单一”,在“设置”中按下图设置,点击“开始”   

     

2. 测试结果看“日志”,非常快。下图,红色是提示测试开始和结束,蓝色是文件位于哪里,鼠标点它,然后右键-->打开


3. 打开之后,看到的是tester\logs\文件夹,点击tester,进入到tester文件夹,如下图,打开Agent-127.0.0.1-3000

        

4. 进入到MQL5\Files文件夹,XAUSUD1.hst 就是我们要的MT4格式的数据文件,把这个文件拷贝到桌面备用

 

二,MT4的准备,数据转换,EA测试 (整个过程都不要关闭MT4)  

1. 准备一个专用的MT4,登录账号,选择显示所有品种(目的是为了获得品种的属性),并关闭所有图表,如下图:


2. 工具--->选项--->图表。如下图,最后两个参数均设置为99999999:


3. 非常重要且必须的步骤,删除MT4的账号密码,目的是防止转换而来的历史数据被平台的数据覆盖。操作如下图:


4.  删除历史数据文件。从MT4的菜单栏的“文件” ---> “数据文件夹” ---> history ---> 服务器文件夹(我这里是Alpari-Pro.ECN)。

   删除后缀名是.hst的所有文件,其他文件保留。如果没有显示后缀名,请搜索如何显示文件后缀名。

   


删除后如下,可能你剩下的文件与我的不完全一致,没有关系:


5. 把前面从MT5中获得的数据文件,保存在桌面的XAUUSD1.hst,拷贝到此,即服务器文件夹中,如下:


6. 打开一个XAUUSD 图表,打开时默认是H1的图表,显示等待更新,切换周期到M1,显示如下,已经获取到1999.01.19的M1的K线数据。


7. 到此仅有M1的历史数据,其他8个周期都没有数据(M5,M15,M30,H1,H4,D1,W1,MN)。此时就需要用到数据转换脚本,“准备” 中,提到的  PeriodConverterAllTimeframes 鼠标左键摁住它,拖到图表,松开即能立即转换所有周期的数据,如下:

      

转换过程中,有弹窗提示已转换的周期:


8. 打开多个XAUUSD的图表,并切换相应周期,如下:


9. 以上整个过程不要关闭MT4,因为一旦关闭后,再次启动MT4,由于已经删除了账号和密码,无法登录到服务器,好处是不会被平台的数据覆盖转换而来的数据,坏处是品种的某些属性比如点值,最小手数等会被置零,则可能会 影响到EA的测试(如果你的EA使用了最小手数/点值等属性则会导致EA无法测试)。   

10. 按Ctrl+R 弹窗测试终端,可以在MT4上进行EA测试了。

到此,所有XAUUSD的数据转换完毕,其他品种数据可以按照此方法从MT5获取并在MT4中转换。

能获取到多少数据取决于平台,不同平台提供的数据长度不同,另外不是所有外汇品种都有20年的数据,有些外汇品种不是外汇市场一开始就有的。

本文所用到的EA和脚本在附件中。




附加的文件: