如果操作过量,即使对市场判断正确,仍会一败涂地。——索罗斯
引言
成交量是股票市场的温度计,许多股票的疯狂上涨并非基本面发生了实质性的变化,而是短期筹码和资金供求关系造成的。量价关系分析法是一种将价格走势与成交量变化相结合的研究方法,正所谓,大军未动,粮草先行。成交量一直被看为是股票市场的“粮草”,成交量的变化是股价变化的前兆。因此,成交量是分析判断市场行情,并作出投资决策时的重要依据,也是各种技术分析指标应用时不可或缺的参照。
本文延续“手把手教你使用Python的TA-Lib”系列,着重介绍交易量指标(Volume Indicators)及其运用。【手把手教你】股市技术分析利器之TA-Lib(一)主要探讨了重叠指标的相关原理与Python实现,【手把手教你】股市技术分析利器之TA-Lib(二)则着重介绍了TA-Lib中强大的数学运算、数学变换、统计函数、价格变换、周期指标和波动率指标函数及其应用实例。TA-Lib的安装使用可查看以前推文。
01 A/D Line 累积派发线
Chaikin Accumulation/Distribution Line (AD),是Marc Chaikin提出的用来平衡交易量的指标,以当日收盘价、最高价和最低价来估算一段时间内该股票累积的资金流量, 用来确定潜在的趋势以及预测趋势反转。
函数名:AD
调用格式:ta.AD(high,low,close,volume)
计算方法: AD=前日AD值+(多空对比*成交量)
多空对比=((收盘价-最低价)-(最高价-收盘价))/(最高价-收盘价);注意:当最高价等于最低价时,多空对比 = (收盘价 / 昨收盘) - 1
运用要点:
- AD测量资金流向,AD向上表明多方占优势,反之表明空方占优势;
- AD与价格的背离可视为买卖信号:底背离考虑买入,顶背离考虑卖出;
- AD指标无需设置参数,但在应用时,可结合均线、MACD、KDJ等指标进行分析;
- AD指标忽略了缺口的影响,有时无法真实反映价格与成交量的关系。
02 A/D Oscillator 震荡指标
震荡指标是计算长短周期的AD差,将资金流动情况与价格行为相对比,用来研判市场中资金流入和流出的情况。
函数名:ADOSC
调用格式:ta. ADOSC(high,low,close,volume,
fastperiod=3,slowperiod=10)
计算方法:fastperiod AD - slowperiod AD,AD的计算同上。
运用要点:
- 交易信号是背离:看涨背离做多,看跌背离做空;
- 股价与90天移动平均结合,与其他指标结合;
- 由正变负卖出,由负变正买进。
03 OBV - 能量潮
全称为 On Balance Volume, 由 Joe Granville 提出,通过统计成交量变动的趋势推测股价趋势。
函数名:OBV
调用格式:ta.OBV(close, volume)
计算公式:以某日为基期,逐日累计每日股票总成交量,若隔日指数或股票上涨,则基期OBV加上本日成交量为本日OBV。隔日指数或股票下跌, 则基期OBV减去本日成交量为本日OBV。
研判:
- 以“N”字型为波动单位,一浪高于一浪称“上升潮”,下跌称“跌潮”;
- 上升潮买进,跌潮卖出;
- 须配合K线图、股价走势和其他指标。
04 应用实例代码
#先引入后面可能用到的包(package)import pandas as pd import numpy as npimport matplotlib.pyplot as plt%matplotlib inline #正常显示画图时出现的中文和负号from pylab import mplmpl.rcParams['font.sans-serif']=['SimHei']mpl.rcParams['axes.unicode_minus']=False#引入TA-Lib库import talib as ta#获取交易数据函数,这里使用tushare的老接口,比较方便import tushare as tsdef get_data(code,start='2018-11-01',end='2019-03-26'): df=ts.get_k_data(code,start,end) df.index=pd.to_datetime(df.date) df=df.sort_index() return df[['open','close','high','low','volume']]#获取当前交易是所有股票代码和名字basics=ts.get_stock_basics()print(len(basics))#basics.head()3602index={'上证综指': 'sh','深证成指': 'sz','沪深300': 'hs300', '创业板指': 'cyb', '上证50': 'sz50','中小板指': 'zxb'}#将当前交易的股票和常用指数代码和名称写入字典,方便调用stock=dict(zip(basics.name,basics.index))stocks=dict(stock,**index)
计算交易量指标并可视化
#使用matplotlib画k线图以及import matplotlib.patches as patchesdef plot_line(name): code=stocks[name] data=get_data(code) fig = plt.figure(figsize=(12,5)) ax1 = fig.add_axes([0, 1, 1, 1]) ax1.set_title(name+"K线图与交易量指标