iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python绘制移动均线方法 含源代码
  • 866
分享到

Python绘制移动均线方法 含源代码

2024-04-02 19:04:59 866人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1、获取数据2、计算移动均线3、绘制K线及移动均线 上一篇《 python绘制专业的K线图》,讲解了数据获取、K线图绘制及成交量绘制等内容。本篇将在上一篇的基础上,继续讲解移动均

上一篇《 python绘制专业的K线图》,讲解了数据获取、K线图绘制及成交量绘制等内容。本篇将在上一篇的基础上,继续讲解移动均线的绘制。

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
 title=

3、绘制K线及移动均线

将绘制移动均线的代码,添加至K线图绘制代码中;源代码及绘制图片如下:


#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绘制移动均线内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python绘制移动均线方法 含源代码

本文链接: https://www.lsjlt.com/news/137635.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python绘制移动均线方法 含源代码
    目录1、获取数据2、计算移动均线3、绘制K线及移动均线 上一篇《 Python绘制专业的K线图》,讲解了数据获取、K线图绘制及成交量绘制等内容。本篇将在上一篇的基础上,继续讲解移动均...
    99+
    2024-04-02
  • Python绘制专业的K线图 源代码解析
    目录1、股票数据2、数据处理 3、绘制K线 4、去除图中非交易日 5、在K线图中,添加成交量 K线图简介: K线图又被成为“蜡烛图”、“阴阳线”等,它在视觉效果上可以很清晰得凸显出...
    99+
    2024-04-02
  • Android绘制平移动画的示例代码
    目录1、具体操作步骤2、具体实施创建ImageView创建ObjectAnimator对象3、具体实例activity_main.xmlMainActivity.java1、具体操作...
    99+
    2024-04-02
  • 用python绘制彩色螺旋线代码
    网上看到过许多螺旋线的程序,但不是黑色就是单个颜色不变。这里作者编了一个程序,还很漂亮的。希望大家喜欢!!!使用turtle绘图。代码如下。(绘图窗口最大化更好) from turt...
    99+
    2024-04-02
  • Python Matplotlib绘制动画的代码怎么写
    这篇文章主要介绍了Python Matplotlib绘制动画的代码怎么写的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python Matplotlib绘制动画的代码怎么写文章都会有所收获,...
    99+
    2023-06-30
  • Android绘制平移动画的示例代码怎么编写
    今天就跟大家聊聊有关Android绘制平移动画的示例代码怎么编写,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、具体操作步骤创建ImageView对象创建ObjectAnimato...
    99+
    2023-06-26
  • C#动态绘制多条曲线的方法
    本文实例为大家分享了C#动态绘制多条曲线的具体代码,供大家参考,具体内容如下 实时绘制多条曲线,纵轴为数值,横轴为时间,精确到毫秒 实现效果如下: 代码: using System...
    99+
    2024-04-02
  • Python绘制loss曲线和准确率曲线实例代码
    目录引言一、数据读取与存储部分二、绘制 loss 曲线三、绘制准确率曲线总结引言 使用 python 绘制网络训练过程中的的 loss 曲线以及准确率变化曲线,这里的主要思想就时先把...
    99+
    2024-04-02
  • python绘制浅色范围曲线的示例代码
    借鉴:python绘制lost(损失)曲线 加 方差范围 直接上效果图:  上代码: import re import seaborn as sns import m...
    99+
    2024-04-02
  • python绘制正方形的代码怎么写
    可以使用Python的turtle模块来绘制正方形。以下是一个简单的例子:```pythonimport turtle# 创建一个t...
    99+
    2023-09-29
    python
  • Python几种绘制时间线图的方法
    目录Matplotlib 制作Plotly 绘制Excel 绘制Matplotlib 制作 Matplotlib 作为 Python 家族最为重要的可视化工具,其基本的 API 以及...
    99+
    2024-04-02
  • Python:实现A*搜索算法(含完整源代码)
    Python:实现A*搜索算法(含完整源代码) A*(也称为A星)搜索算法是一种常用的寻路算法。该算法在解决路径规划问题时表现出色,因为它能够找到最短路径并避免遍历那些不必要的节点。本文将介绍如何使用...
    99+
    2023-10-18
    python
  • 解读等值线图的Python绘制方法
    目录等值线图的Python绘制方法python等值线图绘制,计算合适的等值线间距总结等值线图的Python绘制方法 等值线图或等高线图在科学界经常用到,它是由一些封闭的曲线组成的,来...
    99+
    2023-02-01
    等值线图 Python绘制等值线图 Python等值线图
  • python在Matplotlib中绘制垂直线的方法
    小编给大家分享一下python在Matplotlib中绘制垂直线的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!创建图让我们首先用一些随机数据创建一个简单的图...
    99+
    2023-06-14
  • Python实现一行代码自动绘制艺术画
    目录1.准备2.开始使用 Discoart3.显示/保存/加载配置DiscoArt 是一个很牛的开源模块,它能根据你给定的关键词自动绘画。 绘制过程是完全可见的,你可以在 jupyt...
    99+
    2022-12-30
    Python自动绘制艺术画 Python绘制艺术画 Python 艺术画
  • Android利用贝塞尔曲线绘制动画的示例代码
    目录彩虹系列弹簧动画复杂立体感动画总结前面我们花了几篇介绍了贝塞尔曲线的原理和绘制贝塞尔曲线,着实让我们见识到了贝塞尔曲线的美。好奇心驱使我想看看贝塞尔曲线动起来会是什么样?本篇就借...
    99+
    2024-04-02
  • python绘制折线图和条形图的方法
    本文实例为大家分享了python绘制折线图和条形图的具体代码,供大家参考,具体内容如下 最近开始写小论文啦,中间不免要作各种各样的图,学习后自己作了个小笔记,供小伙伴一起学习哦。 折...
    99+
    2024-04-02
  • python绘制散点图和折线图的方法
    本文实例为大家分享了python绘制散点图和折线图的具体代码,供大家参考,具体内容如下 #散点图,一般和相关分析、回归分析结合使用 import pandas import ...
    99+
    2024-04-02
  • Python+NumPy绘制常见曲线的方法详解
    目录一、利萨茹曲线二、计算斐波那契数列三、方波四、锯齿波和三角波在NumPy中,所有的标准三角函数如sin、cos、tan等均有对应的通用函数。 一、利萨茹曲线 (Lissajous...
    99+
    2024-04-02
  • Python实现动态条形图绘制的示例代码
    目录动态条形图变动态柱状图指定排序方式限制条目数设置固定条目固定数值轴,使其不发生动态变化设置图像帧数,默认 10 帧设置帧率,单位时间默认为 500ms设置每帧增加的标签时间,默认...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作