Python 实现 OBV 指标计算:股票技术分析的利器系列(7)

Python 实现 OBV 指标计算:股票技术分析的利器系列(7)

    • 介绍
      • 算法解释
    • 代码
      • rolling函数介绍
      • 核心代码
        • 计算 VA 列
        • 计算 OBV 列
        • 计算 MAOBV
    • 完整代码


介绍

OBV 指标是“On-Balance Volume”的缩写,意为“量价平衡指标”。它是一种用于衡量买卖压力的技术分析工具,主要基于成交量的变化来预测价格趋势。OBV 指标的计算方法很简单,它将每日的成交量根据价格变动分为买入量和卖出量,然后根据这些量的正负来对当前价格走势形成判断。

OBV 指标的基本原理是,如果某一天的收盘价高于前一天的收盘价,则当天的成交量被视为买入量,反之则被视为卖出量。通过累加这些买入量和卖出量,形成一个持续增加或减少的曲线,这条曲线反映了资金流入和流出的情况。当 OBV 曲线上升时,意味着成交量在上涨,市场上存在着买盘力量;反之,当 OBV 曲线下降时,意味着成交量在下降,市场上存在着卖盘力量。

先看看官方介绍:

OBV (累积能量线)
用法
1.股价一顶比一顶高,而OBV 一顶比一顶低,暗示头部即将形成;
2.股价一底比一底低,而OBV 一底比一底高,暗示底部即将形成;
3.OBV 突破其 N 字形波动的高点次数达5 次时,为短线卖点;
4.OBV 跌破其 N 字形波动的低点次数达5 次时,为短线买点;
5.OBV 与ADVOL、PVT、WAD、ADL同属一组指标群,使用时应综合研判。

算法解释

VA:=IF(CLOSE>REF(CLOSE,1),VOL,-VOL);
OBV:SUM(IF(CLOSE=REF(CLOSE,1),0,VA),0);
MAOBV:MA(OBV,M);
  1. VA 计算

    • 这行代码首先计算了 VA(Volume Accumulation)。
    • CLOSE > REF(CLOSE, 1) 是一个条件,检查当前收盘价是否高于前一天的收盘价。
    • 如果当前收盘价高于前一天的收盘价,则 VA 为当日成交量(VOL);否则为当日成交量的负值(-VOL)。
  2. OBV 计算

    • 这行代码计算了 OBV(On-Balance Volume)。
    • IF(CLOSE=REF(CLOSE,1),0,VA) 这一部分首先判断当前收盘价是否等于前一天的收盘价,如果相等,则对应的 VA 为 0,否则为 VA 的值。
    • 然后使用 SUM 函数对这些 VA 值进行累加,得到 OBV。
  3. MAOBV 计算

    • 这行代码计算了 MAOBV(Moving Average of OBV)。
    • MA(OBV, M) 是对 OBV 列进行移动平均计算,其中 M 是移动平均窗口的大小。

代码

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

核心代码

计算 VA 列
# 计算 VA 列
df['VA'] = df['VOL'].where(df['CLOSE'] > df['CLOSE'].shift(1), -df['VOL'])

VA 列也被称为 “Volume Adjustment”(成交量调整)列。它表示在价格上涨时和价格下跌时的成交量调整值,根据收盘价与前一日收盘价的比较情况来确定是正值还是负值。因此,它可以用来衡量价格变动对成交量的影响,有助于理解买卖压力的变化

计算 OBV 列
# 计算 OBV 列
df['OBV'] = df['VA'].where(df['CLOSE'] != df['CLOSE'].shift(1), 0).cumsum()

OBV 列通常也称为"On-Balance Volume"(量价平衡指标)列。 OBV 是一种累积型的指标,用于衡量买入和卖出压力的相对强度。 OBV 列的数值根据成交量的变化以及价格走势的涨跌而增加或减少,它反映了资金流入和流出的情况。 OBV 列的变化可以帮助分析者判断价格趋势的强弱以及市场的买卖力量对比情况。

计算 MAOBV
# 计算 MAOBV
M = 30
df['MAOBV'] = df['OBV'].rolling(window=M).mean()

完整代码

import pandas as pdimport a_get_datadata = {'CLOSE': 填每日收盘的数据,'VOL': 填每日交易量的数据
}df = pd.DataFrame(data)
# 计算 VA 列
df['VA'] = df['VOL'].where(df['CLOSE'] > df['CLOSE'].shift(1), -df['VOL'])# 计算 OBV 列
df['OBV'] = df['VA'].where(df['CLOSE'] != df['CLOSE'].shift(1), 0).cumsum()# 计算 MAOBV
M = 30
df['MAOBV'] = df['OBV'].rolling(window=M).mean()# 打印结果
print(df)

在这里插入图片描述

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

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

相关文章

《游戏引擎架构》 -- 学习4

资源及文件系统 文件系统 游戏引擎的文件系统API通常提供以下功能: 搜需路径:是含一串路径的字符串,各路径之间以特殊字符(如冒号或分号)分隔,找文件时就会从这些路径进行搜寻。例如在命令行下执行程序&a…

Code Composer Studio (CCS) - 全局搜索功能

Code Composer Studio [CCS] - 全局搜索功能 1. Ctrl H,全局搜索功能References 1. Ctrl H,全局搜索功能 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

【AI大模型】ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的高级应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

2024牛客(4)K题

