数字货币回测框架准备篇:下载与清洗某安全量历史数据

数字货币回测框架准备篇:下载与清洗某安全量历史数据

更多精彩内容, 欢迎关注公众号:数量技术宅,也可添加技术宅 个人微信号:sljsz01,与我交流。

数据:回测到实盘的第一步

我们实现一个完整的量化投资策略,一般要经历历史数据准备、数据清洗、回测建模、实盘交易系统实现这4个步骤。其中,完整、高质量的历史数据,是我们整个流程的第一步。有了足够长时间、数据质量足够好的历史数据,我们才能将自己的想法形成的策略,通过回测在历史数据上进行验证,进而将通过历史回测检验的交易策略应用到实盘。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

对于国内的股票、期货市场数据,我们可以通过许多三方的数据接口、数据商获取到高质量的历史数据,而对于数字货币市场,由于某些原因限制,我们很难获取到三方提供的数据。因此,寻找到一个我们可以免费获取的、数据时间足够长的、数据类型足够丰富的历史数据源,是我们研究数字货币策略,从回测到实盘的关键的第一步。

历史数据概览

我们为大家找到了完全符合上述要求的免费历史数据源,来自某安,其同时也是主流投资者交易的最多的平台,方便我们对接回测和实盘交易,即我们通过该交易平台历史数据的研究、回测得到的策略,可以直接用于该平台的实盘交易。

可以看到,其提供了丰富的历史数据种类,包括K线数据、成交数据、指数数据、Orderbook数据等,同时数据也覆盖了现货、USDT本位合约、币本位合约的全品类历史标的。不论是研究单一标的,还是研究套利(合约、现货)都可以从该数据源获取适合的数据。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

数字货币回测框架准备篇:下载与清洗某安全量历史数据

我们看到上图的右侧是有下载按钮的,也就是每一种数据类型,币种类型,我们都可以点击进入对应的下载链接进行下载,我们以K线数据为例,点进K-line界面的USD – M FuturesData右侧的下载图表,实际上进入的是币安存放历史数据的ftp,进入后的数据展示界面如下。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

可以看到该界面是按照币种来进行排布的,我们随意点击进入一个币种,以ADAUSDT为例。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

ADAUSDT目录下是该币种的各个K线周期,每个K线周期对应的是不同周期下的K线数据。平台提供的K线周期很全,从1分钟K到日K级别的各个周期都有。假如我们点击进入1m/的这个链接,将显示如下页面。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

可以看到这个页面下对应的是ADAUSDT合约每一天的1分钟K线数据,其中每天的数据都是以一个zip文件进行了打包。除了数据文件,还有一个日期对应的同名CHECKSUM文件,是在下载后帮忙我们检查下载数据完整性的,有了这个CHECKSUM文件,我们就可以避免在下载过程中出现的数据丢失而导致后续回测中出现数据方面的问题。

除了我们举例看到的ADAUSDT,其他的币种,也是按照同样的方式,在数据FTP上进行排列存放的,我们随机再看一个币种SHIBUSDT,也是同样的格式。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

当然,除了按日排布存储的历史数据外,我们还可以下载到按月排布的历史数据,即某个币种某一个月的历史数据,统一存放在一个zip文件中。平台提供了多种存储形式,供我们选择。按月排布的历史数据,其优点是我们下载过程中所需要下载处理的文件数量显著变少,而其缺点是数据每月月末才更新当月数据,某些需要滚动回测调优参数的策略,月度数据会稍显滞后。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

以上我们看到的数据展示,都可以点击页面的数据链接直接下载。比如我们点击上图的最后一行1000SHIBUSDT-1m-2022-01.zip,就可以将SHIBUSDT在2022年1月的1分钟K线下载下来。如果我们仅仅获取某个币种很短一段时间的历史数据,上述手工下载的方式是可行的,但如果我们需要大规模回测多币种、多周期的历史数据,显然我们需要的是全自动的、更高效的数据下载方式。

如何调用API下载历史数据

幸运的是,我们可以调用历史数据下载的API接口,来完成大规模、批量下载历史数据的工作。根据上述截图可以发现,该历史数据在ftp上的文件分布呈现出很强的规律性,即以monthly、daily区分月度、日度数据,以klines等标签区分数据是k线数据或成交数据或Orderbook数据,接下来再以币种、K线周期划分不同的数据集。

因此,我们只需要调用API接口,按照文件夹的排布规模,下载对应所需的数据即可。我们以下载所有USDT本位合约的K线数据为例。首先,我们调用get_all_symbols接口获取所有的USDT本位合约的名称。由于USDT本位合约还有BUSD为货币基准的币种合约,为减少下载数据量,我们仅选取USDT为货币基准的U本位合约。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

