TuShare获取K线数据

Posted fangbei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TuShare获取K线数据相关的知识,希望对你有一定的参考价值。

    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   卖盘

以上是关于TuShare获取K线数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从tushare中调取十大股东数据?

python调用tushare获取股票日线实时行情数据

Tushare test

python调用tushare获取A股周线行情

利用tushare画股票K线图

tushare使用