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函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Python Excel 通用筛选函数的实现

《PythonExcel通用筛选函数的实现》本文主要介绍了PythonExcel通用筛选函数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录案例目的示例数据假定数据来源是字典优化:通用CSV数据处理函数使用说明使用示例注意事项案例目的第一

C#使用SendMessage实现进程间通信的示例代码

《C#使用SendMessage实现进程间通信的示例代码》在软件开发中,进程间通信(IPC)是关键技术之一,C#通过调用WindowsAPI的SendMessage函数实现这一功能,本文将通过实例介绍... 目录第一章:SendMessage的底层原理揭秘第二章:构建跨进程通信桥梁2.1 定义通信协议2.2

JAVA实现亿级千万级数据顺序导出的示例代码

《JAVA实现亿级千万级数据顺序导出的示例代码》本文主要介绍了JAVA实现亿级千万级数据顺序导出的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 前提:主要考虑控制内存占用空间,避免出现同时导出,导致主程序OOM问题。实现思路:A.启用线程池

Python实现中文大写金额转阿拉伯数字

《Python实现中文大写金额转阿拉伯数字》在财务票据中,中文大写金额被广泛使用以防止篡改,但在数据处理时,我们需要将其转换为阿拉伯数字形式,下面我们就来看看如何使用Python实现这一转换吧... 目录一、核心思路拆解二、中文数字解析实现三、大单位分割策略四、元角分综合处理五、测试验证六、全部代码在财务票

使用python制作一款文件粉碎工具

《使用python制作一款文件粉碎工具》这篇文章主要为大家详细介绍了如何使用python制作一款文件粉碎工具,能够有效粉碎密码文件和机密Excel表格等,感兴趣的小伙伴可以了解一下... 文件粉碎工具:适用于粉碎密码文件和机密的escel表格等等,主要作用就是防止 别人用数据恢复大师把你刚删除的机密的文件恢

java 恺撒加密/解密实现原理(附带源码)

《java恺撒加密/解密实现原理(附带源码)》本文介绍Java实现恺撒加密与解密,通过固定位移量对字母进行循环替换,保留大小写及非字母字符,由于其实现简单、易于理解,恺撒加密常被用作学习加密算法的入... 目录Java 恺撒加密/解密实现1. 项目背景与介绍2. 相关知识2.1 恺撒加密算法原理2.2 Ja

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py

React 记忆缓存的三种方法实现

《React记忆缓存的三种方法实现》本文主要介绍了React记忆缓存的三种方法实现,包含React.memo、useMemo、useCallback,用于避免不必要的组件重渲染和计算,感兴趣的可以... 目录1. React.memo2. useMemo3. useCallback使用场景与注意事项在 Re

python中getsizeof和asizeof的区别小结

《python中getsizeof和asizeof的区别小结》本文详细的介绍了getsizeof和asizeof的区别,这两个函数都用于获取对象的内存占用大小,它们来自不同的库,下面就来详细的介绍一下... 目录sys.getsizeof (python 内置)pympler.asizeof.asizeof