接下来,我们就可以下载所有选中合约的K线数据了,我们选择的是下载全USDT币种、全时间、所有周期的K线数据,因此在对应的配置文件中,设置好对应的时间范围、K线周期范围。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

第三步,我们调用API中的数据下载方法,到对应的文件夹名称下获取我们所需的K线数据。此处的代码示例,我们获取的是U本位合约下、按月度发布的全量K线数据,与此同时,我们还下载了对应的checksum文件,为数据解压校验做准备。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

第四步,开始运行程序,在运行界面我们可以看到,对于上一次运行已经下载的文件,程序不会重复下载,只会下载增量部分,与此同时,如果该请求时间对应的目录或文件不存在,系统也会发出提示。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

第五步,查看下载的文件。以下是我们下载到本地,其中一个币种1INCHUSDT的数据样例。可以说,批量下载就是一个把服务器上的文件结构搬运到本地的过程。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

数字货币回测框架准备篇:下载与清洗某安全量历史数据

当然,除了USDT本位合约的K线数据,我们还可以下载现货K线数据,以及下载任意资产类别的成交数据等等,例如下载按日度整理的现货的成交数据,可以通过以下代码完成。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

清洗历史数据准备回测

数据清洗第一步工作:解压缩。

对于下载的数据结果,我们可以看到,不论是1分钟周期,还是其他周期,都是按照月份放在一个个zip压缩文件夹内,如上一小节的本地截图所示。我们当然可以选择手工一个个解压缩,但最快的方式还是调用Python的zipfile工具进行批量的解压缩。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

我们以解压全币种1分钟数据为例,打开其中一个币种1INCHUSDT的解压文件,看到的是按月划分的csv数据文件。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

数据清洗第二步工作:数据预处理。

我们再打开第一个1INCHUSDT-1m-2020-12.csv的文件,会发现该数据的两个问题,首先是数据没有列名称,部分列数据我们无法推知其含义;其次是数据的时间戳列是用unix时间戳的形式记录的,对于回测不太方便,最好将其转化为普通的日期、时间。除此之外,由于数据是按月划分的,我们最好将其进行汇总,方便回测时能一次读入。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

对于第一个列名问题,我们找到官方的说明文档,上面有关于每个列字段含义的说明。我们可以根据上述字段说明对于数据列名进行重命名。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

数字货币回测框架准备篇:下载与清洗某安全量历史数据

因此,数据预处理部分的工作就是为了解决上述3个问题:列名、时间戳格式、以及数据合并。我们同样使用Python对数据进行预处理,最终得到的回测准备数据格式如下。每个币种一个文件,增加了正确的列名,并在最后两列增加了正确的日期和分钟时间。

数字货币回测框架准备篇:下载与清洗某安全量历史数据

数字货币回测框架准备篇:下载与清洗某安全量历史数据

数字货币回测框架准备篇:下载与清洗某安全量历史数据

往期干货分享推荐阅读

数字货币稳定币对网格做市策略

数字货币资金费策略

分享一个年化15%以上的无风险套利机会

网格交易系统开发

通过深度学习股价截面数据分析和预测股票价格

Omega System Trading and Development Club内部分享策略Easylanguage源码

一个真实数据集的完整机器学习解决方案(下)

一个真实数据集的完整机器学习解决方案(上)

如何使用交易开拓者(TB)开发数字货币策略 ;

股指期货高频数据机器学习预测

如何使用TradingView(TV)回测数字货币交易策略

如何投资股票型基金?什么时间买?买什么?

【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略

AMA指标原作者Perry Kaufman 100+套交易策略源码分享

【 数量技术宅 | 期权系列分享】期权策略的”独孤九剑”

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略

如何获取免费的数字货币历史数据

【数量技术宅|量化投资策略系列分享】多周期共振交易策略

【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数

商品现货数据不好拿?商品季节性难跟踪?一键解决没烦恼的Python爬虫分享

【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品

【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略

【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫

