股票K线图绘制文章目录股票K线图绘制前言一、股票K线图基础知识二、用Python绘制股票K线图总结前言提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
一、股票K线图基础知识K线图中的柱形通常称为“K线”,因为形似蜡烛,所以也称为蜡烛图。K线是根据股票的4个价格绘制的:开盘价(当天上午9:30开始交易时的价格),收盘价(当天下午3:00结束交易的价格),最高价(当天波动中的最高价),最低价(当天波动中的最低价)。这4个价格分别简称为“高”,“开”,“低”,“收”。
K线分为两种:如果当天的收盘价高于开盘价,即当天的价格上涨,称为阳线,通常绘制成红色;反之,如果当天的收盘价低于开盘价,即当天的价格下降,称为阴线,通常绘制成绿色。
K线图中的折线称为“均线”,均线分别为5日均线(MA5),10日均线(MA10),20日均线(MA20)等,其绘制原理是对一定时期内股票的收盘价对平均值。例如:要绘制日均线,就要先计算最近连续5个交易日收盘价的平均值,具体公式如下,其中Close1为当天的收盘价,Close2为前一天的收盘价,以此类推。
MA5 = (Close1+Close2+Close3+Close4+Close5)/5示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、用Python绘制股票K线图(1)安装绘制K线图的mpl_finance库
在windows终端输入:
pip install mpl_finance
(2)引入相关库
import tushare as ts
import matplotlib.pyplot as plt
import mpl_finance as mpf(3)用Tushare库获取股票基本数据
# 通过tushare库获取股票代码为"000002"的股票"万科A"在2019-06-01至2019-09-30的股价数据
df = ts.get_k_data('000002',"2019-06-01","2019-09-30") # 查看部分数据 print(df.head()) (4)日期格式调整及表格转换
# (2)日期格式调整及表格转换
# 导入调整日期的格式涉及的两个库
from matplotlib.pylab import date2num
import datetime
# 将Tushare库获取到的日期数据转换成candlestick_ochl()函数可读取的格式
def date_to_num(dates): num_time = [] for date in dates: date_time = datetime.datetime.strptime(date,'%Y-%m-%d') num_date = date2num(date_time) num_time.append(num_date) return num_time
# 将DataFrame转换为二维数组,并利用date_to_num()函数转换日期格式
df_arr = df.values # 将DataFrame格式中的数据转换为二维数组
df_arr[:,0] = date_to_num(df_arr[:,0]) # 将二维数组中的日期转换为数字格式 # print(df_arr[0:5])
(5)绘制K线图
# 绘制K线图
fig, ax = plt.subplots(figsize=(15,6)) mpf.candlestick_ochl(ax,df_arr,width=0.6,colorup='r',colordown='g',alpha=1.0) # 绘制K线图
plt.grid(True) # 绘制网格图
ax.xaxis_date() # 设置x轴的刻度格式为常规日期格式
(6)添加均线图
# (6)添加均线图
df["MA5"] = df["close"].rolling(5).mean() df["MA10"] = df["close"].rolling(10).mean() plt.rcParams["font.sans-serif"] = ["SimHei"] # 设置正常显示中文
fig,ax = plt.subplots(figsize=(15,8)) # 绘制K线图
mpf.candlestick_ochl(ax,df_arr,width=0.6,colorup='r',colordown='g',alpha=1.0) plt.plot(df_arr[:,0],df["MA5"]) plt.plot(df_arr[:,0],df["MA10"]) plt.grid(True) # 绘制网格图
plt.title("万科A") plt.xlabel("日期") plt.ylabel("价格") ax.xaxis_date() # 设置x轴的刻度格式为常规日期格式
plt.show()
(7)添加每日成交量柱形图
# (7)添加每日成交量柱形图
fig,axes = plt.subplots(2,1,sharex=True,figsize=(15,8)) ax1,ax2 = axes.flatten() # 绘制第1张子图:K线图和均线图
mpf.candlestick_ochl(ax1,df_arr,width=0.6,colorup="r",colordown="g",alpha=1.0) ax1.plot(df_arr[:,0],df["MA5"]) # 绘制5日均线
ax1.plot(df_arr[:,0],df["MA10"]) # 绘制10日均线
ax1.set_title("万科A") # 设置子图的标题
ax1.set_ylabel("价格") # 设置子图的y轴标签
ax1.grid(True) ax1.xaxis_date() # 绘制第2张子图:每日成交量柱形图
ax2.bar(df_arr[:,0],df_arr[:,5]) # 绘制每日成交量柱形图
ax2.set_xlabel("日期") # 设置子图的x轴标签
ax2.set_ylabel("成交量") # 设置子图的y轴标签
ax2.grid(True) ax2.xaxis_date() plt.show()
|