Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。当然,如果您习惯了用Excel或者关系型数据库做分析,您也可以通过Tushare的数据存储功能,将数据全部保存到本地后进行分析。应一些用户的请求,从0.2.5版本开始,Tushare同时兼容Python 2.x和Python 3.x,对部分代码进行了重构,并优化了一些算法,确保数据获取的高效和稳定。
Tushare从发布到现在,已经帮助很多用户在数据方面降低了工作压力,同时也得到很多用户的反馈,Tushare将一如既往的用免费和开源的形式分享出来,希望对有需求的人带来一些帮助。如果您觉得Tushare好用并有所收获,请通过微博、微信或者网站博客的方式分享出去,让更多的人了解和使用它,使它能在大家的使用过程中逐步得到改进和提升。Tushare还在不断的完善和优化,后期将逐步增加港股、期货、外汇和基金方面的数据,所以,您的支持和肯定才是Tushare坚持下去的动力
获取个股历史交易数据(包括均线数据),可以通过参数设置获取日k线、周k线、月k线,以及5分钟、15分钟、30分钟和60分钟k线数据。本接口只能获取近3年的日线数据,适合搭配均线数据进行选股和分析,如果需要全部历史数据,请调用下一个接口get_h_data()。
参数说明:
- code:股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)
- start:开始日期,格式YYYY-MM-DD
- end:结束日期,格式YYYY-MM-DD
- ktype:数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
- retry_count:当网络异常后重试次数,默认为3
- pause:重试时停顿秒数,默认为0
返回值说明:
- date:日期
- open:开盘价
- high:最高价
- close:收盘价
- low:最低价
- volume:成交量
- price_change:价格变动
- p_change:涨跌幅
- ma5:5日均价
- ma10:10日均价
- ma20:20日均价
- v_ma5:5日均量
- v_ma10:10日均量
- v_ma20:20日均量
- turnover:换手率[注:指数无此项]
调用方法:
import tushare as ts
ts.get_hist_data(‘600848‘) #一次性获取全部日k线数据
结果显示:
open high close low volume p_change ma5 date
2012-01-11 6.880 7.380 7.060 6.880 14129.96 2.62 7.060
2012-01-12 7.050 7.100 6.980 6.900 7895.19 -1.13 7.020
2012-01-13 6.950 7.000 6.700 6.690 6611.87 -4.01 6.913
2012-01-16 6.680 6.750 6.510 6.480 2941.63 -2.84 6.813
2012-01-17 6.660 6.880 6.860 6.460 8642.57 5.38 6.822
2012-01-18 7.000 7.300 6.890 6.880 13075.40 0.44 6.788
2012-01-19 6.690 6.950 6.890 6.680 6117.32 0.00 6.770
2012-01-20 6.870 7.080 7.010 6.870 6813.09 1.74 6.832
ma10 ma20 v_ma5 v_ma10 v_ma20 turnover
date
2012-01-11 7.060 7.060 14129.96 14129.96 14129.96 0.48
2012-01-12 7.020 7.020 11012.58 11012.58 11012.58 0.27
2012-01-13 6.913 6.913 9545.67 9545.67 9545.67 0.23
2012-01-16 6.813 6.813 7894.66 7894.66 7894.66 0.10
2012-01-17 6.822 6.822 8044.24 8044.24 8044.24 0.30
2012-01-18 6.833 6.833 7833.33 8882.77 8882.77 0.45
2012-01-19 6.841 6.841 7477.76 8487.71 8487.71 0.21
2012-01-20 6.863 6.863 7518.00 8278.38 8278.38 0.23
设定历史数据的时间:
ts.get_hist_data(‘600848‘,start=‘2015-01-05‘,end=‘2015-01-09‘)
open high close low volume p_change ma5 ma10 date
2015-01-05 11.160 11.390 11.260 10.890 46383.57 1.26 11.156 11.212
2015-01-06 11.130 11.660 11.610 11.030 59199.93 3.11 11.182 11.155
2015-01-07 11.580 11.990 11.920 11.480 86681.38 2.67 11.366 11.251
2015-01-08 11.700 11.920 11.670 11.640 56845.71 -2.10 11.516 11.349
2015-01-09 11.680 11.710 11.230 11.190 44851.56 -3.77 11.538 11.363
ma20 v_ma5 v_ma10 v_ma20 turnover
date
2015-01-05 11.198 58648.75 68429.87 97141.81 1.59
2015-01-06 11.382 54854.38 63401.05 98686.98 2.03
2015-01-07 11.543 55049.74 61628.07 103010.58 2.97
2015-01-08 11.647 57268.99 61376.00 105823.50 1.95
2015-01-09 11.682 58792.43 60665.93 107924.27 1.54
其他:
ts.get_hist_data(‘600848‘, ktype=‘W‘) #获取周k线数据
ts.get_hist_data(‘600848‘, ktype=‘M‘) #获取月k线数据
ts.get_hist_data(‘600848‘, ktype=‘5‘) #获取5分钟k线数据
ts.get_hist_data(‘600848‘, ktype=‘15‘) #获取15分钟k线数据
ts.get_hist_data(‘600848‘, ktype=‘30‘) #获取30分钟k线数据
ts.get_hist_data(‘600848‘, ktype=‘60‘) #获取60分钟k线数据
ts.get_hist_data(‘sh‘)#获取上证指数k线数据,其它参数与个股一致,下同
ts.get_hist_data(‘sz‘)#获取深圳成指k线数据
ts.get_hist_data(‘hs300‘)#获取沪深300指数k线数据
ts.get_hist_data(‘sz50‘)#获取上证50指数k线数据
ts.get_hist_data(‘zxb‘)#获取中小板指数k线数据
ts.get_hist_data(‘cyb‘)#获取创业板指数k线数据
复权数据
获取历史复权数据,分为前复权和后复权数据,接口提供股票上市以来所有历史数据,默认为前复权。如果不设定开始和结束日期,则返回近一年的复权数据,从性能上考虑,推荐设定开始日期和结束日期,而且最好不要超过三年以上,获取全部历史数据,请分年段分步获取,取到数据后,请及时在本地存储。获取个股首个上市日期,请参考以下方法:
df = ts.get_stock_basics()
date = df.ix[‘600848‘][‘timeToMarket‘] #上市日期YYYYMMDD
本接口还提供大盘指数的全部历史数据,调用时,请务必设定index参数为True,由于大盘指数不存在复权的问题,故可以忽略autype参数。
ts.get_h_data(‘002337‘) #前复权
ts.get_h_data(‘002337‘, autype=‘hfq‘) #后复权
ts.get_h_data(‘002337‘, autype=None) #不复权
ts.get_h_data(‘002337‘, start=‘2015-01-01‘, end=‘2015-03-16‘) #两个日期之间的前复权数据
ts.get_h_data(‘399106‘, index=True) #深圳综合指数
参数说明:
- code:string,股票代码 e.g. 600848
- start:string,开始日期 format:YYYY-MM-DD 为空时取当前日期
- end:string,结束日期 format:YYYY-MM-DD 为空时取去年今日
- autype:string,复权类型,qfq-前复权 hfq-后复权 None-不复权,默认为qfq
- index:Boolean,是否是大盘指数,默认为False
- retry_count : int, 默认3,如遇网络等问题重复执行的次数
- pause : int, 默认 0,重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
返回值说明:
- date : 交易日期 (index)
- open : 开盘价
- high : 最高价
- close : 收盘价
- low : 最低价
- volume : 成交量
- amount : 成交金额
结果:
open high close low volume amount
date
2015-03-16 13.27 13.45 13.39 13.00 81212976 1073862784
2015-03-13 13.04 13.38 13.37 13.00 40548836 532739744
2015-03-12 13.29 13.95 13.28 12.96 71505720 962979904
2015-03-11 13.35 13.48 13.15 13.00 59110248 780300736
2015-03-10 13.16 13.67 13.59 12.72 105753088 1393819776
2015-03-09 13.77 14.73 14.13 13.70 139091552 1994454656
2015-03-06 12.17 13.39 13.39 12.17 89486704 1167752960
2015-03-05 12.79 12.80 12.17 12.08 26040832 966927360
2015-03-04 13.96 13.96 13.30 12.58 26636174 1060270720
2015-03-03 12.17 13.10 13.10 12.05 19290366 733336768
实时行情
一次性获取当前交易所有股票的行情数据(如果是节假日,即为上一交易日,结果显示速度取决于网速)
import tushare as ts
ts.get_today_all()
返回值说明:
- code:代码
- name:名称
- changepercent:涨跌幅
- trade:现价
- open:开盘价
- high:最高价
- low:最低价
- settlement:昨日收盘价
- volume:成交量
- turnoverratio:换手率
- amount:成交量
- per:市盈率
- pb:市净率
- mktcap:总市值
- nmc:流通市值
结果显示:
code name changepercent trade open high low settlement 0 002738 中矿资源 10.023 19.32 19.32 19.32 19.32 17.56
1 300410 正业科技 10.022 25.03 25.03 25.03 25.03 22.75
2 002736 国信证券 10.013 16.37 16.37 16.37 16.37 14.88
3 300412 迦南科技 10.010 31.54 31.54 31.54 31.54 28.67
4 300411 金盾股份 10.007 29.68 29.68 29.68 29.68 26.98
5 603636 南威软件 10.006 38.15 38.15 38.15 38.15 34.68
6 002664 信质电机 10.004 30.68 29.00 30.68 28.30 27.89
7 300367 东方网力 10.004 86.76 78.00 86.76 77.87 78.87
8 601299 中国北车 10.000 11.44 11.44 11.44 11.29 10.40
9 601880 大连港 10.000 5.72 5.34 5.72 5.22 5.20
volume turnoverratio
0 375100 1.25033
1 85800 0.57200
2 1058925 0.08824
3 69400 0.51791
4 252220 1.26110
5 1374630 5.49852
6 6448748 9.32700
7 2025030 6.88669
8 433453523 4.28056
9 323469835 9.61735
历史分笔
获取个股以往交易历史的分笔数据明细,通过分析分笔数据,可以大致判断资金的进出情况。在使用过程中,对于获取股票某一阶段的历史分笔数据,需要通过参入交易日参数并append到一个DataFrame或者直接append到本地同一个文件里。历史分笔接口只能获取当前交易日之前的数据,当日分笔历史数据请调用get_today_ticks()接口或者在当日18点后通过本接口获取。
参数说明:
- code:股票代码,即6位数字代码
- date:日期,格式YYYY-MM-DD
- retry_count : int, 默认3,如遇网络等问题重复执行的次数
- pause : int, 默认 0,重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
调用方法:
import tushare as ts
df = ts.get_tick_data(‘600848‘,date=‘2014-01-09‘)
df.head(10)
返回值说明:
- time:时间
- price:成交价格
- change:价格变动
- volume:成交手
- amount:成交金额(元)
- type:买卖类型【买盘、卖盘、中性盘】
结果显示:
time price change volume amount type
0 15:00:00 6.05 -- 8 4840 卖盘
1 14:59:55 6.05 -- 50 30250 卖盘
2 14:59:35 6.05 -- 20 12100 卖盘
3 14:59:30 6.05 -0.01 165 99825 卖盘
4 14:59:20 6.06 0.01 4 2424 买盘
5 14:59:05 6.05 -0.01 2 1210 卖盘
6 14:58:55 6.06 -- 4 2424 买盘
7 14:58:45 6.06 -- 2 1212 买盘
8 14:58:35 6.06 0.01 2 1212 买盘
9 14:58:25 6.05 -0.01 20 12100 卖盘
实时分笔
获取实时分笔数据,可以实时取得股票当前报价和成交信息,其中一种场景是,写一个python定时程序来调用本接口(可两三秒执行一次,性能与行情软件基本一致),然后通过DataFrame的矩阵计算实现交易监控,可实时监测交易量和价格的变化。
参数说明:
- symbols:6位数字股票代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板) 可输入的类型:str、list、set或者pandas的Series对象
调用方法:
import tushare as ts
df = ts.get_realtime_quotes(‘000581‘) #Single stock symbol
df[[‘code‘,‘name‘,‘price‘,‘bid‘,‘ask‘,‘volume‘,‘amount‘,‘time‘]]
结果显示:
code name price bid ask volume amount time
0 000581 威孚高科 31.15 31.14 31.15 8183020 253494991.16 11:30:36
返回值说明:
0:name,股票名字
1:open,今日开盘价
2:pre_close,昨日收盘价
3:price,当前价格
4:high,今日最高价
5:low,今日最低价
6:bid,竞买价,即“买一”报价
7:ask,竞卖价,即“卖一”报价
8:volume,成交量 maybe you need do volume/100
9:amount,成交金额(元 CNY)
10:b1_v,委买一(笔数 bid volume)
11:b1_p,委买一(价格 bid price)
12:b2_v,“买二”
13:b2_p,“买二”
14:b3_v,“买三”
15:b3_p,“买三”
16:b4_v,“买四”
17:b4_p,“买四”
18:b5_v,“买五”
19:b5_p,“买五”
20:a1_v,委卖一(笔数 ask volume)
21:a1_p,委卖一(价格 ask price)
...
30:date,日期;
31:time,时间;
请求多个股票方法(一次最好不要超过30个):
#symbols from a list
ts.get_realtime_quotes([‘600848‘,‘000980‘,‘000981‘])
#from a Series
ts.get_realtime_quotes(df[‘code‘].tail(10)) #一次获取10个股票的实时分笔数据
获取实时指数:
#上证指数
ts.get_realtime_quotes(‘sh‘)
#上证指数 深圳成指 沪深300指数 上证50 中小板 创业板
ts.get_realtime_quotes([‘sh‘,‘sz‘,‘hs300‘,‘sz50‘,‘zxb‘,‘cyb‘])
#或者混搭
ts.get_realtime_quotes([‘sh‘,‘600848‘])
当日历史分笔
获取当前交易日(交易进行中使用)已经产生的分笔明细数据。
参数说明:
- code:股票代码,即6位数字代码
- retry_count : int, 默认3,如遇网络等问题重复执行的次数
- pause : int, 默认 0,重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
调用方法:
import tushare as ts
df = ts.get_today_ticks(‘601333‘)
df.head(10)
返回值说明:
- time:时间
- price:当前价格
- pchange:涨跌幅
- change:价格变动
- volume:成交手
- amount:成交金额(元)
- type:买卖类型【买盘、卖盘、中性盘】
结果显示:
time price pchange change volume amount type
0 11:30:07 5.77 -0.52 0.00 634 366372 买盘
1 11:29:57 5.77 -0.52 0.00 216 124632 买盘
2 11:29:52 5.77 -0.52 0.00 306 176562 买盘
3 11:29:42 5.77 -0.52 0.01 159 91766 买盘
4 11:29:37 5.76 -0.69 0.00 546 314496 卖盘
5 11:29:32 5.76 -0.69 -0.01 954 549504 卖盘
6 11:29:22 5.77 -0.52 0.00 374 215798 买盘
7 11:29:17 5.77 -0.52 0.00 762 439674 买盘
8 11:29:12 5.77 -0.52 0.00 164 95182 买盘
9 11:29:07 5.77 -0.52 0.00 303 174854 买盘
大盘指数行情列表
获取大盘指数实时行情列表,以表格的形式展示大盘指数实时行情。
调用方法:
import tushare as ts
df = ts.get_index()
返回值说明:
- code:指数代码
- name:指数名称
- change:涨跌幅
- open:开盘点位
- preclose:昨日收盘点位
- close:收盘点位
- high:最高点位
- low:最低点位
- volume:成交量(手)
- amount:成交金额(亿元)
结果显示:
code name change preclose close high low 0 000001 上证指数 -1.13 4527.396 4476.215 4572.391 4432.904
1 000002 A股指数 -1.13 4744.093 4690.628 4791.534 4645.190
2 000003 B股指数 -2.15 403.694 395.018 405.795 392.173
3 000008 综合指数 0.79 3724.496 3753.906 3848.575 3695.817
4 000009 上证380 -2.79 7689.128 7474.305 7695.329 7398.911
5 000010 上证180 -1.13 10741.180 10619.610 10863.080 10529.900
6 000011 基金指数 -1.02 7033.291 6961.659 7058.856 6918.273
7 000012 国债指数 0.01 148.626 148.641 148.656 148.510
8 000016 上证50 -0.79 3308.454 3282.330 3370.025 3255.769
9 000017 新综指 -1.13 3826.013 3782.936 3864.307 3746.284
10 000300 沪深300 -1.37 4807.592 4741.861 4839.078 4703.567
11 399001 深证成指 -0.69 14809.424 14707.245 14979.810 14580.422
12 399002 深成指R -0.69 17193.832 17075.202 17391.652 16927.959
13 399003 成份B指 -1.93 9027.079 8853.081 9013.194 8826.048
14 399004 深证100R -1.79 5994.881 5887.414 6036.322 5832.431
15 399005 中小板指 -3.34 8935.338 8637.195 8953.813 8551.202
16 399006 创业板指 -2.17 2747.497 2687.974 2779.200 2650.425
17 399100 新 指 数 -2.77 10091.194 9811.256 10111.664 9718.085
18 399101 中小板综 -3.31 12792.057 12368.868 12800.453 12253.744
19 399106 深证综指 -2.76 2271.275 2208.561 2275.344 2187.897
20 399107 深证A指 -2.77 2375.176 2309.466 2379.507 2287.784
21 399108 深证B指 -1.77 1398.244 1373.512 1397.996 1367.343
22 399333 中小板R -3.34 9640.766 9319.085 9660.699 9226.304
23 399606 创业板R -2.16 2828.251 2767.127 2861.040 2728.472
volume amount
0 767676416 10611.72
1 766188823 10599.65
2 1487592 12.07
3 263748855 3440.01
4 182628996 2531.04
5 464275133 6437.40
6 66280981 428.46
7 263420 2.74
8 266042859 3735.74
9 766077611 10596.65
10 608638545 8603.50
11 51106975785 6405.28
12 6357969430 1017.68
13 51206484 4.32
14 10418315890 1779.58
15 3071396395 830.54
16 1441659735 551.73
17 32943457787 6091.34
18 10450911278 2291.43
19 33395285515 6137.71
20 33274363870 6128.94
21 120921645 8.77
22 3071396395 830.54
23 1441659735 551.73
大单交易数据
获取大单交易数据,默认为大于等于400手,数据来源于新浪财经。
参数说明:
- code:股票代码,即6位数字代码
- date:日期,格式YYYY-MM-DD
- vol:手数,默认为400手,输入数值型参数
- retry_count : int, 默认3,如遇网络等问题重复执行的次数
- pause : int, 默认 0,重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
返回值说明:
- code:代码
- name:名称
- time:时间
- price:当前价格
- volume:成交手
- preprice :上一笔价格
- type:买卖类型【买盘、卖盘、中性盘】
调用方法:
import tushare as ts
df = ts.get_sina_dd(‘600848‘, date=‘2015-12-24‘) #默认400手
#df = ts.get_sina_dd(‘600848‘, date=‘2015-12-24‘, vol=500) #指定大于等于500手的数据
结果显示:
code name time price volume preprice type
0 600848 上海临港 14:58:10 23.05 104309 23.05 卖盘
1 600848 上海临港 14:57:03 23.05 56500 23.07 卖盘
2 600848 上海临港 14:52:47 23.00 76750 23.04 卖盘
3 600848 上海临港 14:47:32 23.10 47000 23.09 买盘
4 600848 上海临港 14:16:03 23.00 60859 23.01 卖盘
5 600848 上海临港 14:15:38 23.01 68659 23.03 卖盘
6 600848 上海临港 14:00:34 23.10 66200 23.10 买盘
7 600848 上海临港 13:25:24 23.28 42000 23.09 买盘
8 600848 上海临港 13:23:54 23.28 79600 23.07 买盘
9 600848 上海临港 13:16:16 23.03 40000 23.08 卖盘