Python绘制股票K线图(烛状图)并增加成交量和移动平均线:
准备工作:
1.这里需要使用到pandas和mplfinance工具库(自行安装好)。
2.下载好股票数据,需要包括:时间、开盘价、最高价、最低价、收盘价,五列数据,另外,如果还需要在K线图中显示总手(成交量),则需要下载总手(成交量)数据。
3.保存为csv格式,同时检查下载的数据,是否符合要求(格式,数据,缺失值,异常值都提前处理好)。
准备工作完成后就可以开始绘制K线图了,下面的程序绘制的K线图附带成交量(总手),如果不需要,则将程序中的以下三条命令删除即可:
01.构建数据集中的 ‘volume’: data[‘总手’]
02.设置K线样式中的 volume={‘up’: ‘red’, ‘down’: ‘green’}
03.绘图中的 volume=True,
ylabel_lower=‘成交量(股)’
# 绘制股价走势日k线图
import pandas as pd
import mplfinance as mpf
data = pd.read_csv('XXX.csv') # 传入数据
# 01. 构建数据集
data_Kline0 = pd.DataFrame(
{
'date': data['时间'],
'open': data['开盘'],
'high': data['最高'],
'low': data['最低'],
'close': data['收盘'],
'volume': data['总手']
}
)
data_Kline = data_Kline0.set_index('date') # 以日期为索引
# 02. 设置K线样式
my_color = mpf.make_marketcolors(
up='red',
down='green',
edge='inherit',
wick='i', # wick:上下影线颜色,i表示继承up和down的颜色
volume={'up': 'red', 'down': 'green'}, # 成交量直方图颜色,也可用i继承up和down的颜色
ohlc='i'
)
my_style = mpf.make_mpf_style(
marketcolors=my_color, # 设置图表显示配色 mpf.available_styles() 可以查看所有样式
gridaxis='both', # 设置网格位置
gridstyle='-.', # 设置网格线线型
rc={'font.family': 'STSong'} # 设置中文兼容
)
# 03. 绘图
mpf.plot(
data_Kline,
type='candle', # 设置显示样式 选项['ohlc','candle','line','renko','pnf']
title='股价走势K线图', # 设置图标题
ylabel='股价(元)', # 设置y轴标题
style=my_style, # 应用上面命令设置的样式
show_nontrading=False, # 是否显示非交易日,默认为False:显示
volume=True, # 下方是否显示成交量,默认为False
ylabel_lower='成交量(股)', # 成交量图的Y轴标题
datetime_format='%Y年%m月%d日', # x轴的时间显示格式
xrotation=45, # x轴的时间坐标旋转角度
linecolor='#00ff00', # 若type='line'设置线条颜色
tight_layout=False # 是否紧密显示
)
笔者绘制的恒瑞医药公司上市以来的K线图(附带成交量)如下:
**
添加移动平均线
**
在03.绘图步骤中
代码mpf.plot()中添加命令:mav(5,10,30) # 添加5,10,30日移动平均线
即可
也可修改为自己想要的任意日移动平均线
以下是笔者绘制的K线图: