import baostock as bs
import pandas as pd
from IPython.display import display
#### 登陆系统 ####
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("sh.600000",
"date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
start_date='2022-07-01', end_date='2022-12-31',
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("./history_A_stock_k_data.csv", index=False)
display(result)
#### 登出系统 ####
bs.logout()
绘制浦发银行的日K线
import numpy as np
# ...
# 将 'close' 列的数据转换为浮点数
result['close'] = result['close'].astype(float)
# 将日期转换为日期类型
result['date'] = pd.to_datetime(result['date'])
# 绘制日线图
plt.figure(figsize=(10, 6))
plt.plot(np.array(result['date']), np.array(result['close']), label='Close Price')
plt.title('Daily Close Price - Stock sh.600000')
plt.xlabel('Date')
plt.ylabel('Close Price')
plt.legend()
plt.grid(True)
# 设置纵坐标刻度
plt.yticks(np.arange(6, max(result['close']))) # 根据需要调整 step 的值
plt.show()
import baostock as bs
import pandas as pd
from IPython.display import display
# 登陆系统
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond error_msg:'+lg.error_msg)
# 获取指数(综合指数、规模指数、一级行业指数、二级行业指数、策略指数、成长指数、价值指数、主题指数)K线数据
# 综合指数,例如:sh.000001 上证指数,sz.399106 深证综指 等;
# 规模指数,例如:sh.000016 上证50,sh.000300 沪深300,sh.000905 中证500,sz.399001 深证成指等;
# 一级行业指数,例如:sh.000037 上证医药,sz.399433 国证交运 等;
# 二级行业指数,例如:sh.000952 300地产,sz.399951 300银行 等;
# 策略指数,例如:sh.000050 50等权,sh.000982 500等权 等;
# 成长指数,例如:sz.399376 小盘成长 等;
# 价值指数,例如:sh.000029 180价值 等;
# 主题指数,例如:sh.000015 红利指数,sh.000063 上证周期 等;
# 详细指标参数,参见“历史行情指标参数”章节;“周月线”参数与“日线”参数不同。
# 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
rs = bs.query_history_k_data_plus("sh.000001",
"date,code,open,high,low,close,preclose,volume,amount,pctChg",
start_date='2022-01-01', end_date='2022-06-30', frequency="d")
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("./history_Index_k_data.csv", index=False)
display(result)
# 登出系统
bs.logout()
绘制K线图
import mplfinance as mpf
import pandas as pd
# 将日期列转换为日期类型
result['date'] = pd.to_datetime(result['date'])
# 设置日期为索引
result.set_index('date', inplace=True)
# 将价格列转换为浮点数
result['open'] = result['open'].astype(float)
result['high'] = result['high'].astype(float)
result['low'] = result['low'].astype(float)
result['close'] = result['close'].astype(float)
# 将成交量列转换为浮点数
result['volume'] = result['volume'].astype(float)
# 绘制K线图
mpf.plot(result, type='candle', style='yahoo', mav=(5, 10, 20), volume=True, show_nontrading=True)
import baostock as bs # 导入 baostock 库
import pandas as pd # 导入 pandas 库
from IPython.display import display
# 登陆系统
lg = bs.login() # 调用 login 方法进行登陆
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code) # 打印登陆返回错误码
print('login respond error_msg:'+lg.error_msg) # 打印登陆返回错误信息
# 获取上证50成分股
rs = bs.query_sz50_stocks() # 调用 query_sz50_stocks 方法获取上证50成分股信息
print('query_sz50 error_code:'+rs.error_code) # 打印方法返回错误码
print('query_sz50 error_msg:'+rs.error_msg) # 打印方法返回错误信息
# 打印结果集
sz50_stocks = [] # 创建一个空列表,用于存储查询结果
while (rs.error_code == '0') & rs.next():
# 如果查询没有出错且还有数据
sz50_stocks.append(rs.get_row_data()) # 将获取到的数据添加到列表中
result = pd.DataFrame(sz50_stocks, columns=rs.fields) # 使用 pandas 将数据转换为 DataFrame 格式
# 结果集输出到csv文件
result.to_csv("./sz50_stocks.csv", encoding="gbk", index=False) # 将结果保存为 csv 文件
display(result) # 打印结果
# 登出系统
bs.logout() # 调用 logout 方法进行登出