【量化交易笔记】4.移动平均值的实现
上一讲已经讲A股的数据下载到本地或保存数据库,我们可以随时使用。
移动平均MA(Moving Average) ,是用统计分析的方法,将一定时期内的证券价格(指数)加以平均,并把不同时间的平均值连接起来,形成一根MA,用以观察证券价格变动趋势的一种技术指标。
下面我们从K 线图中的均线讲解移动平均值,如 5日均线(周),10日均线(半月),20日均线(月),250日均线(年)。在肌市多头排列,空头排列这些专业名称,我在以后讲解都需要用到移动平均值。多头排列,即小周期的均值大于大周期的均值,即小周期均线在大周期均线之上,反之,即空头排列。
除了移动平均之外,加权移动平均(Weighted Moving Average,WMA),指数移动平均值(Exponential Moving AverageEMA),也是类似指标,在股市也有着广泛的应用。
原理
在讲移动平均值前,让我先了解简单平均值:
M=1N∗(X1+X2+⋯+XN)=1N∑i=1NM=\frac{1}{N}*(X_1+X_2+ \cdots +X_N)=\frac{1}{N} \sum_{i=1}^N M=N1∗(X1+X2+⋯+XN)=N1i=1∑N
这就是我们平时讲的一般意义的平均值。而移动平均值,给定一个移动窗口,来计算一系列平均值。
我们以百度百科的例子。
原数据列为: X1,X2,X3,⋯,XnX_1,X_2,X_3,\cdots,X_n X1,X2,X3,⋯,Xn 现以窗口长度为 3,进行移动平均值,公式如下:
X1+X2+X33,X2+X3+X43,⋯,Xn−2+nn−1+Xn3\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,⋯,3Xn−2+nn−1+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
| A | B | |
|---|---|---|
| 0 | 1 | NaN |
| 1 | 2 | NaN |
| 2 | 3 | 2.0 |
| 3 | 4 | 3.0 |
| 4 | 5 | 4.0 |
| 5 | 6 | 5.0 |
| 6 | 7 | 6.0 |
| 7 | 8 | 7.0 |
| 8 | 9 | 8.0 |
| 9 | 10 | 9.0 |
可以发现B2=(A0+A1+A2)/3, B3=(A1+A2+A3)/3, B4=(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格式文件,进行手动安装。
方法如下:
- 找到自己电脑的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.”这一行下面。 - 在命令行中(命令行的打开方式在文章最后的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_5name = '{}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 ,即涨跌幅,也可以通过pandas的pct_change() 函数 来获得,
dataframe.close.pct_change()
原理即
收益当前=收盘价当前−收盘价前交易日收盘价前交易日收益_{当前}=\frac{收盘价_{当前} - 收盘价_{前交易日}}{收盘价_{前交易日}} 收益当前=收盘价前交易日收盘价当前−收盘价前交易日
这个函数,在A股又称收益率,如果带上参数, pct_change(5)可以表示5天的收益率。
相关文章:
【量化交易笔记】4.移动平均值的实现
上一讲已经讲A股的数据下载到本地或保存数据库,我们可以随时使用。 移动平均MA(Moving Average) ,是用统计分析的方法,将一定时期内的证券价格(指数)加以平均,并把不同时间的平均值连接起来,形成…...
2023年3月份的野兔在线工具系统版本更新
这个是野兔在线工具系统中文版更新,这次更新的功能,和修改的问题还是比较多的,也修复系统部分功能,应该也是目前市面上在线工具比较多的一个系统了。系统名称:野兔在线工具系统系统语言:中文版系统源码&…...
科技成果赋智中小企业深度行 边界无限靖云甲ADR入选十大优秀案例
近日,国家工业信息安全发展研究中心、青岛市工业和信息化局、青岛市民营经济发展局、青岛市即墨区人民政府、青岛蓝谷管理局联合举办的科技成果赋智中小企业“深度行”活动(青岛站)成功举办,同步举行了赋智“深度行”活动…...
我们的理性何处安放
每天工作压力和各种人相处都让我们非常忙碌,我们上大学,努力工作,都是想获得更好的人生场景,素养,提升自身的认知,这样就是对我们大多数人生最负责任。如何让自己理性与人为善,并能被人温柔以待…...
RecyclerView的详细使用
首先就是了解ListView和RecyclerView的区别1.ListView相比RecycleView的优点a.ListView实现添加HeaderView和FooderView有直接的方法b.分割线可以直接设置c.ListView实现onItemClickListence和onItemLongClickListence有直接的方法2.RecyclerView相比ListView的优点a.封装了Vie…...
一、向量及其线性运算
🙌作者简介:数学与计算机科学学院出身、在职高校高等数学专任教师,分享学习经验、生活、 努力成为像代码一样有逻辑的人! 🌙个人主页:阿芒的主页 ⭐ 高等数学专栏介绍:本专栏系统地梳理高等数学…...
Spring Cloud/Spring Cloud Alibaba核心知识总结
Spring Cloud核心知识总结 springCloud是一个服务治理平台,若干个框架的集合,提供了全套的分布式系统的解决方案。包含:服务注册与发现、配置中心、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息、分布式事务等等。 SpringC…...
Locust框架从0到1入门
Locust介绍 Locust是使用Python语言编写实现的开源性能测试工具,可以用来测试Web应用程序、API、数据库等各种应用程序的性能,使用起来简洁、轻量、高效,并发机制基于gevent协程,可以实现单机模拟生成较高的并发压力。中文意为&a…...
C++:整数(short ,int,long,long long)表示范围
整形 C用short、int、long 、long long来表示整数的整形,同一整形也分为有符号(signed)和无符号(unsigned)两种。数据长度与操作系统和编译器的位数有关,其能够表示的范围也有所不同。接下来本文将用代码的…...
会声会影2023旗舰版新功能介绍,Corel VideoStudio Ultimate2023以及电脑系统配置要求
会声会影2023中文旗舰版功能非常强大的视频编辑软件,非常专业的使用效果,会声会影2023中文版可以针对剪辑电影进行使用,非常强大的色彩校正方式,无论什么光线下进行拍摄,都可以通过后期进行调整,并且里面超…...
软件测试用例篇(5)
测试是否运行代码去划分? 1)静态测试: 不运行代码,检查代码的风格,格式是否符合公司的标准规范,检查代码的逻辑结构是否满足需求要实现的功能 看代码,不运行代码,通过静态分析代码的语法,编写规…...
三个修饰符
三个修饰符三个修饰符一、abstract1.1 修饰类1.2 修饰方法二、final2.1 修饰类2.2 修饰方法2.3 修饰变量2.3.1 修饰属性2.3.2 修饰局部变量2.3.3 修饰方法的参数2.3.4 常量三、static关键字3.1 修饰属性3.2 修饰方法3.3 修饰代码块3.4 继承时的执行顺序三个修饰符 一、abstrac…...
JVM调优面试题——参数命令专题
文章目录1、JVM参数有哪些?1.1、 标准参数1.2、-X参数1.3、 -XX参数1.4、 其他参数1.5、 查看参数1.6、 设置参数的常见方式1.7、 常用参数含义2、JVM常用命令有哪些?2.1、jps2.2、jinfo2.3、jstat2.4、jstack2.5、jmap3、你会估算GC频率吗?4、 内存溢出…...
单例模式(设计模式详解)
单例模式 描述 单例模式是一种创建型模式,它的目的是确保一个类只有一个实例,并提供全局访问点。这个实例可以被多个客户端共享,从而避免创建多个实例所带来的资源浪费和不必要的复杂性。 实现 懒汉模式 public class LasySingleton {priv…...
设计一份关于文化遗产视频的调查问卷
参考文献:[1]任洁. 重庆美食类短视频传播策略研究[D].重庆交通大学,2021.DOI:10.27671/d.cnki.gcjtc.2021.000699.📰1 设计背景现已制作一些关于文化遗产的时长4-5分钟的视频,需要面向在校大学生收集他们对视频的看法从而分析视频的传播效果&…...
Linux内核移植
内核移植半导体厂商会从linux内核官网下载某个版本,将其移植到自己的CPU上,测试成功后就会将其开放给该半导体的厂商的CPU开发者,开发者下载其提供的linux内核,然后将其移植到自己的 产品上。1、NXP官方开发板Linux内核编译测试编…...
忆享科技优化入职培训加强人效管理全面迎接新挑战
-优化入职培训-忆享科技加强人效管理入职培训课程 ✦ KPI系统上线 ✦ 砥砺前行前言许多企业随着自身的不断发展,对于各类人才引进需求也越来越迫切,一批批新员工的加入,公司规模逐渐扩大,给公司带来了全新的血液。但在大量新员工加…...
Spring——注解开发依赖注入和管理第三方bean
自动装配(引用类型) 环境准备: 文件结构如下图所示,Dao层的实现类里面有一个save方法,Service层里面的实现类有一个BookDao的声明和一个set方法,同时也有一个save方法,配置类的扫描范围如图所示 在当前的一个测试类当…...
shell可能考你但是不常用的基础($篇)
前言 当你面试的时候,可能要说的架构什么都准备好了,也说的七七八八,结果到最后问了一些基础的问题答不上来或者没想起来就很容易造成社会性死亡,一个没答上来道心被破,后面就更容易懵逼了 通常造成这个问题的原因是写…...
项目管理必备:如何绘制一份优秀的甘特图?
本文一共分为两部分—— 分享60Excel甘特图模板,简单省事儿分享两种甘特图制作教程,高效快捷 第一部分——60甘特图模板 分享一些项目管理甘特图的模板,省事儿!高效!简单! Excel甘特图表模板自取…...
深入解析Shim在跨版本API兼容中的实战应用
1. 什么是Shim技术 第一次听到"Shim"这个词是在调试一个Flink连接Hive的项目时。当时Hive版本从2.3升级到3.1,本以为要重写大量代码,结果同事说"加个Shim就行了"。这种"神奇胶水"般的技术让我印象深刻。 Shim本质上是一种…...
从单体到微服务:用Ruoyi-Vue-Plus框架快速搭建多租户后台系统(含AI模块开发避坑指南)
从单体到微服务:Ruoyi-Vue-Plus框架的多租户实战与AI模块开发精要 当企业级应用需要同时服务多个客户群体时,如何确保数据隔离与系统性能的平衡成为架构设计的核心挑战。Ruoyi-Vue-Plus作为一款基于Spring Boot的快速开发框架,其多租户实现机…...
为什么你的unipush消息收不到?详解个推通道状态检测与事件触发逻辑
为什么你的UniPush消息收不到?深度解析推送失效的7大关键因素 在移动应用开发中,消息推送是维系用户活跃度的核心功能之一。许多开发者在使用UniPush服务时,经常会遇到消息未能如期送达的困扰。本文将系统性地剖析消息推送失效的底层逻辑&…...
旧手机秒变4K摄像头:Iriun Webcam保姆级配置指南(附USB连接技巧)
旧手机秒变4K摄像头:Iriun Webcam保姆级配置指南(附USB连接技巧) 你是否曾为台式机缺少高清摄像头而烦恼?又或者手头闲置的安卓手机不知如何利用?将旧手机改造成专业级4K摄像头,不仅成本低廉,还…...
Redis监听Key过期事件报错?教你两种绕过CONFIG命令的实用方案
Redis监听Key过期事件的两种安全实践方案 Redis的Key过期事件监听是许多业务场景中的核心需求,比如订单超时处理、会话管理、缓存刷新等。但在云服务环境中,开发者常会遇到ERR unknown command CONFIG的报错,这通常是因为云服务提供商出于安全…...
RWKV7-1.5B-g1a参数详解教程:max_new_tokens/temperature/top_p调优实操手册
RWKV7-1.5B-g1a参数详解教程:max_new_tokens/temperature/top_p调优实操手册 1. 模型简介 rwkv7-1.5B-g1a 是基于新一代 RWKV-7 架构的多语言文本生成模型,特别适合中文场景下的基础问答、文案创作和简短总结任务。作为轻量级模型,它在保持良…...
Java后端开发——真实面试汇总(持续更新)
一.浙江大学研究院一面(面试Time:1小时30分钟)1. 面试官自我介绍,同时我开始自我介绍2. 平时接触到哪些数据结构?3. ArrayList和LinkedList的主要区别是什么?4. 数组和链表的主要区别是什么?5.…...
TAICHI-flet终极排障指南:从新手到高手的完整解决方案
TAICHI-flet终极排障指南:从新手到高手的完整解决方案 【免费下载链接】TAICHI-flet 基于flet的一款windows桌面应用,实现了浏览图片、音乐、小说、漫画、各种资源的功能。 项目地址: https://gitcode.com/GitHub_Trending/ta/TAICHI-flet TAICHI…...
Pixel Fashion Atelier保姆级教程:从INSERT COIN按钮到像素粒子物理引擎解析
Pixel Fashion Atelier保姆级教程:从INSERT COIN按钮到像素粒子物理引擎解析 1. 像素时装锻造坊简介 像素时装锻造坊是一款融合了复古游戏美学与现代AI技术的图像生成工具。它基于Stable Diffusion和Anything-v5模型构建,专为时尚设计和像素艺术创作而…...
OpenClaw+GLM-4.7-Flash成本对比:自建模型比API调用节省30%token消耗
OpenClawGLM-4.7-Flash成本对比:自建模型比API调用节省30%token消耗 1. 为什么需要关注token消耗 上周五凌晨两点,我的OpenClaw突然停止了周报自动化任务。查看日志发现是API额度耗尽——当月累计消耗已超过商用GLM-4.7-Flash的套餐限额。这次意外让我…...
