更多精彩内容,欢迎关注公众号:数量技术宅

数字货币历史数据的重要性

以BTC、ETH为代表数字货币作为一个新兴市场,散户参与度高、市场效率低,表现在价格上时常会走出高波动率,和一大波的趋势行情。相比较股票、期货市场,数字货币更容易开发出实盘盈利能力强的量化投资策略。

我们研究量化策略,拿到历史数据进行回测,是第一步。然而,主流的金融平台、三方回测平台,几乎都不提供数字货币的历史数据,例如万德并不提供OKEX、火币、币安等大交易所的数字货币历史数据。

此外,数字货币的数据,特别是高频数据,数据量极大,数字货币Tick数据,最高推送频率可达到每秒10笔,每笔150档买卖盘口,相比较股票市场3秒/笔,以及期货市场的0.5秒/笔的推送频率,可谓是快了很多。第三方平台也很难支持如此大规模、大容量历史数据的读取。因此,我们研究数字货币量化投资策略,第一步也是最关键的一步,需要自行收集数字货币的历史数据,如果收集的是Tick数据,则还要配备大容量的数据存储设备。

大周期(日线、小时)K线数据的获取

如果策略仅仅需要相对大周期的数字货币历史数据进行测试,幸运的是,我们可以从一个http://www.cryptodatadownload.com的地址免费的下载到大周期的历史K线数据。该网站提供了免费的日线、小时线的数字货币K线数据的下载,数据格式是很友好的csv格式,可以直接用Python的Pandas库读入进行下一步的处理。

网站覆盖了主流的欧美、亚太的数字货币交易所,例如CoinBase、Bitfinex、币安、OKEX等等。我们以Bitfinex为例,提供了BTC/USD、ETH/USD、LTC/USD、LTC/BTC、XRP/BTC这5个主流货币对的日线以及小时线的K线数据。

我们从Bitfinex交易所提供的数字货币品种中,随机选择一个BTC/USD的小时线数据下载,打开下载好的csv文件可以看到,数据包含了我们进行量化策略研究所需要的完整K线数据字段:时间、开盘价、最高价、最低价、收盘价以及成交量,我们再将该数据读入Pandas,就能进入下一步策略研发阶段了。

利用Python第三方API获取任意周期K线、Tick历史数据

如果在我们的策略中,要用到比小时K线更精确的数据颗粒,我们就需要调用API来开发数据接收程序了。我们先来看一个强大的Python第三方API:CCXT。CCXT是一个支持全球120余家主流数字货币交易所的jsp、python、php的三方库。在github搜索CCXT,即可查看、下载该三方库的源代码以及说明文档。

CCXT的安装,我们以技术宅大部分粉丝熟悉的Python为例,只需要在控制台或Anaconda中输入pip install ccxt(必要时更换更快速的安装源)即可完成安装。

安装后import ccxt,并print(ccxt.exchanges),如果控制台打印出了一系列ccxt支持的交易所的名称,说明此时ccxt已经成功安装。

我们使用ccxt,能够获取到三种类型的行情数据:OrderBook、PriceTicker、KLine。ccxt接口对于这三类数据,都采用Rest的获取方式,即请求1次、返回1条最新数据信息。

首先来看OrderBook(订单簿)的数据获取。通过CCXT的帮助文档,我们可以查到应该调用API中的哪个方法,来获取OrderBook,而OrderBook获取方法所返回的数据结构,是怎么样的。

通过API的帮助文档,我们知道应该使用fetch_order_book的方法,传入我们相要获取的数字货币币种symbol作为参数,而返回的是带有'bids'、‘asks’、'datatime'等关键数据字段的dict格式的数据。我们自行编写Python代码并print验证。

我们在测试代码时,获取huobipro(火币网)所有数字货币币种Orderbook数据并打印,从打印结果来看,我们成功取到了所有的Orderbook数据,并且返回的数据结构也与说明文档中一致。

接着来看PriceTicker (逐笔数据)的获取方式,同样先找到帮助文档对应的API函数、并阅读返回结构。

同样以火币pro为例,我们调用API文档所提示的函数(方法),获取BTC/USDT的Ticker数据。

对于Tick数据,由于包含的字段较多,返回的数据内容也相应较长,我们同样将其print出来以验证数据结构。

最后一种ccxt支持的数据获取类型是k线数据的获取,我们同样查询API文档,其对应的方法是fetch_ohlcv的方法。该方法传入两个参数,分别是所要获取数据的数字货币品种,以及获取数据所对应的K线周期。在获取到K线数据后,我们将其转换为pandas的DataFrame标准数据格式,并将最终的结果存入csv文件。后续的回测模块只需要读取该数据即可。

如果不存储csv文件,我们同样可以将所返回的数据打印出来,以此来验证我们使用接口的方法,是正确的。

利用交易所API,直接获取交易所推送数据

由于ccxt免费获取数据,只支持Rest的模式,即请求1次、返回1次对应的数据。如果我们请求数据的频率低于数据发送的频率,或是请求由于网络问题未送达ccxt,就可能造成行情数据的缺失,特别是收集高频数据的时候,数字货币最高0.1秒/笔的合约高频数据,该问题将无限放大。

