官网 :http://tushare.org/index.html
Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。当然,如果您习惯了用Excel或者关系型数据库做分析,您也可以通过Tushare的数据存储功能,将数据全部保存到本地后进行分析。应一些用户的请求,从0.2.5版本开始,Tushare同时兼容Python 2.x和Python 3.x,对部分代码进行了重构,并优化了一些算法,确保数据获取的高效和稳定。
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) #深圳综合指数
#一次性获取当前交易所有股票的行情数据(如果是节假日,即为上一交易日,结果显示速度取决于网速)
import tushare as ts
ts.get_today_all()
结果显示:
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点后通过本接口获取。
调用方法:
import tushare as ts
df = ts.get_tick_data('600848',date='2018-12-12',src='tt')
df.head(10)
获取实时分笔数据,可以实时取得股票当前报价和成交信息,其中一种场景是,写一个python定时程序来调用本接口(可两三秒执行一次,性能与行情软件基本一致),然后通过DataFrame的矩阵计算实现交易监控,可实时监测交易量和价格的变化。
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
请求多个股票方法(一次最好不要超过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'])
获取当前交易日(交易进行中使用)已经产生的分笔明细数据。
import tushare as ts
df = ts.get_today_ticks('601333')
df.head(10)
结果显示:
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 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
获取大单交易数据,默认为大于等于400手,数据来源于新浪财经。
调用方法:
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 卖盘