Python 实现 ROC指标计算(变动率指标):股票技术分析的利器系列(15)

Python 实现 ROC指标计算(变动率指标):股票技术分析的利器系列(15)

    • 介绍
      • 算法公式
    • 代码
      • rolling函数介绍
      • 核心代码
        • 计算OSC
    • 完整代码


介绍

ROC(变动率指标)是一种技术分析指标,用于衡量价格变动的速度和幅度,计算方式为当前收盘价与一定期间前收盘价的变动率。

先看看官方介绍:

ROC(变动率指标)
用法
1.本指标的超买超卖界限值随个股不同而不同,使用者应自行调整;
2.本指标的超买超卖范围,一般介于±6.5之间;
3.本指标用法请参考MTM 指标用法;
(1)ROC从下向上突破ROCMA,买入信号;
(2)ROC从上向下跌破ROCMA,卖出信号;
(3)股价续创新高,而ROC未配合上升,意味上涨动力减弱;
(4)股价续创新低,而ROC未配合下降,意味下跌动力减弱;
(5)股价与ROC在低位同步上升,将有反弹行情;反之,从高位同步下降,将有回落走势。
4.本指标可设参考线。

算法公式

ROC:100*(CLOSE-REF(CLOSE,N))/REF(CLOSE,N);
MAROC:MA(ROC,M);
优势劣势
可以帮助识别价格趋势的变化对价格波动较大的资产可能产生偏差
对价格波动的速度和幅度提供了直观的量化指标对于不同的周期选择可能导致结果不同
简单易懂,计算方法直观可能产生滞后效应
可以结合其他指标一起使用来确认交易信号对于单一指标交易策略可能不够可靠

ROC 指标的优势在于其简单易懂的计算方法以及对价格趋势变化的直观量化。然而,它也存在一些缺点,比如可能对价格波动较大的资产产生偏差,对周期选择敏感,可能产生滞后效应等。因此,在实际应用中,通常需要结合其他指标一起使用来确认交易信号,以减少误判和提高策略的可靠性。

代码

rolling函数介绍

rolling 函数通常与其他函数(如 meansumstd 等)一起使用,以计算滚动统计量,例如滚动均值、滚动总和等。

以下是 rolling 函数的基本语法:

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)
  • window: 用于计算统计量的窗口大小。
  • min_periods: 每个窗口最少需要的非空观测值数量。
  • center: 确定窗口是否居中,默认为 False
  • win_type: 窗口类型,例如 Noneboxcartriang 等,默认为 None
  • on: 在数据帧中执行滚动操作的列,默认为 None,表示对整个数据帧执行操作。
  • axis: 执行滚动操作的轴,默认为 0,表示按列执行操作。
  • closed: 确定窗口的哪一端是闭合的,默认为 None

核心代码

计算OSC
# 计算 ROC
def calculate_roc(data, n):return 100 * (data['CLOSE'] - data['CLOSE'].shift(n)) / data['CLOSE'].shift(n)
  1. data['CLOSE']:获取收盘价数据列。
  2. data['CLOSE'].shift(n):获取收盘价数据列向上偏移 n 个周期的数据。这个操作会使得当前收盘价与过去第 n 个周期的收盘价相对应。
  3. (data['CLOSE'] - data['CLOSE'].shift(n)):计算当前收盘价与过去第 n 个周期的收盘价之间的差值。这部分计算得到的是价格的变动量。
  4. (data['CLOSE'] - data['CLOSE'].shift(n)) / data['CLOSE'].shift(n):将变动量除以过去第 n 个周期的收盘价,得到的是价格变动量相对于历史价格的比例,即价格的变动率。
  5. 100 * (data['CLOSE'] - data['CLOSE'].shift(n)) / data['CLOSE'].shift(n):最后将变动率乘以 100,以得到以百分比表示的变动率。

完整代码