Original: https://www.cnblogs.com/sljsz/p/16406375.html
Author: 数量技术宅
Title: 数字货币回测框架准备篇:下载与清洗某安全量历史数据

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/564150/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Pytest学习-YAML

    一、YAML YAML语言的本质是一种通用的数据串行化格式 二、适用场景 在脚本语言中使用,实现简单,解析成本低。 [En] Used in scripting language,…

    Python 2023年5月24日
    056
  • Python之Numpy扩展包学习与使用——数组数据处理

    写在前面:👀python小白,关于numpy包的学习总结🌲希望大家多多支持,欢迎评论交流🍀 Numpy是一个高性能科学计算与数据分析的Python软件包,也是很多其他Python包…

    Python 2023年8月27日
    075
  • 图像去雾/图像去雨(matlab/python)

    看到许多小伙伴想进行图像去雨,图像去雾的任务,由于以前进行了此类项目,所以在此书写博客进行交流。代码获取 ; 去雨前言 从静止图像中去除雨水是一项复杂且具有挑战性的任务。雨滴仅影响…

    Python 2023年8月2日
    0109
  • Django 学习小记

    附上修改后的源码地址 Django特点 完善的文档:经过 10 余年的发展和完善,Django 官方提供了完善的在线文档,为开发者解决问题提供支持。集成 ORM 组件:Django…

    Python 2023年8月6日
    040
  • 在IIS中部署Flask应用

    安装”CGI”,打开控制面板,在”程序和功能”中点击”启用或关闭Windows功能”,在弹出的界面中选中&#…

    Python 2023年8月11日
    031
  • XSS、CSRF、CORS简介

    一 XSS 二 CSRF 跨站请求伪造(CSRF)是一种冒充受信任用户,向服务器发送非预期请求的攻击方式。 三 CORS CORS (Cross-Origin Resource S…

    Python 2023年8月5日
    046
  • FAQ 问答系统(新冠病毒/寝室)《《让电脑理解我说的话》》——更详细的了解和掌握自然语言知识(不再害怕面试~~~)=——-= 文章中含有源码分析

    💋💋💋 如何让电脑听懂我说的话,或者说看懂我输入的文字,这时候自然语言处理该上台了。 🎁 背景 在当下人力费用还是挺贵的,但是我们只要将所有的问题和答案放在后台或者数据库中,当需要…

    Python 2023年8月3日
    066
  • 数据结构4 :Series(Pandas库)

    Pandas 的数据结构主要是:Series(一维数组),DataFrame(二维数组)。Series是由索引和内容组成,索引在左边,内容在右边,如 ‘索引&#8217…

    Python 2023年8月8日
    074
  • scrapy 继承ImagesPipeline类保存图片,解决对相同url图片地址发起重复请求方案

    我们在网站爬取图片时,会遇到图片url的地址相同,但是图片不一样的情况,使用requests.get和urllib.request.urlretrieve的方法是可以重复下载的,但…

    Python 2023年10月3日
    058
  • Django将多个app解析到不同的域名(二级域名)并共用数据库

    目标对于一个django项目,需要开发另外域名的版本环境ubuntu nginx + uwsgi 新建一个django项目,然后利用nginx和uwsgi解析到我需要的二级域名就好…

    Python 2023年8月5日
    061
  • Python 实现Tracert追踪TTL值

    Tracert 命令跟踪路由原理是IP路由每经过一个路由节点TTL值会减一,假设TTL值=0时数据包还没有到达目标主机,那么该路由则会回复给目标主机一个数据包不可达,由此我们就可以…

    Python 2023年10月20日
    036
  • Flask框架——蓝图

    在上篇文章中,我们学习了Flask框架——模板复用(继承、包含、宏),这篇文章我们来学习Flask框架——蓝图。 随着Flask项目越来越复杂,把所有视图函数放在一个应用文件中会很…

    Python 2023年8月11日
    075
  • 又是樱花盛开的季节,使用小乌龟来画一颗樱花树吧

    【阅读全文】 后来,唐李钰曾说过,樱花在春天会昏昏欲睡,在秋千架下又会回来。滴落的暗斜的月亮晚了,花儿开在枝头。当樱花落下时,春天就结束了,当它回到秋千下的时候。天空中的斜月已经晚…

    Python 2023年5月24日
    072
  • Django日志详解

    1. 叙述 Django对于日志输出的信息是很完善的,request的信息,setting配置,trackback的信息,一应俱全,足够我们调试了。但是在线上环境,如果让用户看到这…

    Python 2023年8月4日
    052
  • Python函数/动态参数/关键字参数

    1.函数 #函数语法: #函数名规范:小谢字母开头,不同字母下划线隔开(字母数字下划线) #def 函数名(): #函数体:希望函数做的事情 1.1.无参函数 #无参函数 def …

    Python 2023年10月30日
    034
  • pytest

    pytest学习总结 1、介绍 单元测试框架——软件开发过程中针对软件的最小单位(函数、方法)进行正确性的检查测试Java测试框架:junit和testngpython测试框架:u…

    Python 2023年9月14日
    034
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球