Python获取金融数据之Tushare

1
回复
7191
查看
[复制链接]

294

主题

20

回帖

1380

积分

专栏作家

积分
1380
来源: 2019-12-28 22:04:29 显示全部楼层 |阅读模式
做量化投资的第一步就是获取金融数据,之前我已经撰写了关于R语言获取金融数据的文章,今天我们就讨论一下python获取金融数据的方法,主要讲述如何通过tushare包获取金融数据。
TuShare是一个著名的免费、开源的python财经数据接口包。其官网主页为:TuShare -财经数据接口包。该接口包如今提供了大量的金融数据,涵盖了股票、基本面、宏观、新闻的等诸多类别数据(具体请自行查看官网),并还在不断更新中。目前股票的数据长度为三年,虽然有点短,但也可以基本满足量化初学者的回测需求。
使用教程
1.安装加载
安装tushare包很简单,我使用的是pycharm,可以用其中的包管理器安装。然后通过import加载:
  1. import tushare as ts;
复制代码
2.简单函数使用
下面我们用几个简单的函数查看tushare的基本功能,想要了解的更多的功能还是建议仔细阅读官方文档,里面将可提供的数据与调用函数写的的很清楚。
1.股票数据
我们主要还是应该掌握如何用tushare获取股票行情数据,使用的是ts.get_hist_data()函数,其
输入参数为:
  1. code:股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)
  2. start:开始日期,格式YYYY-MM-DD
  3. end:结束日期,格式YYYY-MM-DD
  4. ktype:数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
  5. retry_count:当网络异常后重试次数,默认为3
  6. pause:重试时停顿秒数,默认为0
复制代码
返回值说明:
  1. date:日期
  2. open:开盘价
  3. high:最高价
  4. close:收盘价
  5. low:最低价
  6. volume:成交量
  7. price_change:价格变动
  8. p_change:涨跌幅
  9. ma5:5日均价
  10. ma10:10日均价
  11. ma20:20日均价
  12. v_ma5:5日均量
  13. v_ma10:10日均量
  14. v_ma20:20日均量
  15. turnover:换手率[注:指数无此项]
复制代码
具体例子:
  1. ts.get_hist_data('600848')

  2. date       open    high   close     low     volume    p_change   ma5   
  3. 2012-01-11   6.880   7.380   7.060   6.880   14129.96     2.62   7.060
  4. 2012-01-12   7.050   7.100   6.980   6.900    7895.19    -1.13   7.020
  5. 2012-01-13   6.950   7.000   6.700   6.690    6611.87    -4.01   6.913
  6. 2012-01-16   6.680   6.750   6.510   6.480    2941.63    -2.84   6.813
  7. 2012-01-17   6.660   6.880   6.860   6.460    8642.57     5.38   6.822
  8. 2012-01-18   7.000   7.300   6.890   6.880   13075.40     0.44   6.788
  9. 2012-01-19   6.690   6.950   6.890   6.680    6117.32     0.00   6.770
  10. 2012-01-20   6.870   7.080   7.010   6.870    6813.09     1.74   6.832

  11. date         ma10    ma20      v_ma5     v_ma10     v_ma20     turnover

  12. 2012-01-11   7.060   7.060   14129.96   14129.96   14129.96     0.48
  13. 2012-01-12   7.020   7.020   11012.58   11012.58   11012.58     0.27
  14. 2012-01-13   6.913   6.913    9545.67    9545.67    9545.67     0.23
  15. 2012-01-16   6.813   6.813    7894.66    7894.66    7894.66     0.10
  16. 2012-01-17   6.822   6.822    8044.24    8044.24    8044.24     0.30
  17. 2012-01-18   6.833   6.833    7833.33    8882.77    8882.77     0.45
  18. 2012-01-19   6.841   6.841    7477.76    8487.71    8487.71     0.21
  19. 2012-01-20   6.863   6.863    7518.00    8278.38    8278.38     0.23
复制代码