import pandas as pddata = {'CLOSE': 填每日收盘的数据,'HIGH': 填每日最高的数据,'LOW': 填每日最低的数据'OPEN': 填每日开盘的数据'VOL': 填每日交易量的数据
}df = pd.DataFrame(data)# 计算 ROC
def calculate_roc(data, n):return 100 * (data['CLOSE'] - data['CLOSE'].shift(n)) / data['CLOSE'].shift(n)# 计算 MAROC
def calculate_maroc(roc, m):return roc.rolling(window=m).mean()n = 12
m = 6# 计算 ROC
df['ROC'] = calculate_roc(df, n)# 计算 MAROC
df['MAROC'] = calculate_maroc(df['ROC'], m)print(df)

在这里插入图片描述

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

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

相关文章

windows系统使用Vscode在WSL调试golang本地进程

背景: windows10企业版 vscodegolang1.20 wsl编译运行。 vscode 使用本地wsl进行进程attach操作,发现:Access is denied. 本地进程启动,vscode调试进程。windows-Linux控制台: Starting: C:\Users\book\go\bin\dlv.exe dap --l…

Ubuntu Mysql Innodb cluster集群搭建+MaxScale负载均衡(读写分离)

Ubuntu系统版本 20.04.3 LTS (Focal Fossa) 、64位系统。 cat /etc/os-release查看Ubuntu系统是32位还是64位 uname -m如果显示“i686”,则表示安装了32位操作系统。如果显示“x86_64”,则表示安装了64位操作系统。 一、安装MySql 参考: https://blog.csdn.net/qq_3712…

什么是去中心化云计算?

去中心化云计算是一种新型的云计算方式,它与传统的中心化云计算不同,将数据和计算任务分布到多个节点上,而不是将数据集中存储在中心服务器上。这种云计算方式具有许多优势,包括提高数据安全性、降低运营成本、增强可扩展性和灵活…

MCU最小系统电路设计(以STM32F103C8T6为例)

目录 一、何为最小系统? 二、最小系统电路设计 1.电源 (1)各种名词解释 (2)为什么会有VDD_1 _2 _3区分? (3)Mirco USB (4)5v->3.3v滤波电路 &#…

Unity(第九部)物体类

