Python 实现股票指标计算——VR

VR (Volume Ratio) - 成交量变异率

1 公式

  • AV = 股价上升日成交量;AVS = N日内AV求和
  • BV = 股价下跌日成交量;BVS = N日内BV求和
  • CV = 股价平盘日成交量;CVS = N日内CV求和
  • VR = (AVS+1/2CVS) ➗ (BVS+1/2CVS) ✖ 100
  • MAVR = VR的M日简单移动平均

2 数据准备

我们以科创50指数 000688 为例,指数开始日期为2019-12-31,数据格式如下:

3 计算过程

def calculate_vr(df: pd.DataFrame, N=26, M=6):'''计算Volume Ratio (VR) 指标和其M天移动平均线 MAVR。参数:df (pd.DataFrame): 包含至少'close'和'volume'列的DataFrame,分别代表收盘价和成交量。N (int): 用于计算VR指标的时间窗口大小,默认为26。M (int): 用于计算MAVR的时间窗口大小,默认为6。返回:pd.DataFrame: 包含VR和MAVR值的DataFrame。'''# 创建一个df的副本以避免修改原始数据data = df.copy()# 计算每日收盘价的变化data['diff'] = data['close'].diff()# 根据收盘价的变化,将成交量分为三类:# av (Accumulation Volume) - 上涨时的成交量# dv (Distribution Volume) - 下跌时的成交量# uv (Unchanged Volume) - 收盘价不变时的成交量data['av'] = np.where(data['diff'] > 0, data['volume'], 0)data['dv'] = np.where(data['diff'] < 0, abs(data['volume']), 0)data['uv'] = np.where(data['diff'] == 0, data['volume'], 0)# 计算过去N天的AV, DV, UV的滚动求和avs = data['av'].rolling(N, min_periods=M).sum()dvs = data['dv'].rolling(N, min_periods=M).sum()uvs = data['uv'].rolling(N, min_periods=M).sum()# 计算VR指标# VR = (AV_sum + 0.5 * UV_sum) / (DV_sum + 0.5 * UV_sum) * 100vr = (avs + 0.5 * uvs) / (dvs + 0.5 * uvs) * 100data['vr'] = vr# 计算VR指标的M天移动平均线 MAVRdata['mavr'] = data['vr'].rolling(M).mean()# 返回包含VR和MAVR指标的DataFramereturn data

4 注意事项

参数N=26,M=6时与东方财富软件中一致

雪球无此指标

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

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

相关文章

HDU1032——The 3n + 1 problem,HDU1033——Edge,HDU1034——Candy Sharing Game

目录 HDU1032——The 3n 1 problem 题目描述 运行代码 代码思路 HDU1033——Edge 题目描述 运行代码 代码思路 HDU1034——Candy Sharing Game 题目描述 运行代码 代码思路 HDU1032——The 3n 1 problem 题目描述 Problem - 1032 运行代码 #include <iostr…

java-jvm-栈内存溢出

在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;栈内存溢出&#xff08;Stack Overflow&#xff09;是指线程请求的栈深度超过了虚拟机允许的最大深度&#xff0c;导致JVM无法分配足够的内存来创建新的栈帧。这种情况下&#xff0c;JVM会抛出StackOverflowError异常。 …

相信开源的力量,MoonBit 构建系统正式开源

MoonBit 构建系统正式开源 作为由 AI 驱动的云服务和边缘计算开发者平台&#xff0c;MoonBit 自设计之初便注重工具链与语言的协同效果。MoonBit 为开发者提供了一套开箱即用的工具链&#xff0c;包括集成开发环境&#xff08;IDE&#xff09;、编译器、构建系统和包管理器&…

android audio不同音频流,(六)settings内音频流音量调整

&#xff08;1&#xff09;settings内&#xff0c;可设置音频流音量&#xff0c;如下图&#xff1a; &#xff08;2&#xff09;settings调整音量条进度&#xff0c;会触发SeekBarVolumizer对象&#xff1a; SeekBarVolumizer文件路径&#xff1a; frameworks/base/core/java/…

【MySQL进阶之路 | 高级篇】事务的ACID特性

1. 数据库事务概述 事务是数据库区别于文件系统的重要特性之一&#xff0c;当我们有了事务就会让数据库始终保持一致性&#xff0c;同时我们还能通过事务的机制恢复到某个时间点&#xff0c;这样可以保证给已提交到数据库的修改不会因为系统崩溃而丢失。 1.1 基本概念 事务&…

OpenCV图像滤波(1)双边滤波函数bilateralFilter的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 功能描述 bilateralFilter是图像处理和计算机视觉领域中的一种高级图像滤波技术&#xff0c;特别设计用于在去除噪声的同时保留图像的边缘和细节。相比于传…

React搭建Vite项目及各种项目配置

1. 创建Vite项目 在操作系统的命令终端&#xff0c;输入以下命令&#xff1a; yarn create vite 输入完成以后输入项目名称、选择开发框架&#xff0c;选择开发语言&#xff0c;如下图所示&#xff0c;即可完成项目创建。 注意事项&#xff1a; 1. Node版本必须符合要求&…

OceanBase v4.2 特性解析:如何实现表级恢复

