1. 程式人生 > >BaoStock:一個免費、開源的python證券資料介面包

BaoStock:一個免費、開源的python證券資料介面包

如果需要獲取歷史行情資料、實時行情資料,www.baostock.com是個很好的免費、開源的Python證券資料介面包。

特點:使用方便、免費免費免費,返回的絕大部分的資料格式都是pandas DataFrame型別。

入門程式碼如下:

import baostock as bs
import pandas as pd

#### 登陸系統 ####
lg = bs.login(user_id="anonymous", password="123456")
# 顯示登陸返回資訊
print('login respond error_code:'+lg.error_code)
print('login respond  error_msg:'+lg.error_msg)

#### 獲取歷史K線資料 ####
# 詳細指標引數,參見“歷史行情指標引數”章節
rs = bs.query_history_k_data("sh.600000",
    "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,peTTM,pbMRQ,psTTM,pcfNcfTTM,isST",
    start_date='2017-06-01', end_date='2017-12-31', 
    frequency="d", adjustflag="3") #frequency="d"取日k線,adjustflag="3"預設不復權
print('query_history_k_data respond error_code:'+rs.error_code)
print('query_history_k_data respond  error_msg:'+rs.error_msg)

#### 列印結果集 ####
data_list = []
while (rs.error_code == '0') & rs.next():
    # 獲取一條記錄,將記錄合併在一起
    data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)
#### 結果集輸出到csv檔案 ####
result.to_csv("D:/history_k_data.csv", encoding="gbk", index=False)
print(result)

#### 登出系統 ####
bs.logout()

各方法及含義如下:

登入

login()

方法說明:登入系統。

使用示例:lg = login(user_id="anonymous", password="123456")


引數含義:

  • user_id:使用者id,預設為"anonymous";
  • password:密碼,預設為"123456"。


返回資訊:

  • lg.error_code:錯誤程式碼,當為“0”時表示成功,當為非0時表示失敗;
  • lg.error_msg:錯誤資訊,對錯誤的詳細解釋。

登出

logout()

方法說明:登出系統

使用示例:lg = logout(user_id="anonymous")


引數含義:

  • user_id:使用者id,預設為"anonymous"。


返回資訊:

  • lg.error_code:錯誤程式碼,當為“0”時表示成功,當為非0時表示失敗;
  • lg.error_msg:錯誤資訊,對錯誤的詳細解釋。

獲取歷史A股K線資料

獲取歷史A股K線資料:query_history_k_data()

方法說明:獲取A股歷史交易資料(包括均線資料),可以通過引數設定獲取日k線、周k線、月k線,以及5分鐘、15分鐘、30分鐘和60分鐘k線資料,適合搭配均線資料進行選股和分析。

返回型別:pandas的DataFrame型別。

V0.5版本只能獲取近3年的資料(2015-01-01至當前時間);

可查詢不復權、前復權後復權資料。

引數含義:

  • code:股票程式碼,sh或sz.+6位數字程式碼,或者指數程式碼,如:sh.601398。sh:上海;sz:深圳。此引數不可為空;
  • fields:指示簡稱,支援多指標輸入,以半形逗號分隔,填寫內容作為返回型別的列。詳細指標列表見歷史行情指標引數章節。此引數不可為空;
  • start:開始日期(包含),格式“YYYY-MM-DD”,為空時取2015-01-01;
  • end:結束日期(不包含),格式“YYYY-MM-DD”,為空時取最近一個交易日;
  • frequency:資料型別,預設為d,日k線;d=日k線、w=周、m=月、5=5分鐘、15=15分鐘、30=30分鐘、60=60分鐘k線資料,不區分大小寫;周線每週最後一個交易日才可以獲取,月線第月最後一個交易日才可以獲取。
  • adjustflag:復權型別,預設不復權:3;1:後復權;2:前復權。已支援日k線、分鐘線前後復權;暫不支援周k線、月k線前後復權。

返回資料說明
引數名稱引數描述
date交易所行情日期
code證券程式碼
open開盤價
high最高價
low最低價
close收盤價
preclose昨日收盤價
volume成交量(累計 單位:股)
amount成交額(單位:人民幣元)
adjustflag復權狀態(1:後復權, 2:前復權,3:不復權)
turn換手率
tradestatus交易狀態(1:正常交易 0:停牌)
pctChg漲跌幅
peTTM動態市盈率
pbMRQ市淨率
psTTM市銷率
pcfNcfTTM市現率
isST是否ST股,1是,0否