CCXT 是一个支持多交易所的加密货币交易库,它集成了 100 多个交易所的 API。
今天用这个库来获取 BTC 合约的历史数据。
其实不用 CCXT 而使用 requests 直接发送请求也可以获取到数据,但是为了保持后续代码的一致性,还是使用 CCXT 来获取数据。
使用 Anaconda 在界面安装,或者在命令行内输入:
pip install ccxt
DataFrame
:价格数据以 pandas 的 DataFrame
格式的文件进行保存,如果文件存在则说明存在之前获取的价格数据,否则新建一个空的 DataFrame
;DataFrame
为文件。上面这段代码展示了循环获取价格数据,直到结束的过程。
代码片段 1:用来确定获取的数据的起止时间范围,停止时间为当前时间。如果是在之前获取的数据后面追加数据,则开始时间是之前数据的最后一条的时间;如果是从头获取,则开始时间设定为 2019 年 10 月 1 日,这个时间是某安合约板块开通的时间。
代码片段 2:在起止时间范围内,循环获取数据,每次 1000 条,解析后追加到 data 变量中。如果获取的数据条数小于等于 1,则知道数据已经取空了,可以停止。
代码片段3:将新获取的数据和老数据进行合并,生成新的 DataFrame
。group().tail()
这一组语句的目的,是把新旧数据的重复数据进行去重,留下交易量 volume 高的那一条。产生重复的原因是,每次获取 1000 条数据后,简单进行了追加,没有和已有数据进行去重。
检查缺失数据的方法,是按起止时间范围,生成出每一条时间,和 DataFrame
中的每一条时间对比,看是否有差异。
检查重复数据,使用了 DataFrame
的 duplicated() 函数,它能直接找出重复项。
获取的 BTC 价格数据的 DataFrame
像上面这样。
整个代码中的主要部分,是数据循环获取。
需要着重处理的部分,是新旧数据的拼接和去重问题。
其他辅助部分包括加载旧数据和重复缺失检查。
本文位于搭建量化交易体系中的获取「数据」下的「获取币圈数据」部分。
如果需要完整代码文件,可以加我的微信「wuzaoquant」发给你。