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.pswp.cn/news/696627.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696627.shtml
英文地址,請注明出處:http://en.pswp.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/

VS和QT聯合開發

提示:本文為學習記錄,若有疑問,請聯系作者,謙虛受教。 文章目錄 前言一、安裝二、新建項目1.VS打不開UI文件2.VS找不到QT對應的版本號三、其他問題1.vs無法識別加載ui新添加的控件2.UI界面出現中文亂碼3.修改VS字體顏色4.自動代碼補全功能5.添加<QtSerialPort/qserialpo…

【AI大模型】ChatGPT在地學、GIS、氣象、農業、生態、環境等領域中的高級應用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千問為代表AI大語言模型帶來了新一波人工智能浪潮&#xff0c;可以面向科研選題、思維導圖、數據清洗、統計分析、高級編程、代碼調試、算法學習、論文檢索、寫作、翻譯、潤色、文獻輔助…

Leetcode | 231. 2 的冪 C語言

Problem: 231. 2 的冪 文章目錄 思路解題方法Code 思路 說白了就是靠硬算&#xff0c;但是要知道對sum不進行控制就會導致直接超標&#xff0c;所以要在for循環的條件中加上sum < n 解題方法 由思路可知 Code bool isPowerOfTwo(int n) {long int sum 1;for(int i 0; i &…

拉伸圖片覆蓋整個頁面的css寫法

如果您想要拉伸一張圖片以覆蓋整個頁面&#xff0c;可以使用以下CSS代碼&#xff1a; body {margin: 0;padding: 0;height: 100%;background-image: url(your-image-url.jpg); /* 替換為您的圖片URL */background-size: cover;background-position: center center; /* 可選&…

vue3+vite項目中顯示SVG圖片

使用vite顯示本地svg圖標 vite-plugin-svg-icons是一個Vite插件&#xff0c;其作用是將SVG圖標文件轉換為Vue組件&#xff0c;以便在Vue項目中使用。 使用vite-plugin-svg-icons插件&#xff0c;可以將SVG圖標文件導入到項目中&#xff0c;并將其轉換為可復用的Vue組件。這樣&a…

語文成績(洛谷)

題目 原題 題目背景 語文考試結束了&#xff0c;成績還是一如既往地有問題。 題目描述 語文老師總是寫錯成績&#xff0c;所以當她修改成績的時候&#xff0c;總是累得不行。她總是要一遍遍地給某些同學增加分數&#xff0c;又要注意最低分是多少。你能幫幫她嗎&#xff1f; 輸…

【springboot】 `@Column` 注解的使用

定義一個實體的屬性時&#xff0c;如果和數據庫的列名不一致的時候&#xff0c;需要用column 建立映射關系。 Column 是 Java 持久化 API&#xff08;Java Persistence API&#xff0c;JPA&#xff09;中的注解之一&#xff0c;用于指定實體類中屬性與數據庫表中列的映射關系。…

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 上的安裝程序) 放在…

Linux C++ 字符編碼轉換 GBK與UTF8互轉

Linux 下使用 iconv 命令可以轉換文件的編碼 iconv -f GBK -t UTF-8 input_file -o output_fileC 代碼 使用 iconv 函數 iconv 函數簽名&#xff1a; size_t iconv(iconv_t cd,、 char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); 需要注意的是&…

Python基礎20 面向對象(3)多態、封裝、反射

文章目錄 一、多態1、什么是多態2、多態小實驗 二、封裝1、什么是封裝2、內部屬性的約定 三、反射1、什么是反射2、四個實現自省的函數&#xff08;1&#xff09;hasattr(object,name)&#xff08;2&#xff09;getattr(object,name,defaultNone)&#xff08;3&#xff09;seta…

神秘人暗訪:行政窗口為什么要開展神秘顧客調研

在競爭日益激烈的服務市場中&#xff0c;行政窗口作為公共服務的直接提供者&#xff0c;其服務質量的好壞直接關系到政府的形象和公眾對政府的信任度。為了更好地滿足市民的需求&#xff0c;提升服務質量&#xff0c;開展神秘顧客調查顯得尤為重要。神秘顧客調查的必要性包括以…

內網穿透的應用-如何本地部署Elasticsearch搜索分析引擎實現并發布公網遠程訪問

文章目錄 系統環境1. Windows 安裝Elasticsearch2. 本地訪問Elasticsearch3. Windows 安裝 Cpolar4. 創建Elasticsearch公網訪問地址5. 遠程訪問Elasticsearch6. 設置固定二級子域名 Elasticsearch是一個基于Lucene庫的分布式搜索和分析引擎&#xff0c;它提供了一個分布式、多…

探索Flask框架:打造優雅而強大的Web應用

在當今互聯網時代&#xff0c;Web應用的需求日益增長&#xff0c;而作為開發者&#xff0c;我們需要一個簡潔明快、靈活可擴展的框架來滿足這些需求。Flask框架作為一個Python微型框架&#xff0c;在其簡潔的設計理念和豐富的擴展生態系統之間找到了完美的平衡&#xff0c;為我…

洛谷--二分(Java實現)

洛谷 B3627 立方根 題目描述 給定正整數 n&#xff0c;求 √n?。答案向下取整。 輸入格式 僅一行&#xff0c;一個正整數 n。 輸出格式 僅一行&#xff0c;一個正整數&#xff0c;表示√n。向下取整輸出。 輸入輸出樣例 輸入 #1 27 輸出 #1 3 輸入 #2 100000 輸…

ORACLE之 decode函數

語法&#xff1a; DECODE(expression, search1, result1, search2, result2, ..., default_result) 其中&#xff0c;expression是要進行比較的表達式&#xff0c;search1, search2等是可能的值&#xff0c;result1, result2等是對應的結果。如果expression等于search1&#x…

Java類的成員、繼承、多態

當談論Java類的成員、繼承和多態時&#xff0c;我們談論的是面向對象編程的基本概念。讓我逐一介紹&#xff1a; 1. **成員**&#xff1a; - **字段&#xff08;Field&#xff09;**&#xff1a;也稱為屬性或變量&#xff0c;用于存儲對象的狀態信息。 - **方法&#xf…