實戰 | 你知道如何用python獲取股票交易資料嗎?
專案介紹
看到標題大家的第一反應估計是怎麼用爬蟲來獲取股票交易資料,要獲取股票交易資料確實是需要用爬蟲沒錯,不過還有比使用爬蟲更加方便的方式。今天要給大家介紹的是一個專門用來獲取國內股票交易資料的開源工具Tushare。
Tushare是一個免費、開源的python財經資料介面包。主要實現對股票等金融資料從資料採集、清洗加工 到 資料儲存的過程,能夠為金融分析人員提供快速、整潔、和多樣的便於分析的資料。
安裝方式就是:pip install tushare。
相關函式介紹
import tushare as ts
import time
import sys
1.獲取歷史行情資料 get_hist_data()
獲取個股歷史交易資料(包括均線資料),可以通過引數設定獲取日k線、周k線、月k線,以及5分鐘、15分鐘、30分鐘和60分鐘k線資料。本介面只能獲取近3年的日線資料,適合搭配均線資料進行選股和分析。
引數說明:
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日均量
使用方法
# 爾康製藥(300267),取近3年資料
ts.get_hist_data(code)
執行結果(注:以下截圖均為部分截圖)
使用方法
# 爾康製藥(300267),取指定日期的資料 ts.get_hist_data(code, start='2018-01-01', end='2018-06-31')
執行結果
2.get_h_data()
在不指定開始時間和結束時間時,該函式預設返回最近一年的日線資料,返回的資料與get_hist_data不同的是,該函式只返回開盤價(open)、最高價(high)、收盤價(close)、最低價(low)、成交量(volume)、成交金額(amount)六列 ,同樣加上時間段也可以獲取相應資料。
使用方法
# 爾康製藥(300267),取近一年資料
ts.get_h_data(code)
**執行結果
3.get_k_data()
前兩個函式相比,這個函式獲取資料的速度很明顯要快很多,而且可以返回每一隻股票從上市開始到當前交易日的所有日線資料,這個有點是前兩個函式都不具備的,更重要的是,如果批量獲取多隻股票的資料,前兩個都不如get_k_data()穩定。
使用方法
# 爾康製藥(300267),取近1年資料
ts.get_k_data(code)
執行結果
其他
ts.get_hist_data(code, ktype='W') #獲取周k線資料
ts.get_hist_data(code, ktype='M') #獲取月k線資料
ts.get_hist_data(code, ktype='5') #獲取5分鐘k線資料
ts.get_hist_data(code, ktype='15') #獲取15分鐘k線資料
ts.get_hist_data(code, ktype='30') #獲取30分鐘k線資料
ts.get_hist_data(code, 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線資料
4.取實時行情資料get_today_all()
返回值說明:
code:程式碼
name:名稱
changepercent:漲跌幅
trade:現價
open:開盤價
high:最高價
low:最低價
settlement:昨日收盤價
volume:成交量
turnoverratio:換手率
amount:成交量
per:市盈率
pb:市淨率
mktcap:總市值
nmc:流通市值
使用方法
# 一次性獲取當前交易所有股票的行情資料(如果是節假日,即為上一交易日)
ts.get_today_all()
[Getting data:]############################################################
執行結果
5.獲取當日歷史分筆資料get_today_ticks()
獲取當前交易日(交易進行中使用)已經產生的分筆明細資料。
引數說明:
code:股票程式碼,即6位數字程式碼
retry_count : int, 預設3,如遇網路等問題重複執行的次數
pause : int, 預設 0,重複請求資料過程中暫停的秒數,防止請求間隔時間太短出現的問題
返回值說明:
time:時間
price:當前價格
pchange:漲跌幅
change:價格變動
volume:成交手
amount:成交金額(元)
type:買賣型別【買盤、賣盤、中性盤】
使用方法
ts.get_today_ticks(code)
[Getting data:]##################
執行結果
6.獲取實時分筆資料get_realtime_quotes()
獲取實時分筆資料,可以實時取得股票當前報價和成交資訊,其中一種場景是,寫一個python定時程式來呼叫本介面(可兩三秒執行一次,效能與行情軟體基本一致),然後通過DataFrame的矩陣計算實現交易監控,可實時監測交易量和價格的變化。
引數說明:
symbols:6位數字股票程式碼,或者指數程式碼(sh=上證指數 sz=深圳成指 hs300=滬深300指數 sz50=上證50 zxb=中小板 cyb=創業板) 可輸入的型別:str、list、set或者pandas的Series物件
返回值說明:
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,時間
使用方法
# 單個股票實時行情
df = ts.get_realtime_quotes(code)
df
執行結果
使用方法
# 需要顯示的屬性
df[['code','name','price','bid','ask','volume','amount','time']]
執行結果
使用方法
for i in range(5):
df = ts.get_realtime_quotes(code)
df = df[['code','name','price','bid','ask','volume','amount','time']]
print(df)
time.sleep(2)
執行結果
使用方法
# 多隻股票的實時分筆資料(最好不要超過30)
df = ts.get_realtime_quotes(['600460','000762','000725'])
df[['code','name','price','bid','ask','volume','amount','time']]
執行結果
使用方法
# 獲取實時指數
#上證指數 深圳成指 滬深300指數 上證50 中小板 創業板
ts.get_realtime_quotes(['sh','sz','hs300','sz50','zxb','cyb'])
執行結果
7.大盤指數行情列表:
獲取大盤指數實時行情列表,以表格的形式展示大盤指數實時行情。
返回值說明:
code:指數程式碼
name:指數名稱
change:漲跌幅
open:開盤點位
preclose:昨日收盤點位
close:收盤點位
high:最高點位
low:最低點位
volume:成交量(手)
amount:成交金額(億元)
使用方法
ts.get_index()
執行結果
使用方法
ts.realtime_boxoffice()
執行結果
文章參考連結:
專案打包
關注公眾號:X人工智慧學院
回覆:1130
寫在最後的話:如果你也是個深度學習愛好者,或者有任何的疑問,可以加我的個人微訊號:sdxxqbf 。