import baostock as bs
import pandas as pd
import datetime
from mpl_finance import candlestick_ohlc
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
#### 登陆系统 ####
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-7-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("D:\\history_A_stock_k_data.csv", index=False)
print(result)
# data = data.loc[data.turnover_status=='交易'] # 剔除非交易日
data_price = result[['date','open','high','low','close'
,'amount']]
data_price.set_index('date', inplace=True) # 将日期作为索引
data_price = data_price.astype(float)
# 将日期格式转为 candlestick_ohlc 可识别的数值
data_price['date'] = list(map(lambda x:mdates.date2num(datetime.datetime.strptime(x,'%Y-%m-%d')),data_price.index.tolist()))
#3、绘制K线图
# 提取绘图数据
ohlc = data_price[['date','open','high','low','close']]
f1, ax = plt.subplots(figsize = (12,6)) # 创建图片
candlestick_ohlc(ax, ohlc.values.tolist(), width=.7
, colorup='red', colordown='green') # 使用candlestick_ohlc绘图
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d')) # 设置横轴日期格式
plt.xticks(rotation=90) # 日期显示的旋转角度
plt.xlabel('日 期',fontsize = 14) # 设置横轴标题
plt.ylabel('价 格(元)',fontsize = 14) # 设置纵轴标题
plt.show()
#### 登出系统 ####
bs.logout()
[007量化交易] python收盘价绘图 k线图
最新推荐文章于 2024-05-02 12:26:59 发布