【量化交易笔记】4.移动平均值的实现

news2024/9/25 17:17:36

上一讲已经讲A股的数据下载到本地或保存数据库,我们可以随时使用。
移动平均MA(Moving Average) ,是用统计分析的方法,将一定时期内的证券价格(指数)加以平均,并把不同时间的平均值连接起来,形成一根MA,用以观察证券价格变动趋势的一种技术指标。

下面我们从K 线图中的均线讲解移动平均值,如 5日均线(周),10日均线(半月),20日均线(月),250日均线(年)。在肌市多头排列,空头排列这些专业名称,我在以后讲解都需要用到移动平均值。多头排列,即小周期的均值大于大周期的均值,即小周期均线在大周期均线之上,反之,即空头排列。
除了移动平均之外,加权移动平均(Weighted Moving Average,WMA),指数移动平均值(Exponential Moving AverageEMA),也是类似指标,在股市也有着广泛的应用。

原理

在讲移动平均值前,让我先了解简单平均值:
M = 1 N ∗ ( X 1 + X 2 + ⋯ + X N ) = 1 N ∑ i = 1 N M=\frac{1}{N}*(X_1+X_2+ \cdots +X_N)=\frac{1}{N} \sum_{i=1}^N M=N1(X1+X2++XN)=N1i=1N
这就是我们平时讲的一般意义的平均值。而移动平均值,给定一个移动窗口,来计算一系列平均值。
我们以百度百科的例子。
原数据列为: X 1 , X 2 , X 3 , ⋯   , X n X_1,X_2,X_3,\cdots,X_n X1,X2,X3,,Xn 现以窗口长度为 3,进行移动平均值,公式如下:
X 1 + X 2 + X 3 3 , X 2 + X 3 + X 4 3 , ⋯   , X n − 2 + n n − 1 + X n 3 \frac{X_1+X_2+X_3}{3},\frac{X_2+X_3+X_4}{3},\cdots,\frac{X_{n-2}+n_{n-1}+X_n}{3} 3X1+X2+X3,3X2+X3+X4,,3Xn2+nn1+Xn

代码实现

为了方便描述,将数列都放在 pandas 里;

X= np.arange(1,11)
df=pd.DataFrame(X,columns=['A'])
for i in range(3,df.shape[0]):
    df.loc[i,'B']=(df.loc[i-3][0]+df.loc[i-2][0]+df.loc[i-1][0])/3
df
AB
01NaN
12NaN
232.0
343.0
454.0
565.0
676.0
787.0
898.0
9109.0

可以发现B2=(A0+A1+A2)/3B3=(A1+A2+A3)/3B4=(A2+A3+A4)/3。由于前面2行个无法计算一般情况下是删除。
弄清楚原理后,pandas 函数和 Ta-lib 库都可以提供相关操作,获得一致结果。

  • pandas 函数
# 直接用pandas 的rolling函数
df.A.rolling(window=3).mean()
  • ta-lib 库
# talib 的MA 函数
talib.MA(df.A, timeperiod = 3)

这里在安装talib有个坑,需提醒大家的。
不能直接用命令安装pip install Ta-Lib,可能会提示安装不成功或错误。
原因是不同的python版本,需要不同的talib库。因此需要自己下载whl格式文件,进行手动安装。
方法如下:

  1. 找到自己电脑的python 版本 ,具体 命令为‘!python -V’,比如得到的是3.6.4
    如:若本机安装是32位的python3.6,则选TA_Lib‑0.4.17‑cp36‑cp36m‑win32.whl下载;
    下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/
    在后面找到“TA-Lib: a wrapper for the TA-LIB Technical Analysis Library.”这一行下面。
  2. 在命令行中(命令行的打开方式在文章最后的Tips里),进入此whl文件所在的目录,执行命令:
    pip install 下载的whl文件名
    如:pip install TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl
    pip install 文件所在的绝对路径+文件名
    如:pip install D:my_packages TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl

应用

现在以收盘价,画出5日,10日,20日,均线。为了方便我们定义一个函数。

