股票K线图绘制

本文介绍了如何使用Python的Tushare库和mpl_finance库绘制股票K线图,并添加均线和成交量柱形图。首先,讲解了K线图的基本概念,包括阴阳线和均线的计算。接着,通过Python代码展示了获取股票数据、日期转换、绘制K线图和均线图的步骤。最后,添加了每日成交量的柱形图,帮助投资者进行技术分析。
摘要由CSDN通过智能技术生成

股票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-012019-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()

在这里插入图片描述


总结

参考书籍:《Python大数据分析与机器学习商业案例

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值