Python量化交易基础讲堂-TA-Lib库量价指标分析

《Python实战-构建基于股票的量化交易系统》小册子主要侧重于 Python 实战讲解,但在内容设计上提供了前置基础章节帮助读者快速掌握基础工具的使用。bash

同时咱们会持续更新一些关于Python和量化相关扩展文章,帮助你们夯实基础和增值学习效果。在小册子《股票数据可视化:自定义Matplotlib版股票行情界面》一节中使用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实现这三个指标。ui

AD - Chaikin A/D Linespa

Chaikin Accumulation/Distribution Line由Marc Chaikin提出,计算公式为:AD=前一日AD值+(CLV*成交量)设计

CLV = ((Close-Low)-(High-Close))/( High - Low)code

从公式中可知,它以当日收盘价与最高价、最低价的关系来估算一段时间内股票累积的成交量,以此分析多空双方力量的变化,可以有效地寻找突破的趋势或者提早预测反转。orm

TA-Lib提供AD指标的调用接口为:real = AD(high, low, close, volume)。咱们用例程来了解下具体的实现,以下所示:cdn

# 计算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线上升的同时,价格在降低,两者产生背离,说明价格的降低趋势减弱,有可能反转回升。实际操做中,能够与一些反转指标共同使用。

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()
复制代码

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'这三个指标的变化。咱们能够调用小册子《股票数据可视化:自定义Matplotlib版股票行情界面》的代码分别绘制上证综指、浙大网新的量价技术分析图,以下所示:

关于完整代码能够加入小册子交流群获取。更多的量化交易内容欢迎你们订阅小册子阅读

相关文章
相关标签/搜索