def ma(df, n=5, factor='close'):
    """
    计算均线因子
    :param df: 待计算扩展因子的DataFrame
    :param n: 待计算均线的周期,默认计算5日均线
    :param factor: 待计算均线的因子,默认为收盘价
    :return: 包含扩展因子的DataFrame
    """
    # 均线名称,例如,收盘价的5日均线名称为ma_5,成交量的5日均线名称为volume_ma_5
    name = '{}ma_{}'.format('' if 'close' == factor else factor + '_', n)
    # 取待计算均线的因子列
    s = pd.Series(df[factor], name=name, index=df.index)
    
    # 利用rolling和mean计算均线数据
    s = s.rolling(center=False, window=n).mean()

    # 将均线数据添加到原始的DataFrame中
    df = df.join(s)

    # 均线数值保留两位小数
    df[name] = df[name].apply(lambda x: round(x + 0.001, 2))
    return df
# 均线周期列表
ma_list = [5, 10, 20, 30, 60]

newxx=pd.DataFrame()
newxx['close']=dataframe['close']
for i in ma_list:
    newxx=ma(newxx,i)
# 数据太多,就取最后100个进行画图。
newxx[-100:].plot(figsize=(10, 8));

在这里插入图片描述

插播一个知识点

在采集到A股数据中有一列 pctChg ,即涨跌幅,也可以通过pandaspct_change() 函数 来获得,

dataframe.close.pct_change()

原理即
收 益 当前 = 收盘 价 当前 − 收盘 价 前交易日 收盘 价 前交易日 收益_{当前}=\frac{收盘价_{当前} - 收盘价_{前交易日}}{收盘价_{前交易日}} 当前=收盘前交易日收盘当前收盘前交易日
这个函数,在A股又称收益率,如果带上参数, pct_change(5)可以表示5天的收益率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/399764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git 分支管理常用指令

不同分支有着自己的工作区和本地仓库,相互之间看不到,也影响不到,只有在合并分支的时候,才会将某一个分支做出的修改更新到另一个分支上。 目录 1、git branch(分支查看、创建、删除) (1) 查看分支 (2) …

园区网双出口问题解决方案

园区网双出口拓扑图公司向运营商租⽤两条带宽,ISP1为100M,ISP2为50M,默认情况下园区⽤户访问Internet优先⾛ISP1链路,请提供解决⽅案。解决方案1:接入路由为静态时解决方案2:当接入为动态路由时解决方案3&a…

荣耀MagicBook电脑系统损坏怎么U盘重装系统?

荣耀MagicBook电脑系统损坏怎么U盘重装系统?有用户电脑开机之后,无法正常进入桌面了,而是变成了一个蓝屏的界面。通过重启和进行系统修复都没有用。这个情况只有去进行U盘重装系统了。接下来我们就来看看以下详细的重装系统方法教学吧。 准备…

Python之函数参数细讲

文章目录前言一、了解形式参数和实际参数1. 通过作用理解2. 通过一个比喻来理解形式参数和实际参数二、位置参数1. 数量必须与定义时一致2. 位置必须与定义时一致三、关键字参数四、为参数设置默认值五、可变参数1. *parameter2. **parameter总结前言 在调用函数时,…

Spark MLlib概述

Spark MLlib概述机器学习房价预测模型选型数据探索数据提取准备训练样本模型训练模型效果评估机器学习 机器学习的过程 : 基于历史数据,机器会根据一定的算法,尝试从历史数据中挖掘并捕捉出一般规律再把找到的规律应用到新产生的数据中,从而…

【拜占庭将军问题】这一计谋,可以让诸葛丞相兴复汉室

我们都知道,诸葛亮第一次北伐是最可能成功的,魏国没有防备,还策反了陇西,陇西有大量的马匹可以装备蜀国骑兵,可惜街亭一丢,那边就守不住了 当时我不在,只能作诗一首~ 如果穿越过去,…

SpringBoot下的Spring——DAY04——动态代理总结、AOP、自定义注解进行拦截、动态获取注解参数、通知方法(内含源代码)

SpringBoot下的Spring——DAY04——动态代理总结、AOP、自定义注解进行拦截、动态获取注解参数、通知方法(内含源代码) 源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87549575 目录SpringBoot下的Spring——DAY0…

【点云学习】多时相激光雷达点云

多时相雷达数据(multi-tempral LiDAR data) 1 一种多时相激光雷达数据建筑物变化检测方法-汪承义(2013) 背景:空间分辨率的提高引入了“类内可分性”增加与“类间可分性”降低;遮挡与阴影的存在使问题变得…

pytorch权值初始化和损失函数

pytorch权值初始化和损失函数 权值初始化 梯度消失与爆炸 针对上面这个两个隐藏层的神经网络,我们求w2的梯度 可以发现,w2的梯度与H1(上一层网络的输出)有很大的关系,当h1趋近于0时,w2的梯度也趋近于0&am…

