博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【python量化】python通过新浪财经获取金融衍生品历史数据
阅读量:2051 次
发布时间:2019-04-28

本文共 2935 字,大约阅读时间需要 9 分钟。

写在前面

量化回测必不可少的就是历史数据了,一般要求数据精度比较高的方式就是从数据服务商处购买数据服务,它们一般会将历史数据进行整理,免去了我们需要数据清洗的过程,提供数据服务的机构有很多,如RQdata、Wind等。如果对数据的精度要求不高,周期也没有什么要求的话,可以通过一些免费的Api接口来获取,如tushare、yahoo以及新浪财经。由于之前用过新浪财经进行爬取历史数据,所以本文先整理和总结一下新浪财经获取历史数据的方式。

获取股票历史数据

股票支持的周期有5m、15m、30m、60m以及日线,新浪股票数据API接口如下:

5分钟:https://quotes.sina.cn/cn/api/json_v2.php/CN_MarketDataService.getKLineData?symbol=sh000001&scale=5&datalen=102315分钟:https://quotes.sina.cn/cn/api/json_v2.php/CN_MarketDataService.getKLineData?symbol=sh000001&scale=15&datalen=102330分钟:https://quotes.sina.cn/cn/api/json_v2.php/CN_MarketDataService.getKLineData?symbol=sh000001&scale=30&datalen=102360分钟:https://quotes.sina.cn/cn/api/json_v2.php/CN_MarketDataService.getKLineData?symbol=sh000001&scale=60&datalen=1023

其中symbol参数就是我们需要的品种的代码,scale是周期,datalen是获取数据的长度,最大就是1023。

获取期货历史数据

商品期货

商品期货支持的周期有5m、15m、30m、60m以及日线,先贴一下新浪期货的商品期货API接口:

5分钟:http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesMiniKLine5m?symbol=rb191015分钟:http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesMiniKLine15m?symbol=rb191030分钟:http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesMiniKLine30m?symbol=rb191060分钟:http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesMiniKLine60m?symbol=rb1910日K线:http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesDailyKLine?symbol=rb1910

在使用时,只需要把其中的rb1910换成需要的合约即可。得到的数据是以当前时刻为基准,往前推移一段时间的历史数据。

股指期货

股指期货支持的周期有5m、15m、30m、60m以及日线,先贴一下新浪财经的股指期货API接口:

5分钟:http://stock2.finance.sina.com.cn/futures/api/json.php/CffexFuturesService.getCffexFuturesMiniKLine5m?symbol=IF190815分钟:http://stock2.finance.sina.com.cn/futures/api/json.php/CffexFuturesService.getCffexFuturesMiniKLine15m?symbol=IF190830分钟:http://stock2.finance.sina.com.cn/futures/api/json.php/CffexFuturesService.getCffexFuturesMiniKLine30m?symbol=IF190860分钟:http://stock2.finance.sina.com.cn/futures/api/json.php/CffexFuturesService.getCffexFuturesMiniKLine60m?symbol=IF1908日线:http://stock2.finance.sina.com.cn/futures/api/json.php/CffexFuturesService.getCffexFuturesDailyKLine?symbol=IF1908

通过上面的股票、商品期货和股指期货接口得到的是json格式的数据,所以需要对得到的json数据进行解析,下面是获取历史数据的代码,如需要不同周期或者不同品种的数据只需要更改一下url即可,下面的代码以获取期货数据为例:

from urllib import requestimport jsondef get_data(id):    url_60m = 'http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesMiniKLine5m?symbol='    url = url_60m + id    req = request.Request(url)    rsp = request.urlopen(req)    res = rsp.read()    res_json = json.loads(res)    bar_list = []    res_json.reverse()    for line in res_json:        bar = {}        bar['date'] = line[0]        bar['open'] = float(line[1])        bar['high'] = float(line[2])        bar['low'] = float(line[3])        bar['close'] = float(line[4])        bar['vol'] = int(line[5])        bar_list.append(bar)    print(bar_list)if __name__ == '__main__':    get_data('rb1910')

转载地址:http://cdklf.baihongyu.com/

你可能感兴趣的文章
压缩html,可以在输出之前使用(转载)
查看>>
用户中心和discuz的ucenter共通
查看>>
使用opcache为你的网站加速(转载)
查看>>
git push命令每次都要输入用户名和密码的问题处理
查看>>
在网站添加qq客服功能
查看>>
英文技术文档阅读练习——php的早期版本
查看>>
"Notice: unserialize(): Error at offset xx of xxx bytes"错误的处理(转载)
查看>>
windows下c/c++环境开发搭建
查看>>
php中的declare是干什么的——转载
查看>>
三种常见的排序算法
查看>>
ueditor自定义菜单(转载)
查看>>
php页面meta头设置
查看>>
指针函数和函数指针的区别
查看>>
empty方法
查看>>
What does ‘composer dump-autoload’ do in Laravel?
查看>>
在win7系统中使用nodejs在WebStrom下配置socket.io
查看>>
caffe:用自己的图像数据训练模型
查看>>
ubuntu下clion中配置opencv的CMakeLists.txt
查看>>
什么是卷积 卷积有什么用
查看>>
有趣的机器学习概念纵览:从多元拟合,神经网络到深度学习,给每个感兴趣的人
查看>>