使用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获取外汇历史数据相关推荐

  1. tushare pro 版本获取股票历史数据

    最近研究程序化交易,需要使用股票历史数据.由于保存了所有股票历史数据,但是是截至到2018-12-28日,所以开始研究时对数据实时性要求不高,能实现功能即可. 经过近一个月的研究后, 即在 最基础表( ...

  2. python获取股票历史数据

    各种股票软件,例如通达信.同花顺.大智慧,都可以实时查看股票价格和走势,做一些简单的选股和定量分析,但是如果你想做更复杂的分析,例如回归分析.关联分析等就有点捉襟见肘,所以最好能够获取股票历史及实时数 ...

  3. 【python量化】python通过新浪财经获取金融衍生品历史数据

    写在前面 量化回测必不可少的就是历史数据了,一般要求数据精度比较高的方式就是从数据服务商处购买数据服务,它们一般会将历史数据进行整理,免去了我们需要数据清洗的过程,提供数据服务的机构有很多,如RQda ...

  4. 利用Python实现新冠疫情数据可视化(获取疫情历史数据,制作南丁格尔玫瑰图、疫情地图、动态疫情组合图、词云)

    文章目录 前言 1.获取疫情历史数据 2.制作南丁格尔玫瑰图 2.1 全球各国确诊人数玫瑰图 2.2 全国各省市零新增天数玫瑰图 3.制作疫情地图 3.1全国各省市目前确诊总人数疫情地图 3.2全球各 ...

  5. Python获取股票历史数据和收盘数据的代码实现

    http://casey.blog.51cto.com/9994043/1707905 各种股票软件,例如通达信.同花顺.大智慧,都可以实时查看股票价格和走势,做一些简单的选股和定量分析,但是如果你想 ...

  6. 获取股票历史数据和当前数据的API

    关键字:股票,stock,API,接口 1.获取股票当前数据 新浪数据接口:http://hq.sinajs.cn/list={code}.{code}替换为股票代码,沪市股票代码加前缀sh,深市股票 ...

  7. 快速获取网站历史数据

    通过访问公开网页,快速获取网站历史数据,并保存在excel或者csv文件中,为进一步处理提供方便. 一.结果 获取大乐透数据 读取网页成功! d:\yypy\yydlt2022425103330.xl ...

  8. 如何通过akshare获取ETF历史数据?

    在学习量化交易过程中,获取历史数据是必备技能,获取的方式有很多, 下面就以akshare为例,进行操作演示: 描述:使用akshare获取ETF历史数据, 接口:https://gitee.com/m ...

  9. 获取股票历史数据(网易163行情接口)

    获取股票历史数据(网易163行情接口) 获取股票历史数据,通过网易163接口来获取数据,可以获取指数数据,也可以获取股票数据 import pandas as pd#沪市前面加0,深市前面加1,比如0 ...

最新文章

  1. winform中的webbrowser里面操作html代码问题
  2. Kafka消息丢失、重复消费的解决方案
  3. Faster R-CNN 深入理解 改进方法汇总
  4. Java StringBuffer
  5. 计算机一级考试word题主要,2017年计算机一级考试word题及答案
  6. FreeMarker 日期转换
  7. redis整理の配置
  8. vue-awesome-swiper使用自动轮播和循环轮播不生效(loop和autoplay)
  9. 一文搞定十大排序算法(动画图解)
  10. Zookeeper集群搭建(多节点,单机伪集群,Docker集群)
  11. java retrofit2_Java Retrofit2使用
  12. html如何设定页面4秒后自动跳转,js定时三秒后自动跳转页面
  13. headers java_RabbitMQ四种Exchange类型之Headers(Java)
  14. 能耗在线监测系统在酒店节能管理中的应用
  15. 使用arduino驱动光驱步进电机
  16. Java批量高效压缩支持加解密支持所有压缩格式(Zip/7z/rar)
  17. [redis] 10 种数据结构详解
  18. 语义分割之边缘准确率提升
  19. 各类文件应该存在哪种数据库中
  20. 液晶屏背光板的分类及知识点

热门文章

  1. 怎样提高自己的内涵、气质
  2. vueui框架之elementUI--input输入框的属性 :fetch-suggestions=querySearchAsync
  3. 在shell中常用的特殊符号
  4. parsing XML document from class path resource [applicationContext.xml]…
  5. SqlServer视图索引用法
  6. 一款真正实现“天涯若比邻”的远程软件
  7. 最详细BIOS参数图解
  8. C# 获取QQ的状态 离线或在线
  9. 生不逢时的QQ公众号
  10. tmall.item.hscode.audit.results.query( 商品hscode信息审核状态查询接口 )