欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Tushare Pro接口介绍

程序员文章站 2022-06-27 20:30:32
Tushare库在数据获取方面一直受到金融分析人员的青睐,极大地减轻了他们在金融数据采集、清洗加工、存储过程的工作量,更加专注于策略和模型的研究与实现上。 ......

 

  tushare库在数据获取方面一直受到金融分析人员的青睐,极大地减轻了他们在金融数据采集、清洗加工、存储过程的工作量,更加专注于策略和模型的研究与实现上。由于tushare旧版运行了有3年之久,因此目前网上很多涉及财经和股票交易数据获取的文章使用的是旧版tushare。tushare社区现在主要维护新版本tushare pro,它的数据更稳定质量更高,而且从广度和深度上相对旧版本都做了更大的改进,可获取的数据内容扩大到了包括沪深股票行情、财务、市场参考、指数(含国外股指)、基金、期货、期权、宏观经济、行业经济、新闻资讯等财经数据,以及数字货币行情等区块链数据,为金融量化人员节省了大量宝贵时间。

  pro版本的总体来说使用是免费的,使用前需要登陆官网注册账号以获取token,注册地址: 。不过部分接口设置了权限,需要达到一定的积分才能使用。下面以获取常用的股票行情数据为例,展示下tushare pro获取数据的方法。

先介绍下stock_basic()接口,该接口获取上市的所有股票基础信息数据,包括股票代码、名称、上市日期、退市日期等。输入参数说明如下:
is_hs:是否沪深港通标的,n否、h沪股通、s深股通;
list_status:上市状态,l上市、d退市、p暂停上市;
exchange:交易所 sse上交所,szse深交所,hkex港交所。
注:关于输出参数大家可参照官网的介绍,此处不在赘述。

 

 1 pro = ts.pro_api(token)
 2 data = pro.stock_basic(exchange='', list_status='l', fields='ts_code,symbol,name,area,industry,list_date')
 3 print(data.head())
 4 """
 5      ts_code  symbol  name area industry list_date
 6 0  000001.sz  000001  平安银行   深圳       银行  19910403
 7 1  000002.sz  000002   万科a   深圳     全国地产  19910129
 8 2  000004.sz  000004  国农科技   深圳     生物制药  19910114
 9 3  000005.sz  000005  世纪星源   深圳     房产服务  19901210
10 4  000006.sz  000006  深振业a   深圳     区域地产  19920427
11 """
12 print(data.tail())
13 """
14 
15         ts_code  symbol  name area industry list_date
16 3585  603993.sh  603993  洛阳钼业   河南      小金属  20121009
17 3586  603996.sh  603996  中新科技   浙江     家用电器  20151222
18 3587  603997.sh  603997  继峰股份   浙江     汽车配件  20150302
19 3588  603998.sh  603998  方盛制药   湖南      中成药  20141205
20 3589  603999.sh  603999  读者传媒   甘肃      出版业  20151210
21 """

 

  再介绍下daily()接口,该接口获取股票行情数据,也是最常用的接口。输入参数包括股票代码ts_code、开始日期start_date、结束日期end_date。
#获取平安银行日行情数据

 

 1 pa=pro.daily(ts_code='000001.sz', start_date='20180101',
 2                end_date='20190106')
 3 
 4 print(pa.head())
 5 """
 6      ts_code trade_date  open     ...       pct_chg         vol       amount
 7 0  000001.sz   20190104  9.24     ...        5.0647  1481159.06  1422149.888
 8 1  000001.sz   20190103  9.18     ...        0.9793   415537.95   384457.707
 9 2  000001.sz   20190102  9.39     ...       -2.0256   539386.32   498695.109
10 3  000001.sz   20181228  9.31     ...        1.0776   576604.00   541571.004
11 4  000001.sz   20181227  9.45     ...       -0.2151   624593.27   586343.755
12 
13 [5 rows x 11 columns]
14 """
15 print(pa.tail())
16 """
17        ts_code trade_date   open     ...       pct_chg         vol       amount
18 241  000001.sz   20180108  13.25     ...         -2.56  2158620.81  2806099.169
19 242  000001.sz   20180105  13.21     ...          0.38  1210312.72  1603289.517
20 243  000001.sz   20180104  13.32     ...         -0.60  1854509.48  2454543.516
21 244  000001.sz   20180103  13.73     ...         -2.70  2962498.38  4006220.766
22 245  000001.sz   20180102  13.35     ...          3.01  2081592.55  2856543.822
23 
24 [5 rows x 11 columns]
25 """

  我们发现此处返回的dataframe格式数据的行索引为序号,而不是交易日期,并且数据按日期的排列顺序是从20190104到20180102,与专栏例程中的标准数据格式不稳和,我们需要调整下返回
的数据格式。

 1 pa.index = pd.to_datetime(pa.trade_date)
 2 pa.sort_index(inplace=true)
 3 pa.drop(axis=1, columns='trade_date', inplace=true)
 4 print(pa.head())
 5 """
 6               ts_code  open  high     ...       pct_chg         vol       amount
 7 trade_date                            ...                                       
 8 2019-01-04  000001.sz  9.24  9.82     ...        5.0647  1481159.06  1422149.888
 9 2019-01-03  000001.sz  9.18  9.33     ...        0.9793   415537.95   384457.707
10 2019-01-02  000001.sz  9.39  9.42     ...       -2.0256   539386.32   498695.109
11 2018-12-28  000001.sz  9.31  9.46     ...        1.0776   576604.00   541571.004
12 2018-12-27  000001.sz  9.45  9.49     ...       -0.2151   624593.27   586343.755
13 
14 [5 rows x 10 columns]
15 """
16 print(pa.tail())
17 """
18               ts_code   open     ...              vol       amount
19 trade_date                       ...                              
20 2018-01-08  000001.sz  13.25     ...       2158620.81  2806099.169
21 2018-01-05  000001.sz  13.21     ...       1210312.72  1603289.517
22 2018-01-04  000001.sz  13.32     ...       1854509.48  2454543.516
23 2018-01-03  000001.sz  13.73     ...       2962498.38  4006220.766
24 2018-01-02  000001.sz  13.35     ...       2081592.55  2856543.822
25 
26 [5 rows x 10 columns]
27 """

 

关于使用index_daily接口获取指数每日行情,该接口设置了使用权限,用户需要累积200积分才可以调取,积分积累的办法可以参照官网的介绍。如果未达到积分,也可以通过旧版接口获取指数行
情。这里我们通过旧版本获取并可视化国内上证综指、深证成指、沪深300、创业板指、上证50、中小板指数据。

 1 #获取常见股票指数行情
 2 indexs={'上证综指': 'sh','深证成指': 'sz',
 3          '沪深300': 'hs300','创业板指': 'cyb',
 4           '上证50': 'sz50', '中小板指': 'zxb'}
 5 
 6 index_data = {}
 7 for name, code in indexs.items():
 8     #df = pro.index_daily(ts_code=code)#需要200积分
 9     df = ts.get_hist_data(code,start='2019-01-01',end=datetime.datetime.now().strftime('%y-%m-%d'))
10     df.index = pd.to_datetime(df.index)
11     index_data[name] = df.sort_index()

Tushare Pro接口介绍