本文說明使用TA-Lib函式庫計算OBV指標。
OBV能量潮指標(On Balance Volume)簡稱為OBV,由葛蘭碧(Joseph Granville)提出,是一種依據行情的漲跌,來累計或刪去市場的成交量值,而以此累算值作為市場行情動能變化趨勢的指標。同時它也是一種將一根一根起起伏伏不易觀察的成交量圖,轉變而成較易觀看分析的連續線圖的一種指標。
OBV指標在算法上相當簡單,只要依照行情的漲跌來累計市場上每日的成交量值即可。亦即是將上漲日的成交量值視為買進的正值累加,而下跌日的成交量值則視為賣出的負值減去,依此而得出漲勢與跌勢雙方動能消長的變化。
OBVt = OBVsub>t-1 + Volume 若 Close t > Close t-1
OBVt = OBVsub>t-1 - Volume 若Close t < Close t-1
import numpy as np
import pandas as pd
import talib
import datetime as dt
import yfinance as yf
import matplotlib.pyplot as plt
# 開始時間
start=dt.datetime.today()-dt.timedelta(14)
# 結束時間
end=dt.datetime.today()
# 下載台股長榮(2603)歷史交易資料
df = pd.DataFrame(yf.download("2603.TW", start=start, end=end))
obv = talib.OBV(df.Close, df.Volume)
#df_obv = pd.DataFrame(obv)
df_obv =pd.DataFrame(obv, index=df.index, columns=['OBV'])
print("OBV:\n" ,df_obv)
df_obv.loc['2021-09-27':'2021-10-08'].plot(figsize=(16, 6))
plt.savefig("OBV.png")
使用yfinance函式字取得個股歷史資料及利用TA-Lib函式庫計算OBV指標。