本文主要是介绍WhaleQuant第三章——股票数据获取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 第三章
- 3.0 学习资源
- 3.3 Baostock的基础数据获取
第三章
3.0 学习资源
学习链接
- 包括5个章节:
- 股票数据的基本分类
- 股票数据的常见指标介绍
这部分内容以知识点为主。 - Baostock的基础数据获取
- pandas常见指标的数据清洗
- 其他数据获取平台的介绍
3.3 Baostock的基础数据获取
- 登录证券宝获取数据
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()
- 沪深指数K线数据
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)
- 上证50成分股
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 方法进行登出
这篇关于WhaleQuant第三章——股票数据获取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!