1. 程式人生 > >TuShare獲取K線數據

TuShare獲取K線數據

行數 股票代碼 期貨 ttl numpy 開始 asics mount start

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線數據