baostock

一个免费、开源的证券数据服务平台

官网 http://baostock.com

安装

pip install baostock -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn

获取A股K线数据

import baostock as bs
import pandas as pd

#### 登陆系统 ####
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond  error_msg:'+lg.error_msg)

#### 获取沪深A股历史K线数据 ####
# 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。
# 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
# 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
rs = bs.query_history_k_data_plus("sz.000001",
    "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
    start_date='2020-10-10', end_date='2020-10-20',
    frequency="d", adjustflag="3")
print('query_history_k_data_plus respond error_code:'+rs.error_code)
print('query_history_k_data_plus 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("k_data.csv", index=False)
print(result)

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

结果

>python test.py
login success!
login respond error_code:0
login respond error_msg:success
query_history_k_data_plus respond error_code:0
query_history_k_data_plus respond error_msg:success
date code open high low ... adjustflag turn tradestatus pctChg isST
0 2020-10-12 sz.000001 15.2200 16.0500 15.2100 ... 3 0.820000 1 4.743100 0
1 2020-10-13 sz.000001 15.9000 16.1100 15.7700 ... 3 0.468300 1 1.006300 0
2 2020-10-14 sz.000001 16.0400 16.1200 15.8000 ... 3 0.341400 1 -0.186800 0
3 2020-10-15 sz.000001 16.2000 16.9200 16.1500 ... 3 0.824500 1 3.306300 0
4 2020-10-16 sz.000001 16.5600 17.3700 16.5400 ... 3 1.079900 1 3.260900 0
5 2020-10-19 sz.000001 17.3000 18.1000 17.3000 ... 3 1.038900 1 2.222200 0
6 2020-10-20 sz.000001 17.4800 17.6000 17.2500 ... 3 0.494700 1 0.343200 0

[7 rows x 14 columns]
logout success!

使用mpl_finance画K线图

import baostock as bs
import pandas as pd
import mplfinance as mpf
#### 登陆系统 ####
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond  error_msg:'+lg.error_msg)

#### 获取沪深A股历史K线数据 ####
# 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。
# 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
# 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
rs = bs.query_history_k_data_plus("sz.000001",
    "date,code,open,high,low,close",
    start_date='2020-05-10', end_date='2020-10-20',
    frequency="d", adjustflag="3")
print('query_history_k_data_plus respond error_code:'+rs.error_code)
print('query_history_k_data_plus 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("k_data.csv", index=False)
#### 登出系统 ####
bs.logout()
data = result.loc[:, ['date','open', 'high', 'low', 'close']]
data=data.apply(pd.to_numeric, errors='ignore')
data.set_index('date', inplace=True)
data.index = pd.DatetimeIndex(data.index)
mpf.plot(data, type='candle', style='charles')

原文地址:https://www.cnblogs.com/baby123/p/13846161.html