登录—专业IT笔试面试备考平台_牛客网 using i64 long long; using ll long long; constexpr ll M 1e9 7; template<class Info> struct SegmentTree {int n;std::vector<Info> info;SegmentTree() : n(0) {}SegmentTree(int n_, Info v_ Info()) {init(n_, …

Vue样式绑定

1. 绑定 HTML class ①通过class名称的bool值判断样式是否被启用 <template><!--通过样式名称是否显示控制样式--><div :class"{ haveBorder: p.isBorder, haveBackground-color: p.isBackgroundcolor }">此处是样式展示区域</div><br /…

Linux篇:开发工具yum/vim/gcc/g++/Makefile/gdb

一. yum&#xff1a;软件包管理器 什么是软件包&#xff1f; 在Linux 下安装软件 , 一个通常的办法是下载到程序的源代码 , 并进行编译 , 得到可执行程序 . 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好 , 做成软件包 (可以理解成windows 上的安装程序) 放在…

内网穿透的应用-如何本地部署Elasticsearch搜索分析引擎实现并发布公网远程访问

文章目录 系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 Elasticsearch是一个基于Lucene库的分布式搜索和分析引擎&#xff0c;它提供了一个分布式、多…

探索Flask框架:打造优雅而强大的Web应用

在当今互联网时代&#xff0c;Web应用的需求日益增长&#xff0c;而作为开发者&#xff0c;我们需要一个简洁明快、灵活可扩展的框架来满足这些需求。Flask框架作为一个Python微型框架&#xff0c;在其简洁的设计理念和丰富的扩展生态系统之间找到了完美的平衡&#xff0c;为我…

防御保护第六次作业

需求: 8&#xff0c;分公司内部的客户端可以通过域名访问到内部的服务器 9&#xff0c;假设内网用户需要通过外网的web服务器和pop3邮件服务器下载文件和邮件&#xff0c;内网的FTP服务器也需要接受外网用户上传的文件。针对该场景进行防病毒的防护。 10&#xff0c;我们需要针…

C++模板从入门到入土

1. 泛型编程 如果我们需要实现一个不同类型的交换函数&#xff0c;如果是学的C语言&#xff0c;你要交换哪些类型&#xff0c;不同的类型就需要重新写一个来实现&#xff0c;所以这是很麻烦的&#xff0c;虽然可以cv一下&#xff0c;有了模板就可以减轻负担。 下面写一个适…

基于springboot+vue的中小企业设备管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

H 桥逆变方式介绍(双极性)

单极性控制和双极性控制是说IGBT四个管子的控制 前面所说的单极性控制是其中一个管子开通、关闭另外一个管子持续开通 而双极性是四个管子中的两个管子同时导通&#xff0c;同时关断。彼此交替变化 所以当方波出现低电平时&#xff0c;是一对管子同时导通&#xff0c;出现高电…

2.21 Qt day2 菜单栏/工具栏/状态栏/浮动窗口、UI界面、信号与槽

思维导图 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;…

golang实现延迟队列(delay queue)

golang实现延迟队列 1 延迟队列&#xff1a;邮件提醒、订单自动取消 延迟队列&#xff1a;处理需要在未来某个特定时间执行的任务。这些任务被添加到队列中&#xff0c;并且指定了一个执行时间&#xff0c;只有达到指定的时间点时才能从队列中取出并执行。 应用场景&#xff1…

智慧驿站_智慧文旅驿站_轻松的驿站智慧公厕_5G智慧公厕驿站_5G模块化智慧公厕

多功能城市智慧驿站是在智慧城市建设背景下&#xff0c;所涌现的一种创新型社会配套设施。其中&#xff0c;智慧公厕作为城市智慧驿站的重要功能基础&#xff0c;具备社会配套不可缺少的特点&#xff0c;所以在应用场景上&#xff0c;拥有广泛的需求和要求。那么&#xff0c;城…

#12解决request中getReader()和getInputStream()只能调用一次的问题

目录 1、背景 2、解决方案 2.1、自定义HttpServletRequestWrapper 2.2、JsonRequestHeaderParamsHelper 2.3、HttpServletRequestReplacedFilter 2.4、使用 1、背景 当前系统Content-Type为application/json&#xff0c;参数接收方式采用RequestBody和RequestParam&#…

平时积累的FPGA知识点(10)

平时在FPGA群聊等积累的FPGA知识点&#xff0c;第10期&#xff1a; 41 ZYNQ系列芯片的PL中使用PS端送过来的时钟&#xff0c;这些时钟名字是自动生成的吗&#xff1f; 解释&#xff1a;是的。PS端设置的是ps_clk&#xff0c;用report_clocks查出来的时钟名变成了clk_fpga_0&a…

Linux篇:进程

一. 前置知识 1.1冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系 为什么计算机要采用冯诺依曼体系呢&#xff1f; 在计算机出现之前有很多人都提出过计算机体系结构&#xff0c;但最…

时序数据库TimescaleDB,实战部署全攻略

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

C++ Primer 笔记(总结,摘要,概括)——第5章 语句

目录 5.1 简单语句 5.2 语句作用域 5.3 条件语句 5.3.1 if语句 5.3.2 switch语句 5.4 迭代语句 5.4.1 while语句 5.4.2 传统的for语句 5.4.3 范围for语句 5.4.4 do while语句 5.5 跳转语句 5.5.1 break语句 5.5.2 continue语句 5.5.3 goto语句 5.6 try语句块和异常处理 5…