拿到物体的某些数据 using System.Collections; using System.Collections.Generic; using UnityEngine;public class game : MonoBehaviour {// Start is called before the first frame updatevoid Start(){//拿到当前脚本所挂载的游戏物体//GameObject go this.gameObject;…

naive-ui-admin 表格去掉工具栏toolbar

使用naive-ui-admin的时候,有时候不需要显示工具栏,工具栏太占地方了。 1.在src/components/Table/src/props.ts 里面添加属性 showToolbar 默认显示,在不需要的地方传false。也可以默认不显示 ,这个根据需求来。 2.在src/compo…

历史新知网:寄快递寄个电脑显示器要多少钱?

以下文字信息由(新史知识网)编辑整理发布。 让我们赶紧来看看吧! 问题1:快递寄电脑显示器要多少钱? 此物有多重? 顺丰寄就可以了,但是必须是原包装的,不然不好寄。 问题2&#xff1…

vue项目从后端下载文件显示进度条或者loading

//API接口 export const exportDownload (params?: Object, peCallback?: Function) > {return new Promise((resolve, reject) > {axios({method: get,url: ,headers: {access_token: ${getToken()},},responseType: blob,params,onDownloadProgress: (pe) > {peC…

React Switch用法及手写Switch实现

问&#xff1a;如果注册的路由特别多&#xff0c;找到一个匹配项以后还会一直往下找&#xff0c;我们想让react找到一个匹配项以后不再继续了&#xff0c;怎么处理&#xff1f;答&#xff1a;<Switch>独特之处在于它只绘制子元素中第一个匹配的路由元素。 如果没有<Sw…

GCN,R-GCN,岭回归,SVR,随机森林,Adaboost

图卷积神经网络(graph convolutional network, GCN),它将卷积神经网络拓展到图结构形式 中&#xff0c;GCN因可以很好地融合图结构数据的结构特征和属性特征并且有较好的组合泛化能力而被广泛使用。 关系图卷积神经网络(relational-graph convolutional network, R-GCN)&#…

【无标题】积鼎CFD VirtualFlow:航空及汽车燃油晃动流体仿真计算及试验对比

图1 汽车储液罐内的液体晃动 燃油晃动&#xff0c;作为航空、航海及汽车工业中一个重要的物理现象&#xff0c;一直以来都受到广泛关注。在飞行器、船舶或汽车的运行过程中&#xff0c;由于外部扰动或内部燃料的消耗&#xff0c;油箱内的燃油会产生晃动。这种晃动不仅会影响燃…

【Git教程】(五)分支 —— 并行式开发,分支相关操作(创建、切换、删除)~

Git教程 分支 1️⃣ 并行式开发2️⃣ 修复旧版本中的 bug3️⃣ 分支4️⃣ 当前活跃分支5️⃣ 重置分支指针6️⃣ 删除分支7️⃣ 清理提交对象&#x1f33e; 总结 对于版本提交为什么不能依次进行&#xff0c;以便形成一条直线型的提交历史记录&#xff0c;我们认为有 以下两个…

2024热门UI设计工具推荐

最好的UI设计工具可以适应几乎每一个设计过程&#xff0c;并且有望满足您的创造性要求。但既然UI设计工具那么多&#xff0c;应该用什么工具呢&#xff1f; 在过去的几年里&#xff0c;Sketch和figma的结合一直是许多设计师的选择&#xff0c;但其他工具也提供了有竞争力的特点…

LeetCode 刷题 [C++] 第240题.搜索二维矩阵 II

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 题目分析 通过分析矩阵的特点发现&#xff0c;其左下角和右上角可以看作一个“二叉搜索树的根节…

C++ 补充之常用遍历算法

C遍历算法和原理 C标准库提供了丰富的遍历算法&#xff0c;涵盖了各种不同的功能。以下是一些常见的C遍历算法以及它们的概念和原理的简要讲解&#xff1a; for_each&#xff1a;对容器中的每个元素应用指定的函数。 概念&#xff1a;对于给定的容器和一个可调用对象&#xff…

Docker 常用操作命令备忘

Docker 一旦设置好了环境&#xff0c;日常就只要使用简单命令就可以运行和停止。 于是&#xff0c;我每次用的时候&#xff0c;都想不起来一些关键性的命令到底怎么用&#xff0c;特此记录。 一、镜像管理 从公有仓库拉取镜像 &#xff08;对于使用苹果电脑 M1/M2/M3 芯片的 …

[源码分析]webrtc音频流从接收到播放的关键流程

如图所示&#xff0c;音频流从接收到播放的核心关键流程和执行线程。 neteq中对音频流的RTP数据包进行了处理和解码操作。同时数据出现了跨线程的投递。 后面有空补上核心对象之间的关系图。 后面将添加对neteq模块的细节分析。

【.NET Core】深入理解IO之File类

【.NET Core】深入理解IO之File类 文章目录 【.NET Core】深入理解IO之File类一、概述二、File类2.1 File.AppendAllLines方法2.2 File.AppendAllText方法2.3 File.Copy 方法2.4 File.Create 方法2.5 File.Decrypt(String) 方法2.6 File.Delete(String) 方法2.7 File.Move 方法…

18 SpringMVC实战

18 SpringMVC实战 1. 课程介绍2. Spring Task定时任务1. 课程介绍 2. Spring Task定时任务 package com.imooc.reader.task

安全防御-第六次

内容安全 攻击可能只是一个点&#xff0c;防御需要全方面进行 DFI和DPI技术--- 深度检测技术 DPI --- 深度包检测技术--- 主要针对完整的数据包&#xff08;数据包分片&#xff0c;分段需要重组&#xff09;&#xff0c;之后对数据包的内容进行识别。&#xff08;应用层&…