也可以设定历史数据的起始时间:
  1. ts.get_hist_data('600848',start='2015-01-05',end='2015-01-09')

  2. date       open    high   close     low    volume   p_change   ma5    ma10 2015-01-05  11.160  11.390  11.260  10.890  46383.57     1.26  11.156  11.212
  3. 2015-01-06  11.130  11.660  11.610  11.030  59199.93     3.11  11.182  11.155
  4. 2015-01-07  11.580  11.990  11.920  11.480  86681.38     2.67  11.366  11.251
  5. 2015-01-08  11.700  11.920  11.670  11.640  56845.71    -2.10  11.516  11.349
  6. 2015-01-09  11.680  11.710  11.230  11.190  44851.56    -3.77  11.538  11.363
  7. date        ma20     v_ma5    v_ma10     v_ma20      turnover
  8. 2015-01-05  11.198  58648.75  68429.87   97141.81     1.59
  9. 2015-01-06  11.382  54854.38  63401.05   98686.98     2.03
  10. 2015-01-07  11.543  55049.74  61628.07  103010.58     2.97
  11. 2015-01-08  11.647  57268.99  61376.00  105823.50     1.95
  12. 2015-01-09  11.682  58792.43  60665.93  107924.27     1.54
复制代码

其他:
  1. ts.get_hist_data('600848', ktype='W') #获取周k线数据
  2. ts.get_hist_data('600848', ktype='M') #获取月k线数据
  3. ts.get_hist_data('600848', ktype='5') #获取5分钟k线数据
  4. ts.get_hist_data('600848', ktype='15') #获取15分钟k线数据
  5. ts.get_hist_data('600848', ktype='30') #获取30分钟k线数据
  6. ts.get_hist_data('600848', ktype='60') #获取60分钟k线数据
  7. ts.get_hist_data('sh')#获取上证指数k线数据,其它参数与个股一致,下同
  8. ts.get_hist_data('sz')#获取深圳成指k线数据
  9. ts.get_hist_data('hs300')#获取沪深300指数k线数据
  10. ts.get_hist_data('sz50')#获取上证50指数k线数据
  11. ts.get_hist_data('zxb')#获取中小板指数k线数据
  12. ts.get_hist_data('cyb')#获取创业板指数k线数据
复制代码

2.获取基本面数据
通过tushare我们还可以通过ts.get_stock_basics()获取基本面数据(返回结果部分展示):
  1. ts.get_stock_basics()

  2. code    name      industry  area     pe     outstanding    totals   totalAssets                                                                           
  3. 300563    N神宇  通信设备   江苏    26.73      2000.00     8000.00  4.216000e+04   
  4. 601882   海天精工     机床制造   浙江    26.83      5220.00    52200.00  1.877284e+05   
  5. 601880    大连港       港口   辽宁    76.40    773582.00  1289453.63  3.263012e+06   
  6. 300556   丝路视觉     软件服务   深圳   101.38      2780.00    11113.33  4.448248e+04   
  7. 600528   中铁二局     建筑施工   四川   149.34    145920.00   145920.00  5.709568e+06   
  8. 002495   佳隆股份       食品   广东   202.12     66611.13    93562.56  1.169174e+05   
  9. 600917   重庆燃气     供气供热   重庆    76.87     15600.00   155600.00  8.444600e+05   
  10. 002752   昇兴股份     广告包装   福建    75.14     12306.83    63000.00  2.387493e+05   
  11. 002346   柘中股份     电气设备   上海   643.97      7980.00    44157.53  2.263010e+05   
  12. 000680   山推股份     工程机械   山东     0.00    105694.97   124078.75  9.050701e+05  
复制代码

3.宏观数据
我们以居民消费指数为例,可以通过ts.get_cpi()函数获取(一次会获取322条,部分展示):
  1. print ts.get_cpi()

  2.        month     cpi
  3. 0    2016.10  102.10
  4. 1     2016.9  101.90
  5. 2     2016.8  101.34
  6. 3     2016.7  101.77
  7. 4     2016.6  101.88
  8. 5     2016.5  102.04
  9. 6     2016.4  102.33
  10. 7     2016.3  102.30
  11. 8     2016.2  102.28
  12. 9     2016.1  101.75
  13. 10   2015.12  101.64
  14. ...