swoole的强大之处,你可能只是略知一二!

首先 swoole 是 php 的一个扩展程序swoole 是一个为 php 用 c 和 c 编写的基于事件的高性能异步 & 协程并行网络通信引擎swoole 是一个多进程模型的框架,当启动一个进程 swoole 应用时,一共会创建 2nm 个进程,n 为 worker 进程数&#xf…

maven将jar文件上传至本地仓库及私服

maven官方仓库有些依赖并不存在&#xff0c;现在项目都是maven直接获取jar&#xff0c;当maven获取不到时&#xff0c;需要我们把jar上传至maven仓库。已 ImpalaJDBC41.jar 文件为例&#xff0c;如&#xff1a;希望上传后&#xff0c;设置的依赖为&#xff1a;<dependency&g…

数字化工厂装配线生产管理看板系统

电力企业业务复杂&#xff0c;组织结构复杂&#xff0c;不同的业务数据&#xff0c;管理要求也不尽相同。生产管理看板系统针对制造企业的生产应用而开发&#xff0c;能够帮助企业建立一个规范准确即时的生产数据库。企业现状&#xff1a;1、计划不清晰&#xff1a;生产计划不能…

python程序设计基础 实验四

⭐python实验专栏&#xff0c;欢迎订阅与关注&#xff01; ★观前提示&#xff1a;本篇内容为python程序设计实验&#xff0c;代码内容经测试没有问题&#xff0c;但是可能会不符合每个人实验的要求&#xff0c;因此以下内容建议仅做思路参考。 一、实验目的 &#xff08;1&am…

2.webpack loader

webpack默认只能处理 以 .js 为后缀名的文件&#xff0c;其他的文件需要用loader&#xff0c;比如 css-loader 可以打包处理.css相关的文件less-loader 可以打包处理 .less相关的文件babel-loader 可以打包处理webpack无法处理的高级JS语法 目录 1 css-loader 1.1 安装 1…

[学习笔记] 2. 数据结构

数据结构视频地址&#xff1a;https://www.bilibili.com/video/BV1uA411N7c5 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。简单来说&#xff0c;数据结构就是设计数据以何种方式组织并存储在计算机中。 比如:列表、集合与字…

“小霞”黄绮珊绮望三十巡回演唱会将于3月18日杭州大剧院震撼开唱!

•中年成名 四十余载静待盛放 歌手黄绮珊&#xff0c;1991年正式进入歌坛&#xff0c;至今已满三十周年。黄绮珊前半生的歌手之路好像并不是那么顺畅。虽然一直有着华语乐坛的顶尖歌唱实力&#xff0c;但在45岁之前&#xff0c;黄绮珊一直处于“歌红人不红”的状态。不少人听过…

postgresql 自动备份 bat实现

postgres数据据备分,用cmd命令有些烦,写了个bat实现 BAT脚本中常用的注释命令有rem、@rem和:: rem、@rem和::用法都很简单,直接在命令后加上要注释的语句即可。例如下图,语言前加了rem,运行BAT时就会自动忽略这个句子。需要注释多行时,每行前面都要加上rem、@rem和::。…

Kalman Filter in SLAM (3) ——Extended Kalman Filter (EKF, 扩展卡尔曼滤波)

文章目录1. 线性系统的 Kalman Filter 回顾2. Extended Kalman Filter 之 DR_CAN讲解笔记2.1. 非线性系统2.2. 非线性系统线性化2.2.1. 状态方程f(xk)f(x_k)f(xk​)在上一次的最优估计状态x^k−1\hat{x}_{k-1}x^k−1​处线性化2.2.2. 观测方程h(xk)h(x_k)h(xk​)在这一次的预测…

企业知识管理应该怎么做?

企业知识管理是指企业利用各种信息技术手段&#xff0c;对企业内部的知识进行收集、整理、分析和传递&#xff0c;以提高企业的知识水平和竞争力。企业知识管理涉及到企业内部的各种知识&#xff0c;包括技术知识、专业知识、经验知识、市场知识等。 企业知识管理的方式可以分为…

DETR目标检测算法学习记录

引言 无论是One Stage中的YOLO还是Two-Stage中的Faster-RCNN&#xff0c;其虽然都在目标检测领域有着一席之地&#xff0c;但无一例外都是基于Anchor的模型算法&#xff0c;这就导致其在输出结果时不可避免的进行一些如非极大值抑制等操作来进一步选择最优解&#xff0c;这会带…