MetaTrader5获取外汇历史数据
使用python连接MetaTrader5获取外汇历史数据
文档介绍页面metatrader5
首先导入需要用的模块
import os
import pytz
import MetaTrader5 as mt5
import pandas as pd
from datetime import datetime
其次创建一个MetaTrader类,初始化属性包括外汇品种如黄金(XAUUSD)、账号ID、账号密码和交易服务器的名字
class MetaTrader(): def __init__(self,symbol,account,password,server): # 初始化self.symbol = str(symbol) # 外汇种类self.account = int(account) # 账号IDself.password = str(password) #账号密码self.server = str(server) #服务器名字self.initialize = self.connection() # 与MetaTrader5程序端建立连接def connection(self):# 建立MetaTrader 5到指定交易账户的连接if not mt5.initialize(login=self.account,server=self.server,password=self.password):print("initialize() failed, error code =",mt5.last_error())quit()def find_directory(self): # 创建存储数据的目录dir_one = os.getcwd() # 查询当前工作路径if not os.path.exists(dir_one+'\\data'):dir_two = dir_one+'\\data'os.mkdir(dir_two)return dir_twoelse:dir_two = dir_one + '\\data'return dir_twodef download_data(self,datefrom,dateto,timeframe): # 在工作目录下创建data文件,存储数据df = self.get_data(datefrom,dateto,timeframe)dir_one = self.find_directory()df.to_csv(dir_one+f"{self.symbol}_{datefrom}_{dateto}_{timeframe}")def find_all_symbols(self): # 查找所有外汇种类symbols=mt5.symbols_get()count=0for s in symbols:count+=1print("{}. {}".format(count,s.name))if count==len(symbols): breakdef get_data(self,datefrom,dateto,timeframe): # 获取数据并返回dataframe数据框timeframe_list = ['M1','M5','M15','M30','H1','H4','D1','W1','MN1']mt5_timeframe = mt5.TIMEFRAME_M1try:for item in timeframe_list:if timeframe == item:string = "mt5.TIMEFRAME_"+str(item)mt5_timeframe = eval(string)except:return "error of parameters input"# 将时区设置为UTCtimezone = pytz.timezone("Etc/UTC")# 以UTC时区创建'datetime'对象,以避免实现本地时区偏移year_from,month_from,day_from = datefrom.split(",")year_to,month_to,day_to = dateto.split(",")utc_from = datetime(int(year_from), int(month_from), int(day_from), tzinfo=timezone)utc_to = datetime(int(year_to), int(month_to), int(day_to), tzinfo=timezone)# 在UTC时区,获取数据rates = mt5.copy_rates_range("XAUUSD.E", mt5_timeframe, utc_from, utc_to)# 断开与客户端的连接mt5.shutdown()# 在新行显示所获得数据的每个元素# 创建Dataframerates_frame = pd.DataFrame(rates)# 将时间(以秒为单位)转换为日期时间格式rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')# 将时间设置为引索rates_frame = rates_frame.set_index(rates_frame['time'])rates_frame = rates_frame.drop(['time'],axis=1)return rates_frame
最后调用类,这里只展示获取数据方法,有兴趣的可以试试其他方法。
My_mt5 = MetaTrader("XAUUSD","xxxxxx","xxxxxx","xxxxxx") # 将xxxxxx换成你的账号、密码和服务名
df = My_mt5.get_data("2022,11,30","2022,12,1","M15")
df
MetaTrader5获取外汇历史数据相关推荐
- tushare pro 版本获取股票历史数据
最近研究程序化交易,需要使用股票历史数据.由于保存了所有股票历史数据,但是是截至到2018-12-28日,所以开始研究时对数据实时性要求不高,能实现功能即可. 经过近一个月的研究后, 即在 最基础表( ...
- python获取股票历史数据
各种股票软件,例如通达信.同花顺.大智慧,都可以实时查看股票价格和走势,做一些简单的选股和定量分析,但是如果你想做更复杂的分析,例如回归分析.关联分析等就有点捉襟见肘,所以最好能够获取股票历史及实时数 ...
- 【python量化】python通过新浪财经获取金融衍生品历史数据
写在前面 量化回测必不可少的就是历史数据了,一般要求数据精度比较高的方式就是从数据服务商处购买数据服务,它们一般会将历史数据进行整理,免去了我们需要数据清洗的过程,提供数据服务的机构有很多,如RQda ...
- 利用Python实现新冠疫情数据可视化(获取疫情历史数据,制作南丁格尔玫瑰图、疫情地图、动态疫情组合图、词云)
文章目录 前言 1.获取疫情历史数据 2.制作南丁格尔玫瑰图 2.1 全球各国确诊人数玫瑰图 2.2 全国各省市零新增天数玫瑰图 3.制作疫情地图 3.1全国各省市目前确诊总人数疫情地图 3.2全球各 ...
- Python获取股票历史数据和收盘数据的代码实现
http://casey.blog.51cto.com/9994043/1707905 各种股票软件,例如通达信.同花顺.大智慧,都可以实时查看股票价格和走势,做一些简单的选股和定量分析,但是如果你想 ...
- 获取股票历史数据和当前数据的API
关键字:股票,stock,API,接口 1.获取股票当前数据 新浪数据接口:http://hq.sinajs.cn/list={code}.{code}替换为股票代码,沪市股票代码加前缀sh,深市股票 ...
- 快速获取网站历史数据
通过访问公开网页,快速获取网站历史数据,并保存在excel或者csv文件中,为进一步处理提供方便. 一.结果 获取大乐透数据 读取网页成功! d:\yypy\yydlt2022425103330.xl ...
- 如何通过akshare获取ETF历史数据?
在学习量化交易过程中,获取历史数据是必备技能,获取的方式有很多, 下面就以akshare为例,进行操作演示: 描述:使用akshare获取ETF历史数据, 接口:https://gitee.com/m ...
- 获取股票历史数据(网易163行情接口)
获取股票历史数据(网易163行情接口) 获取股票历史数据,通过网易163接口来获取数据,可以获取指数数据,也可以获取股票数据 import pandas as pd#沪市前面加0,深市前面加1,比如0 ...
最新文章
- winform中的webbrowser里面操作html代码问题
- Kafka消息丢失、重复消费的解决方案
- Faster R-CNN 深入理解 改进方法汇总
- Java StringBuffer
- 计算机一级考试word题主要,2017年计算机一级考试word题及答案
- FreeMarker 日期转换
- redis整理の配置
- vue-awesome-swiper使用自动轮播和循环轮播不生效(loop和autoplay)
- 一文搞定十大排序算法(动画图解)
- Zookeeper集群搭建(多节点,单机伪集群,Docker集群)
- java retrofit2_Java Retrofit2使用
- html如何设定页面4秒后自动跳转,js定时三秒后自动跳转页面
- headers java_RabbitMQ四种Exchange类型之Headers(Java)
- 能耗在线监测系统在酒店节能管理中的应用
- 使用arduino驱动光驱步进电机
- Java批量高效压缩支持加解密支持所有压缩格式(Zip/7z/rar)
- [redis] 10 种数据结构详解
- 语义分割之边缘准确率提升
- 各类文件应该存在哪种数据库中
- 液晶屏背光板的分类及知识点
热门文章
- 怎样提高自己的内涵、气质
- vueui框架之elementUI--input输入框的属性 :fetch-suggestions=querySearchAsync
- 在shell中常用的特殊符号
- parsing XML document from class path resource [applicationContext.xml]…
- SqlServer视图索引用法
- 一款真正实现“天涯若比邻”的远程软件
- 最详细BIOS参数图解
- C# 获取QQ的状态 离线或在线
- 生不逢时的QQ公众号
- tmall.item.hscode.audit.results.query( 商品hscode信息审核状态查询接口 )