写点什么

OBV 指标交易策略 (累积能量潮与移动能量潮,成交量多空比率净额及相关应用原则)

作者:程序媛可鸥
  • 2022 年 3 月 18 日
  • 本文字数:2368 字

    阅读完需:约 8 分钟

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'



1.2 移动型 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)


1.3 修正型 OBV




计算累积成交量时,无论股价变化幅度与趋势如何,当期的成交量的权重是一样的。为了将股价这些因素考虑进去,人们一般用多空比率净额(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)


结果如下所示:



2. OBV 指标理论依据


===================================================================================


OBV 指标的理论依据主要有以下三点:


  1. 当投资者对于股价的预期不一致时,成交量很大;当投资者对于股价的预期一致时,成交量则较小。

  2. 物理学中物体不会一直上升,总会下跌,而且物体在上升时所需要的能量要比下降时要多。我们把这个原理类比到股市,会得到一个量与价的关系:股价易跌难涨;而且股价下跌时需要的成交量,要小于股价上升时需要的成交量。

  3. 由惯性原理,热门股在相当长的一段时间内都会保持较大的成交量和价格波动。而冷门股则相反。

最后

Python 崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS 等更加高级的领域。Python 可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python 可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

??Python 所有方向的学习路线??

Python 所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。


??Python 必备开发工具??

工欲善其事必先利其器。学习 Python 常用的开发软件都在这里了,给大家节省了很多时间。


??Python 全套学习视频??

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。


??实战案例??

学 python 就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。


因此在学习 python 的过程中一定要记得多动手写代码,教程只需要看一两遍即可。


??大厂面试真题??

我们学习 Python 必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。



用户头像

Python编程资料加Q群免费领取:419829237 2022.03.14 加入

还未添加个人简介

评论

发布
暂无评论
OBV指标交易策略(累积能量潮与移动能量潮,成交量多空比率净额及相关应用原则)_Python_程序媛可鸥_InfoQ写作平台