背景 在某些情况下&#xff0c;你可能会因为误操作而遇到表数据损坏或误删表的情况。为了能在事后将表数据恢复到某个特定时间点&#xff0c;在OceanBase尚未有表级恢复功能之前&#xff0c;你需要进行以下步骤&#xff1a; 利用OceanBase提供的物理恢复工具&#xff0c;您可…

Android 定时任务: Timer 和 TimerTask

目录 为什么要使用Timer和TimerTask?Timer和TimerTask是什么如何使用&#xff1f;注意事项 一、为什么要使用Timer和TimerTask&#xff1f; 延迟执行任务&#xff1a;如果我们需要在一段时间后执行某个任务&#xff0c;可以使用Timer和TimerTask来安排延迟执行。例如&#…

05. Java 三大范式

1. 前言 在面向对象语言中涉及到诸多的设计模式&#xff0c;例如单例模式、适配器模式&#xff0c;设计模式的存在是为了让系统中的代码逻辑更加清晰&#xff0c;帮助开发者建立更加健壮的系统&#xff0c;同时满足易修改特性和易扩展特性。数据库设计时也存在类似设计模式的通…

Linux云计算 |【第一阶段】SERVICES-DAY6

主要内容&#xff1a; Linux容器基础、Linux容器管理、podman命令行、管理容器进阶 实操前骤&#xff1a;安装 RHEL8.2 虚拟机 1.选择软件包&#xff1a;rhel-8.2-x86-dvd.iso&#xff1b; 2.内存2048M&#xff1b; 3.时区选择亚洲-上海&#xff0c;带GUI的服务器&#xff1b…

使用kali对操作系统和网络服务类型进行探测

1&#xff0e;在Kali终端中输入命令“nmap –sS –n -O 192.168.2.2”&#xff0c;探测目标主机的操作系统类型 2&#xff0e; 在Kali终端中输入命令“nmap –sV -n 192.168.2.2”&#xff0c;探测目标主机开启的网络服务类型 3.在Kali终端中输入命令“nmap –A -n 192.168.2.2…

vue3前端开发-小兔鲜项目-产品详情基础数据渲染

vue3前端开发-小兔鲜项目-产品详情基础数据渲染&#xff01;这一次内容比较多&#xff0c;我们分开写。第一步先完成详情页面的基础数据的渲染。然后再去做一下右侧的热门产品的列表内容。 第一步&#xff0c;还是老规矩&#xff0c;先准备好接口函数。方便我们的页面组件拿到对…

掌握互联网路由选择协议:从基础入门到实战

文章目录 路由选择协议的基本概念路由选择算法的分类分层次的路由选择协议路由信息协议&#xff08;RIP&#xff09;内部网关协议&#xff1a;OSPF外部网关协议&#xff1a;BGP互联网中的实际应用总结 互联网的路由选择协议是网络通信的核心&#xff0c;它决定了数据包如何在网…

Sentinel初步了解

概念 Sentinel面向分布式、多语言异构化服务框架的流量治理组件。 相关文档https://github.com/alibaba/Sentinel/wiki/ 服务雪崩 多个微服务之间调用的时候&#xff0c;假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务&#xff0c;这就是所谓的“扇出…

【YashanDB知识库】yac修改参数后关闭数据库hang住

【标题】yac修改参数后关闭数据库hang住 【问题分类】性能优化 【关键词】YashanDB, yac, shutdown hang 【问题描述】修改yac参数后执行shutdown immediate&#xff0c;数据库hang住。 【问题原因分析】 Shutdown操作时&#xff0c;线程在获取gInstance->trigger->s…

Spring Boot 接口访问频率限制的实现详解

目录 概述为什么需要接口访问频率限制常见的实现方式 基于过滤器的实现基于拦截器的实现基于第三方库Bucket4j的实现 实际代码示例 基于过滤器实现Rate Limiting基于拦截器实现Rate Limiting使用Bucket4j实现Rate Limiting 最佳实践 选择合适的限流算法优化性能记录日志和监控…

Manticore Search(es轻量级替代)

概念&#xff1a; Manticore Search 是一个使用 C 开发的高性能搜索引擎&#xff0c;创建于 2017 年&#xff0c;其前身是 Sphinx Search 。Manticore Search 充分利用了 Sphinx&#xff0c;显着改进了它的功能&#xff0c;修复了数百个错误&#xff0c;几乎完全重写了代码并保…

MySQL第四次作业

1.修改student表中年龄字段属性&#xff0c;数据类型由int改变为smallint 2.为course表中cno课程学号设置索引&#xff0c;并查看索引 &#xff08;3&#xff09;为SC表建立按学号(sno)和课程号(cno)组合的升序的主键索引&#xff0c;索引名为SC_INDEX &#xff08;4&#xff0…

PHP框架详解-symfony

一、介绍 Symfony是一个用于构建Web应用程序的PHP框架。它是一个开源框架,由Fabien Potencier于2005年创建。 Symfony框架具有许多特性和优势,以下是一些重要的特性: 可重复使用的组件:Symfony框架基于一系列可重复使用的组件,这些组件可以独立于框架使用,并且可以被其…