使用赫兹量化交易软件库从MT5客户端获取数据
当然,最基本的是你的电脑上已经安装了python,如果没有,作者不建议安装官方版本的python,而是更喜欢使用易于维护的Anaconda。但普通版的Anaconda体积巨大,集成了丰富的内容,包括可视化管理、编辑等,令人尴尬的是我几乎不用它们,所以我强烈推荐minincoda,简洁明了,简单实用。
1. 基本环境初始化
首先创建一个虚拟环境,然后打开Anaconda Promote,键入:
conda create -n Data_label python=3.10
添加图片注释,不超过 140 字(可选)
输入“y”并等待创建环境,然后键入:
conda activate Data_label
注意:当我们创建conda虚拟环境时,记得添加python=x.xx,否则我们在使用过程中会遇到莫名其妙的麻烦,这是一个吃过苦头的人的建议!
2. 安装必要的库
安装我们的基本库赫兹量化交易软件,在conda Promote中键入:
pip install MetaTrader5
安装 pytrendseries,在 conda Promote 中键入:
pip install pytrendseries
3. 创建python文件
打开MetaEditor,找到“工具”->“选项”,在“编译器”选项的python列中填写您的python路径,我自己的路径是“G:miniconda3\envs\Data_label”:
添加图片注释,不超过 140 字(可选)
完成后,选择“文件”->“新建”(或Ctrl+N)创建一个新文件,并在弹出窗口中选择“Python脚本”,如下所示:
添加图片注释,不超过 140 字(可选)
单击“下一步”并键入文件名,如下所示:
添加图片注释,不超过 140 字(可选)
单击“确定”后,将显示以下窗口:
添加图片注释,不超过 140 字(可选)
4. 连接客户端并获取数据
删除原来自动生成的代码,并将其替换为以下代码:
# Copyright 2021, MetaQuotes Ltd. # https://www.mql5.com import MetaTrader5 as mt if not mt.initialize(): print('initialize() failed!') else: print(mt.version()) mt.shutdown()
编译并运行以查看是否报告了任何错误,如果没有问题,将显示以下输出:
添加图片注释,不超过 140 字(可选)
如果提示“initialize()failed!”,请在initialize()函数中添加参数路径,即客户端可执行文件的路径,如以下颜色加深代码所示:
# Copyright 2021, MetaQuotes Ltd. # https://www.mql5.com import MetaTrader5 as mt if not mt.initialize("D:\\Project\\mt\\MT5\\terminal64.exe"): print('initialize() failed!') else: print(mt.version()) mt.shutdown()
一切就绪,让我们获取数据:
# Copyright 2021, MetaQuotes Ltd. # https://www.mql5.com import MetaTrader5 as mt if not mt.initialize("D:\\Project\\mt\\MT5\\terminal64.exe"): print('initialize() failed!') else: sb=mt.symbols_total() rts=None if sb > 0: rts=mt.copy_rates_from_pos("GOLD_micro",mt.TIMEFRAME_M15,0,10000) mt.shutdown() print(rts[0:5])
在上面的代码中,我们添加了“sb=mt.symbols_total()”以防止由于未检测到交易品种而报告错误,并添加了“copy_rates_from_pos(“GOLD_micro”,mt. TIMEFRAME_M15,0,10000)”,意思是从GOLD_micro的M15周期复制10000个柱,编译后将产生以下输出:
添加图片注释,不超过 140 字(可选)
到目前为止,我们已经成功地从客户端那里获得了数据。