OBV主要计算累积成交量,将股价上涨的成交量进行正累加,股价下跌时的成交量进行负向累加。其计算公式为:
O B V n = ± V n + O B V n − 1 \displaystyle OBV_n=\pm V_n + OBV_{n-1} OBVn=±Vn+OBVn−1
其中,OBVn和OBVn-1分别是本期和前一期的OBV值,而Vn则是当日的成交量。
-
当本期股价上涨,Vn的符号为正, O B V n = O B V n − 1 + V n \displaystyle OBV_n=OBV_{n-1}+V_n OBVn=OBVn−1+Vn
-
当本期股价下跌,Vn的符号为负, O B V n = O B V n − 1 − V n \displaystyle OBV_n=OBV_{n-1}-V_n OBVn=OBVn−1−Vn
以东方雨虹为例,计算OBV。Python代码如下:
import matplotlib.pyplot as plt
difClose = df.Close.diff()
difClose[0] = 0
OBV = (((difClose >= 0)*2-1)*Volume).cumsum()
OBV = OBV.dropna()
OBV.name = ‘OBV’
移动型OBV是由累积OBV进行简单移动平均得到,一般选择9日或者12日为时间跨度,移动型OBV的计算公式为:
s m O B V t = O B V t + O B V t − 1 + ⋅ ⋅ ⋅ + O B V T − 8 9 , t = 9 , 10 , ⋅ ⋅ ⋅ \displaystyle smOBV_t = \frac{OBV_t+OBV_{t-1}+ ··· +OBV_{T-8}}{9}, t=9,10,··· smOBVt=9OBVt+OBVt−1+⋅⋅⋅+OBV