为了账号安全,请及时绑定邮箱和手机立即绑定

Python进阶量化交易专栏场外篇13-TA-Lib库量价指标分析

欢迎大家订阅《教你用 Python 进阶量化交易》专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下:

在专栏的16小节《股票交易数据可视化:技术分析常用指标绘制》介绍了使用TA-Lib库实现MACD指标,然后在场外篇第十一篇中我们整体介绍了TA-Lib的10个功能组,如下所示:

  • Overlap Studies(重叠研究)
  • Momentum Indicators(动量指标)
  • Volume Indicators(交易量指标)
  • Cycle Indicators(周期指标)
  • Price Transform(价格变换)
  • Volatility Indicators(波动率指标)
  • Pattern Recognition(模式识别)
  • Statistic Functions(统计函数)
  • Math Transform(数学变换)
  • Math Operators(数学运算)

本次场外篇我们来介绍下Volume Indicators——成交量指标。

成交量指当日成交的股票总手数(1手=100股),它能够真实地反映市场的内在动能,将量和价的变化相结合分析有助于掌握价格走势本质上的强弱度,比如通常所说的量价背离就是确认趋势反转的可靠线索。因此,成交量指标是交易决策时的重要依据,也是各种技术指标分析时不可或缺的参照。
TA-Lib的成交量指标主要包括’AD’, ‘ADOSC’, 'OBV’这三个指标,如下所示:

print(talib.get_function_groups()['Volume Indicators']) # ['AD', 'ADOSC', 'OBV']

接下来我们分别介绍如何使用TA-Lib实现这三个指标。

  1. AD - Chaikin A/D Line

Chaikin Accumulation/Distribution Line由Marc Chaikin提出,计算公式为:AD=前一日AD值+(CLV*成交量)
CLV = ((Close-Low)-(High-Close))/( High - Low)
从公式中可知,它以当日收盘价与最高价、最低价的关系来估算一段时间内股票累积的成交量,以此分析多空双方力量的变化,能够有效地寻找突破的趋势或者提前预测反转。
TA-Lib提供AD指标的调用接口为:real = AD(high, low, close, volume)。我们用例程来了解下具体的实现,如下所示:

# 计算AD线
AD = talib.AD(df_stock.High, df_stock.Low, df_stock.Close, df_stock.Volume)
df_AD = pd.DataFrame(AD, index=df_stock.index, columns=['AD'])
df_AD.loc['2018-01-01':'2019-01-01'].plot(figsize=(16, 6))
plt.show()

图片描述

在实际应用时的判断依据为:当A/D线在上升时说明多方占优势,交易者在收集该股票;当A/D线在下降时,说明空方占优势,交易者在派发该股票。如果A/D线上升的同时,价格也在上升,则说明上升趋势被确认,产生买入信号;如果A/D线下降的同时,价格也在下降,则说明下降趋势被确认,产生卖出信号;如果A/D线下降的同时,价格在上升,二者产生背离,说明价格的上升趋势减弱,有可能反转下跌;如果A/D线上升的同时,价格在下降,二者产生背离,说明价格的下降趋势减弱,有可能反转回升。实际操作中,可以与一些反转指标共同使用。

  1. ADOSC - Chaikin A/D Oscillator

Chaikin A/D Oscillator是在AD指标的基础上计算长短周期的AD差,用于进一步观察市场中资金流动情况,计算公式为:fastperiod AD - slowperiod AD。
从公式中可知,该指标类似于双均线交叉的判断,当短期均线穿越长期均线看多,即数值为正时看多,反之依然。因此操作时可遵循数值由正变负时卖出,由负变正时买进的原则。
TA-Lib提供ADOSC指标的调用接口为:real = ADOSC(high, low, close, volume, fastperiod=3, slowperiod=10)。我们用例程来了解下具体的实现,如下所示:

# 计算ADOSC线
ADOSC = talib.ADOSC(df_stock.High, df_stock.Low, df_stock.Close, df_stock.Volume, fastperiod=3, slowperiod=10)
df_ADOSC = pd.DataFrame(ADOSC, index=df_stock.index, columns=['ADOSC'])
df_ADOSC.loc['2018-01-01':'2019-01-01'].plot(figsize=(16, 6))
plt.show()

图片描述

  1. OBV - On Balance Volume

On Balance Volume由 Joe Granville 提出,主要计算累积的成交量,以某日为基期,逐日累计每日股票总成交量。若隔日指数或股票上涨,则基期OBV加上本日成交量为本日OBV。隔日指数或股票下跌, 则基期OBV减去本日成交量为本日OBV。
TA-Lib提供ADOSC指标的调用接口为:real = OBV(close, volume)。我们用例程来了解下具体的实现,如下所示:

# 计算OBC线
OBV = talib.OBV(df_stock.Close, df_stock.Volume)
df_OBV = pd.DataFrame(OBV, index=df_stock.index, columns=['ADOSC'])
df_OBV.loc['2018-01-01':'2019-01-01'].plot(figsize=(16, 6))
plt.show()

图片描述

在实际应用时的判断依据为:当OBV指标增大时,说明累积成交量在增加,可以推测当前的价格变化为正值,当期的股价是上升的;累积成交量的增大也体现了市场的活跃度增加,短期内股票价格可能继续上升,释放出买入信号;当OBV指标减小时,说明累积成交量在减小,可以推测当前的价格变化为负值,当期的股价是下跌的;市场的活跃度减弱,短期内股票价格可能还会下跌,释放出卖出信号。

接下来我们结合K线和成交量来观察’AD’, ‘ADOSC’, 'OBV’这三个指标的变化。我们可以调用专栏第16小节《技术分析常用指标绘制》的代码分别绘制上证综指、浙大网新的量价技术分析图,如下所示:

图片描述

图片描述

关于完整代码可以加入专栏交流群获取。更多的量化交易内容欢迎大家订阅专栏阅读!!

点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消