量化投资常用技能——绘图篇 2:绘制移动平均线
量化投资常用技能——绘图篇 2
- 前言
- 移动平均线
- 使用numpy库计算移动平均值
- 量化投资第三方库:abupy
- 欢迎大家关注我们
- 我们的抖音号:金融观察(JRGC8888)
前言
上一篇文章“量化投资常用技能——绘图篇 1:绘制股票收盘价格曲线和ochl烛状图”介绍了如何使用python的matplotlib库和mpl_finance库来绘制股票收盘价曲线和股票烛状图,这一篇文章将在上一篇的基础上进一步学习移动平均线和黄金分割线的绘制。
大家可以关注我们的抖音号:“金融观察”(JRGC8888)了解更多
移动平均线
移动平均线(Moving Average)简称MA,通过将一定时期的值加起来求平均,并把不同时间的平均值连接起来形成一根MA。
例如: 一段证卷价格的列表 [40, 20, 60, 20, 20, 40],我们选取4天的移动平均线,那么计算得到的列表为 [35, 30, 35]
使用numpy库计算移动平均值
import numpy as np
import matplotlib.pyplot as pltstork_data = np.array([116.5, 115.2, 118.9, 125.2, 117.4, 126.6, 130.1,135.3, 142.6, 150.9, 158.2, 149.2, 136.9])
window = 4 # 绘制4日移动平均线mean_data = [stork_data[i: i+window].mean() for i in range(len(stork_data) - window + 1)]
'''
# 这部分拆开写的话比较麻烦,建议按上面的写法
mean_data = np.zeros(len(stork_data) - window + 1)
for i in range(len(stork_data) - window + 1):mean_data[i] = stork_data[i: i+window].mean()
'''
# print(mean_data)x = range(len(stork_data))plt.plot(x, stork_data, 'r--', x[window-1:], mean_data, 'b-.')
plt.show()
最后绘制的图表如下:
大家可以根据自己的喜好,通过修改绘图的参数来修改图像样式。除了自己从计算到绘图来实现移动平均线,我们还可以使用一个封装好的第三方库来更快的实现这个功能。
量化投资第三方库:abupy
这个库是由“阿布量化“研发开源的,他的GitHub入口点这里,使用pip语句即可完成安装
pip install abupy
操作过程描述:通过abupy库调用pd_rolling_mean()函数即可实现移动平均线的计算,并返回计算结果的DataFrame数据类型,进一步使用DataFrame对象的 .plot()函数实现绘制移动平均线
- 函数:pd_rolling_mean(data, window)
- data参数需为DataFrame对象类型,一般为从证券数据的DataFrame提取出来的每日收盘价那一列
- window参数为绘制的是几日移动平均线,控制每次求平均值的窗口大小
我们使用的数据为通过abupy库导入的tsla的历史数据
import abupy
import matplotlib.pyplot as plt
import mpl_finance as mpf
from matplotlib.dates import date2num
from abupy import ABuSymbolPd, pd_rolling_mean# ———————————————————— #
# ———— 默认参数设置 ———— #
# ———————————————————— #
__colorup__ = "red"
__colordown__ = "green"abupy.env.enable_example_env_ipython() # 使用沙盒数据,目的是和书中一样的数据环境,不使用会报错
tsla_df = ABuSymbolPd.make_kl_df('usTSLA', n_folds=2) # 固定导入tsla的行情数据
tsla_df = tsla_df[:200] # 选取前200个,数据过多不易观察print(tsla_df[:10])
# ———————————————————— #def plot_ochl(data_df=tsla_df, axs=None, show=False):'''绘制烛状图:param data_df: 输入的数据,默认采用tsla的历史行情数据,输入的数据类型目前只支持DataFrame类型:param axs: 是否在子图上绘制:param show: 是否显示图像:return:'''drawer = plt if axs is None else axsfig, ax = drawer.subplots(figsize=(14, 7))qutotes = []for index, (d, o, c, h, l) in enumerate(zip(data_df.index, data_df.open, data_df.close,data_df.high, data_df.low)):d = date2num(d) # 蜡烛图的日期要使用matplotlib.finance.date2num进行转换为特有的数字值val = (d, o, c, h, l) # 日期,开盘,收盘,最高,最低组成tuple对象valqutotes.append(val) # 加val加入qutotes# 使用mpf.candlestick_ochl进行蜡烛绘制,ochl代表:open,close,high,lowmpf.candlestick_ochl(ax, qutotes, width=0.6, colorup=__colorup__, colordown=__colordown__)ax.autoscale_view()ax.xaxis_date()if show:plt.show()def plot_avgline(data_df=tsla_df, axs=None, window=[30, 60, 90], show=False):'''绘制移动平均线:param data_df: 输入的数据,默认采用tsla的历史行情数据,输入的数据类型目前只支持DataFrame类型:param axs: 是否在子图上绘制:param window: 窗口大小,可以是列表或者单个数值:param show: 是否显示图像:return:'''# drawer = plt if axs is None else axs# 判断window是否为列表if isinstance(window, list):the_legend = []for w in window:if isinstance(w, int):# 调用pd_rolling_mean()函数计算得到移动平均值pd_rolling_mean(data_df.close, window=w).plot()the_legend.append(str(w)+' mv')elif isinstance(w, str):pd_rolling_mean(data_df.close, window=int(w)).plot()the_legend.append(w + ' mv')else:try:raise TypeError('the type of element in list [- window -] is not int or string!')except TypeError:print('raise, try except')plt.legend(the_legend, loc='best')# 判断window是否为intelif isinstance(window, int):pd_rolling_mean(data_df.close, window=window).plot()plt.legend(window + ' mv', loc='best')# 提前捕获并输出异常else:try:raise TypeError('[- window -] type is not int or list!')except TypeError:print('raise, try except')if show:plt.show()if __name__ == '__main__':plot_ochl() # 绘制烛状图,会新建画布plot_avgline(show=True) # 绘制移动平均图
最后的图像如下:
结合之前的绘图篇1,大家已经掌握了三个最常用的函数了,可以试着自己组合函数观察输出结果,下一节将带大家学习如何绘制黄金分割线,为我们的图表增添新的内容。
欢迎大家关注我们
我们的抖音号:金融观察(JRGC8888)
量化投资常用技能——绘图篇 2:绘制移动平均线相关推荐
- 量化投资常用技能——绘图篇 1:绘制股票收盘价格曲线和ochl烛状图
量化投资常用技能--绘图篇 1 量化投资 绘图技能 Python绘图库:matplotlib 绘制烛状图库:mpl_finance 之后的博客讲解深度会逐渐提升,将包括一下几个方面: 绘图 指标公式与 ...
- 量化投资常用技能——指标篇1:详解 MACD指标绘制、及其计算过程和作用
量化投资常用技能 系列文章目录 我们已经介绍了三篇关于量化投资方面绘图的文章,大家有兴趣可以了解一下 绘图篇 量化投资常用技能--绘图篇 1:绘制股票收盘价格曲线和ochl烛状图 量化投资常用技能-- ...
- 量化投资常用技能——指标篇3:详解RSI指标,及其代码实现和绘图
量化投资常用技能 系列文章目录 我们已经介绍了三篇关于量化投资方面绘图的文章和两篇指标类的推导和介绍的文章,大家有兴趣可以了解一下 绘图篇 量化投资常用技能--绘图篇 1:绘制股票收盘价格曲线和och ...
- 量化投资常用技能——指标篇2:详解BOLL(布林线)指标,及其代码实现和绘图
量化投资常用技能 系列文章目录 我们已经介绍了三篇关于量化投资方面绘图的文章和一篇指标类的推导和介绍的文章,大家有兴趣可以了解一下 绘图篇 量化投资常用技能--绘图篇 1:绘制股票收盘价格曲线和och ...
- python pyplot k线图_量化之路-python绘图-使用matplotlib绘制股票K线图(附代码)
最近不知道在瞎忙什么,学习速度有点慢,更新也比较少,需要反思一下. 在学习完python爬虫和获取股票数据技能后,接下来需要将数据输出称为图形,以便查看趋势,以及分析趋势. 重新梳理下需要学会的技能步 ...
- 量化投资常用词汇解释
https://wizardforcel.gitbooks.io/python-quant-uqer/11.html 金融知识 1. 隐含波动率 2. 我们想知道下面的一只期权的价格: 当前价 spo ...
- 张丹带你用R语言开始量化投资
关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习,问答.求职一站式搞定! 前言 做数据分析的朋友,一定知道R语言 ...
- python量化投资必背代码-量化投资:用Python实现金融数据的获取与整理
小编说:数据可以说是量化投资的根本,一切投资策略都是建立在数据基础上的.本文以优矿网为例,带领大家用Python实现金融数据的获取与整理. 本文选自<Python与量化投资:从基础到实战> ...
- 量化金融投资及其python应用_量化投资:用Python实现金融数据的获取与整理
小编说:数据可以说是量化投资的根本,一切投资策略都是建立在数据基础上的.本文以优矿网为例,带领大家用Python实现金融数据的获取与整理. 本文选自<Python与量化投资:从基础到实战> ...
最新文章
- 基于Matlab和Wind SQL数据库的通用选股策略回测程序
- C语言实现臭皮匠排序stooge sort 算法(附完整源码)
- 每日程序C语言39-不带头结点的头插法创建链表
- 21行代码AC——习题3-7 DNA序列(UVa-1368)_解题报告
- 4k视频分辨率的码流_8K电视来了!但是8K视频仍很遥远
- 统计表达式二叉树操作数个数
- 大学计算机基础应当掌握的内容,大学计算机基础课程教学大纲2014版.pdf
- 国编是什么,需要什么条件,是什么流程?
- Exchange 2013 、Lync 2013、SharePoint 2013
- esper(4-2)-Category Context
- UEFI学习 (一) ——下载与编译
- 天勤2022数据结构(七)排序
- 微信红包c语言程序,微信抢红包软件的C语言原理
- 显卡虚拟化--最强实践
- 给自己职业发展的建议
- Meta 将使用微软 Azure 最新虚拟机 (VM) 系列,多达 5400 个 GPU
- 关于sui mobile和light7的一些看法
- 【CC精品教程】ContextCapture(CC)集群处理环境部署图文教程
- python value iteration算法玩倒立摆(inverted pendulum)
- Sketch基础学习
热门文章
- MySQL34-其他数据库日志
- 管理信息化涉及的领域
- unicode 和 GB2312 编码对应表
- Capacitor 新一代混合应用“神器” 会代替Cordova吗??
- 苹果台式机_苹果未来5年的CPU路线图泄露,苹果放出WWDC 2020细节
- 家用计算机相比工控机优点,具体分析工控机比一般的PC的优势
- 关于Android Studio中点9图的编译错误问题:Some file crunching failed
- 《FPGA学习》->呼吸灯
- 车载DSP音频功放频率响应曲线2.5到20khz增益降太多是什么原因?
- 【Arduino实验】霍尔开关传感器例程