使用Python绘制移动均线
1、下载数据
从恒生电子出品的恒有数金融数据社区,获取股票日行情数据。
下载2021年3月1号~2021年6月1号,恒生电子(600570.SH)的行情数据为例:
# 加载取数与绘图所需的函数包
import pandas as pd
import datetime
from hs_udata import set_token,stock_quote_daily
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 # 解决保存图像是负号'-'显示为方块的问题def GetData(stock_code,start,end):#stock_code:获取股票数据的股票代码# start:开始日期# end:结束日期date_start=datetime.datetime.strptime(start,'%Y-%m-%d')date_end =datetime.datetime.strptime(end,'%Y-%m-%d')data = pd.DataFrame([])while date_start<date_end:# 获取日行情数据,接口说明见 https://udata.hs.net/datas/332/# adjust_way枚举值为:0-不复权,1-前复权,2-后复权,此处取前复权data_i = stock_quote_daily(en_prod_code=stock_code,trading_date=date_start.strftime('%Y%m%d'),adjust_way = 1)data=pd.concat([data,data_i],axis=0) # 将行情数据按行拼接date_start+=datetime.timedelta(days=1) # 日期变量自增# 返回行情数据return data#1、获取行情数据
stock_code = "600570.SH" # 恒生电子 股票代码是600570.SH
start='2021-03-01'
end ='2021-06-01'
set_token(token = 'xxxxxxxxxxxxxxxxxxxxxxxx') # 注册恒有数之后,获取并替换token
data = GetData(stock_code,start,end)#2、数据处理
data = data.loc[data.turnover_status=='交易'] # 剔除非交易日
data_price = data[['trading_date','open_price','high_price','low_price','close_price','business_amount']] # 选取日期与高开低收价格
data_price.set_index('trading_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()))data_price
执行结果如下:
2、移动均线的计算
#3、计算均值
data_price['MA5']=data_price['close_price'].rolling(window=5).mean()
data_price['MA10']=data_price['close_price'].rolling(window=10).mean()
data_price['MA20']=data_price['close_price'].rolling(window=20).mean()
data_price
3、绘制移动均线
#4、绘制图片
fig = plt.figure(figsize=(12,10))
grid = plt.GridSpec(12, 10, wspace=0.5, hspace=0.5)
#(1)绘制K线图
# K线数据
ohlc = data_price[['Date','open_price','high_price','low_price','close_price']]
ohlc.loc[:,'Date'] = range(len(ohlc)) # 重新赋值横轴数据,绘制K线图无间隔
# 绘制K线
ax1 = fig.add_subplot(grid[0:8,0:12]) # 设置K线图的尺寸
candlestick_ohlc(ax1, ohlc.values.tolist(), width=.7, colorup='red', colordown='green')
# (2)绘制均线
ax1.plot(range(len(data_price)), data_price['MA5'], color='red', lw=2, label='MA (5)')
ax1.plot(range(len(data_price)), data_price['MA10'], color='blue', lw=2, label='MA (10)')
ax1.plot(range(len(data_price)), data_price['MA20'], color='green', lw=2, label='MA (20)')
# 设置标注
plt.title(stock_code,fontsize = 14) # 设置图片标题
plt.ylabel('价 格(元)',fontsize = 14) # 设置纵轴标题
plt.legend(loc='best') # 绘制图例
ax1.set_xticks([]) # 日期标注在成交量中,故清空此处x轴刻度
ax1.set_xticklabels([]) # 日期标注在成交量中,故清空此处x轴 #(3)绘制成交量
# 成交量数据
data_volume = data_price[['Date','close_price','open_price','business_amount']]
data_volume['color'] = data_volume.apply(lambda row: 1 if row['close_price'] >= row['open_price'] else 0, axis=1) # 计算成交量柱状图对应的颜色,使之与K线颜色一致
data_volume.Date = ohlc.Date
# 绘制成交量
ax2 = fig.add_subplot(grid[8:10,0:12]) # 设置成交量图形尺寸
ax2.bar(data_volume.query('color==1')['Date'], data_volume.query('color==1')['business_amount'], color='r') # 绘制红色柱状图
ax2.bar(data_volume.query('color==0')['Date'], data_volume.query('color==0')['business_amount'], color='g') # 绘制绿色柱状图
plt.xticks(rotation=30)
plt.xlabel('日 期',fontsize = 14) # 设置横轴标题
# 修改横轴日期标注
date_list = ohlc.index.tolist() # 获取日期列表
xticks_len = round(len(date_list)/(len(ax2.get_xticks())-1)) # 获取默认横轴标注的间隔
xticks_num = range(0,len(date_list),xticks_len) # 生成横轴标注位置列表
xticks_str = list(map(lambda x:date_list[int(x)],xticks_num)) # 生成正在标注日期列表
ax2.set_xticks(xticks_num) # 设置横轴标注位置
ax2.set_xticklabels(xticks_str) # 设置横轴标注日期
plt.show()
执行结果如下:
使用Python绘制移动均线相关推荐
- python绘制动态k线及均线_Python绘制股票移动均线的实例
1. 前沿 移动均线是股票最进本的指标,本文采用numpy.convolve计算股票的移动均线 2. numpy.convolve numpy.convolve(a, v, mode='full') ...
- Python绘制加强版K线图:增加均线及成交量
在之前,我们讲解了如何用Python绘制K线图.当时就有人问能否加入均线元素,当然能啦!不光均线,今天我还要把成交量给加上去. 获取数据并加工 为了计算年线(250日均线),我们需要保证数据至少在一年 ...
- python均线选股_python选股模型均线,已知股票数据,如何用Python绘制k线日对应数据...
Q1:已知股票数据,如何用Python绘制k线日对应数据 我没遇到过 只是自己写过 有点经验 先确定时间片 然后再把tick插入就行了 Q2:使用python实现ema(指数移动平均的计算) a = ...
- python画k线_python画k线,python绘制动态k线及均线
内容导航: Q1:k线图上怎么画线 一般你看K线软件都有画图功能,以同花顺为例,在上方菜单栏找到画图,点击,会在菜单栏下方一行或者屏幕最右边一列出现相应的画图工具. Q2:求教使用python绘制K线 ...
- Python绘制股票K线图
目录 1 股票K线图知识了解 2 用Python绘制股票K线图 2.1 安装绘制K线图的mpl_finance库 2.2 引入相关库 2.3 用Tushare库获取股票基本数据 2.4 日期格式调整及 ...
- Python绘制简单版K线图
不管是对量化分析师还是普通的投资者来说,K线图(蜡烛图)都是一种很经典.很重要的工具.在K线图中,它会绘制每天的最高价.最低价.开盘价和收盘价,这对于我们理解股票的趋势以及每天的多空对比很有帮助. 一 ...
- Python绘制MACD指标图
写在前面 MACD简介 用到的主要Python库 MACD详细介绍 Python代码 总结 参考文献 推荐阅读 2020.8.1更新 写在前面 最近正在研究算法交易,看了几本英文原版书.本文总结自Pa ...
- 用Python绘制专业的K线图【含源代码】
使用Python绘制一幅专业的K线图,是量化投资和金融数据分析的必备功课. 下面我将从K线图简介.数据获取.K线图绘制及成交量绘制等方面,结合源代码,一步步实现专业K线图的绘制. K线图简介 K线图又 ...
- Python绘制RSI相对强弱指标图
写在前面 相对强弱指标(RSI)简介 RSI公式详解 参数设置&公式 用到的主要Python库 Python代码&详解 参考文献 推荐阅读 写在前面 本文代码部分总结自Packt出版社 ...
最新文章
- CentOS 查看IP,端口 修改IP,打开端口生效
- 学生籍贯信息管理系统c语言,学生籍贯信息管理系统(c).doc
- html中选择样式,html中css三种常见的样式选择器 zz
- 换硬币c语言编程_为什么大多数程序员都会学C语言的5大原因!什么原因让你学不会?...
- C# 如何获取屏幕分辨率缩放比例
- 数学--数论--HDU1222 狼和兔子(最大公约数)
- .net core高并发_高并发下的Node.js与负载均衡
- flask返回数据类型
- 微信小程序傻瓜制作_傻瓜式教程:做一个带优惠券的微信小程序
- 计算机应用基础文字处理测试题,国家开放大学《计算机应用基础》考试与答案形考任务模块2Word2010文字处理系统—客观题测验答案.docx...
- [LeetCode] Merge Sorted Array
- 第二章、使用变量、操作符和表达式
- JDK16和JDK8共存与切换
- jQuery视频展示效果实例
- java验证码短信发送_java发送短信验证码
- word2003流程图变成图片_Microsoft Office 2003(word2003)制作流程图的操作方法介绍
- linux下安装xamp
- wps自动插入文献_WPS中怎样自动生成参考文献?方法超级简单!
- 算法提高 解二元一次方程组
- 全网最全开源工业缺陷数据集汇总