OBV 指标交易策略 (累积能量潮与移动能量潮,成交量多空比率净额及相关应用原则)
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?+???+OBVT?8??,t=9,10,???
用 python 计算东方雨虹移动型 OBV
定义简单移动平均函数
def smaCal(tsPrice, k):
import pandas as pd
Sma = pd.Series(0.0, index=tsPrice.index)
for i in range(k-1, len(tsPrice)):
Sma[i] = sum(tsPrice[(i-k+1):(i+1)])/k
return(Sma)
计算移动型 OBV
smOBV=smaCal(OBV,9)[8:]
![在这里插入图片描述](https://img-blo
g.csdnimg.cn/20210502212920607.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODk2NDQ4Ng==,size_16,color_FFFFFF,t_70)
计算累积成交量时,无论股价变化幅度与趋势如何,当期的成交量的权重是一样的。为了将股价这些因素考虑进去,人们一般用多空比率净额(Volume Accumulation)来替代单纯的成交量。多空比率净额的计算公式为:
V A n = V A n ? 1 + V n ( C n ? L n ) ? ( H n ? C n ) H n ? L n \displaystyle VA_n=VA_{n-1}+V_n\frac{(C_n-L_n)-(H_n-C_n)}{H_n-L_n} VAn?=VAn?1?+Vn?Hn??Ln?(Cn??Ln?)?(Hn??Cn?)?
其中 V_n 为当日成交量,而 Hn,Ln,Cn 则分别是当日的最高价、最低价和收盘价。收盘价与最低价的差值表示多头力量的强度,最高价与最低价的差值表明空头力量的强度,两者之差表示多头的净力量幅度。
再用这个差值 ( C n ? L n ) ? ( H n ? C n ) \displaystyle (C_n-L_n)-(H_n-C_n) (Cn??Ln?)?(Hn??Cn?)与最高价最低价差值 H n ? L n \displaystyle H_n-L_n Hn??Ln?之比,表示多头相对力量对于成交量的贡献程度。
计算修正型 OBV
AdjOBV = ((df.Close-df.Low)-(df.High-df.Close))/(df.High-df.Low)*df.Volume
AdjOBV.name = 'AdjOBV'
AdjOBVd = AdjOBV.cumsum()
AdjOBVd.name = 'AdjOBVd'
AdjOBVd.describe()
绘制能量潮线图 2020 年数据
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
ax1 = plt.subplot(3,1,1)
df.Close['2020'].plot(title='东方雨虹 2020 年收盘价时序图')
plt.xticks(df.Close['2020'].index[1:3],(''))
ax2 = plt.subplot(3,1,2)
OBV['2020'].plot(label='OBV',title='东方雨虹 2020 年累积能量潮与移动能量潮')
smOBV['2020'].plot(label='smOBV',linestyle='-.',color='r')
plt.legend()
plt.xticks(df.Close['2020'].index[1:3],(''))
ax3 = plt.subplot(3,1,3)
AdjOBVd['2020'].plot(title='成交量多空比率净额')
for ax in ax1,ax2,ax3:
ax.grid(True)
结果如下所示:
===================================================================================
OBV 指标的理论依据主要有以下三点:
当投资者对于股价的预期不一致时,成交量很大;当投资者对于股价的预期一致时,成交量则较小。
物理学中物体不会一直上升,总会下跌,而且物体在上升时所需要的能量要比下降时要多。我们把这个原理类比到股市,会得到一个量与价的关系:股价易跌难涨;而且股价下跌时需要的成交量,要小于股价上升时需要的成交量。
由惯性原理,热门股在相当长的一段时间内都会保持较大的成交量和价格波动。而冷门股则相反。
最后
Python 崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS 等更加高级的领域。Python 可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python 可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
??Python 所有方向的学习路线??
Python 所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
??Python 必备开发工具??
工欲善其事必先利其器。学习 Python 常用的开发软件都在这里了,给大家节省了很多时间。
??Python 全套学习视频??
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
??实战案例??
学 python 就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。
因此在学习 python 的过程中一定要记得多动手写代码,教程只需要看一两遍即可。
??大厂面试真题??
我们学习 Python 必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
评论