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

2024-02-23 05:04

本文主要是介绍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)

在这里插入图片描述

这篇关于Python 实现 OBV 指标计算:股票技术分析的利器系列(7)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/737590

相关文章

python中各种常见文件的读写操作与类型转换详细指南

《python中各种常见文件的读写操作与类型转换详细指南》这篇文章主要为大家详细介绍了python中各种常见文件(txt,xls,csv,sql,二进制文件)的读写操作与类型转换,感兴趣的小伙伴可以跟... 目录1.文件txt读写标准用法1.1写入文件1.2读取文件2. 二进制文件读取3. 大文件读取3.1

使用Python实现一个优雅的异步定时器

《使用Python实现一个优雅的异步定时器》在Python中实现定时器功能是一个常见需求,尤其是在需要周期性执行任务的场景下,本文给大家介绍了基于asyncio和threading模块,可扩展的异步定... 目录需求背景代码1. 单例事件循环的实现2. 事件循环的运行与关闭3. 定时器核心逻辑4. 启动与停

基于Python实现读取嵌套压缩包下文件的方法

《基于Python实现读取嵌套压缩包下文件的方法》工作中遇到的问题,需要用Python实现嵌套压缩包下文件读取,本文给大家介绍了详细的解决方法,并有相关的代码示例供大家参考,需要的朋友可以参考下... 目录思路完整代码代码优化思路打开外层zip压缩包并遍历文件:使用with zipfile.ZipFil

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

Python结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析