复制代码
4.查看最近新闻
tushare包可以使用ts.get_latest_news()函数可以查看最近的新闻,会返回80条,篇幅原因我们这里只展现前面15条。我们可以看到,都是新浪财经的新闻数据。
  1. print ts.get_latest_news();

  2.    classify                         title         time  \
  3. 0        美股            “特朗普通胀”预期升温 美国国债下挫  11-14 23:10   
  4. 1        美股          特朗普:脸书、推特等社交媒体助我入主白宫  11-14 23:10   
  5. 2        证券                11月14日晚增减持每日速览  11-14 22:54   
  6. 3        美股          财经观察:日本为何急于推动TPP批准程序  11-14 22:54   
  7. 4        美股              新总统谜题:特朗普会连续加息吗?  11-14 22:52   
  8. 5        证券      神州专车财报遭质疑 增发100亿股东退出需50年  11-14 22:41   
  9. 6        证券           恒大闪电杀回马枪锁仓半年 戒短炒了吗?  11-14 22:38   
  10. 7      国内财经         楼继伟力推改革做派 或加快国有资本划拨社保  11-14 22:36   
  11. 8        美股            开盘:美股周一小幅高开 延续上周涨势  11-14 22:32   
  12. 9        美股            喜达屋创始人:当好总统就要走中庸之道  11-14 22:24   
  13. 10       证券              北京高华:将乐视网评级下调至中性  11-14 22:09   
  14. 11       美股             11月14日22点交易员正关注要闻  11-14 22:02   
  15. 12       美股           摩根大通:新兴市场股市、货币的前景悲观  11-14 21:55   
  16. 13     国内财经        人民日报刊文谈全面深化改革这三年:啃下硬骨头  11-14 21:46   
  17. 14       证券       泽平宏观:经济L型延续 地产销量回落投资超预期  11-14 21:43   
  18. 15       证券       黄燕铭等五大券商大佬告诉你 2017年买点啥?  11-14 21:41   

  19. url  
  20. 0   http://finance.sina.com.cn/stock/usstock/c/201...  
  21. 1   http://finance.sina.com.cn/stock/usstock/c/201...  
  22. 2   http://finance.sina.com.cn/stock/y/2016-11-14/...  
  23. 3   http://finance.sina.com.cn/stock/usstock/c/201...  
  24. 4   http://finance.sina.com.cn/stock/usstock/c/201...  
  25. 5   http://finance.sina.com.cn/stock/marketresearc...  
  26. 6   http://finance.sina.com.cn/stock/marketresearc...  
  27. 7   http://finance.sina.com.cn/china/gncj/2016-11-...  
  28. 8   http://finance.sina.com.cn/stock/usstock/c/201...  
  29. 9   http://finance.sina.com.cn/stock/usstock/c/201...  
  30. 10  http://finance.sina.com.cn/stock/s/2016-11-14/...  
  31. 11  http://finance.sina.com.cn/stock/usstock/c/201...  
  32. 12  http://finance.sina.com.cn/stock/usstock/c/201...  
  33. 13  http://finance.sina.com.cn/china/gncj/2016-11-...  
  34. 14  http://finance.sina.com.cn/stock/marketresearc...  
  35. 15  http://finance.sina.com.cn/stock/marketresearc...  
复制代码
timg.jpg
结语
由于文章篇幅有限,故而只能做一个简单的概述,其是tushare包还有着丰富的功能,等待着大家去开发,希望大家可以多去看官网文档,养成良好的学习习惯,不断进步。
回复

使用道具 举报

196

主题

140

回帖

1444

积分

管理员

积分
1444
2019-12-29 07:59:00 来自手机 显示全部楼层
感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册
关注微信