因此,收集中、高频数据的最佳途径,是数字货币交易所提供的API。数字货币交易所的直连API,提供除Rest以外的另一种订阅模式:Websocket。Websocket模式只需要一次订阅,数据更新即推送,接收到的数据质量相比较Rest更高。

本文技术宅以OKEX交易所的Python API接口为例,OKEX的API说明可以参考交易所在github发布的帮助文档。

OKEX交易所的Websocket demo程序已经为我们定义好了基础的功能函数。我们对接API开发,只需要调用功能函数,确定需要订阅的行情内容,就可以立即用python接收到交易所推送的Websocket行情数据。我们以OKEX交易所Websocket接口,获取ETH-USDT的Tick数据为例,一次订阅,实现数据的不断推送,为检查数据推送功能是否正确,我们将接收到的Tick数据打印在控制台,当然有兴趣使用该数据做回测的同学,也可以将接收到的数据,落地到本地的数据库。

以上,就是我们本文分享的所有内容。总结一下,对于数字货币大周期的K线,我们可以采用三方网站直接下载获取,而对于小周期的K线、甚至是Tick数据,更推荐大家使用ccxt、或交易所API获取。

如果对本次技术宅分享的内容感兴趣或有疑问,欢迎评论区留言与小编交流。


“数量技术宅”往期分享干货

数量技术宅:【数量技术宅|量化投资策略系列分享】摆脱打工人命运之成熟交易者期货持仓跟随策略​zhuanlan.zhihu.com

数量技术宅:多周期共振量化交易策略​zhuanlan.zhihu.com

数量技术宅:为什么中证500(IC)是最适合长期做多的股票指数​zhuanlan.zhihu.com

数量技术宅:大宗商品现货数据不好拿?商品季节性难跟踪?Python爬虫一键解决没烦恼​zhuanlan.zhihu.com

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

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

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

快速获取csv数量_【数量技术宅|数据爬虫系列分享】如何获取免费的数字货币历史数据...相关推荐

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

    更多精彩内容,欢迎关注公众号:数量技术宅 #价差计算的"误区" 我们在测试两个或多个金融资产相互运算产生的策略信号时,免不了需要涉及将不同的价格时间序列,按照时间轴进行对齐,套利策 ...

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

    数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数 ...

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

    数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数 ...

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

    数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数 ...

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

    数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数 ...

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

    数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数 ...

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

    数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数 ...

  8. textfield获取其中内容_用户认知视角下的产品信息获取体验度量体系研究

    文 / 张凯 孙宁娜 崔学伟 ( 南京艺术学院 工业设计学院:江苏大学 艺术学院 ) DOI编码:10.3969/J.ISSN.1674-4187.2020.03.006 摘要:从用户认知视角出发,结 ...

  9. uniapp同步获取用户信息_表单设计是为了帮助用户获取信息,而不是填写

    之前有会员来信提到希望能够找一期时间聊一聊在应用中的表单设计,当时我爽快的答应了但却一直没有写. 其实没写的主要原因还是在于网络上已经有了很多关于表单设计的讨论,这些文章都提到了很多在表单设计中需要注 ...

最新文章

  1. linux下网卡安装
  2. Identity 验证,Authorize 特性
  3. 排序算法 | 堆排序,算法的图解、实现、复杂度和稳定性分析
  4. Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)
  5. python学习笔记:遍历目录
  6. 宁夏师范大学本科计算机理工,2019年宁夏师范学院区内二批普通本科理工类(录取905人,共16个专业)...
  7. mysql中字符串处理替换字符replace和连接字符串函数concat
  8. Cocos2d-x CCNotificationCenter 通知中心
  9. hdu Super Jumping
  10. php yii 控件分页,yii2.0-分页应用实例
  11. linux mount挂载
  12. 防不胜防 这些游戏被外挂活生生地毁了
  13. PC微信逆向:破解聊天记录文件!
  14. PDF转Word的免费软件推荐
  15. Excel技巧—快速插入空行技巧大集合
  16. Python3+Selenium3自动化测试 - 实例 - 登录QQ邮箱并自动发送邮件
  17. 《当代教育心理学》(第2版)学习笔记
  18. TMI 202107论文速递(IEEE Transactions on Medical Imaging)
  19. 经典时尚风格PS调色动作
  20. 【web开发 模拟ua调试】修改chrome浏览器的user agent

热门文章

  1. c++中求解非线性方程组_齐次线性方程组的基础解系的简便算法
  2. 【渝粤教育】国家开放大学2018年春季 8664-21T文书档案管理 参考试题
  3. 物联网和互联网的区别
  4. 高可用mysql笔记_MySQL笔记-高可用方案
  5. python语言中整型对应的英文_Python基本数据类型详细介绍(转)
  6. c语言 交互式电子白板案例,交互式电子白板教学案例
  7. cstring越界_CString和char*的转换
  8. python%20开发工具_20招让你的Python飞起来!
  9. Mysql高可用集群-解决MMM单点故障
  10. MySQL中left join、right join与inner join的区别