当前交易日最高价与最低价差值,前一交易日收盘价与当前交易日最高价间的差值,前一交易日收盘价与当前交易日最低价的差值,这三者中的最大值为真实波幅。
即真实波动幅度 = max(最大值,昨日收盘价) − min(最小值,昨日收盘价),
平均真实波动幅度等于真实波动幅度的N日指数移动平均数。波动幅度可以显示出交易者的期望和热情。波动幅度的急剧增加表示交易者在当天可能准备持续买进或卖出股票,波动幅度的减少则表示交易者对股市没有太大的兴趣。波动率指标可用于衡量价格的波动情况,辅助判断趋势改变的可能性,市场的交易氛围,也可以利用波动性指标来帮助止损止盈。
ATR : Average True Range 平均真实波动幅度 : ta.ATR(high, low, close, timeperiod=14)
NATR : Normalized Average True Range 归一化的平均真实波动幅度:ta.NATR(high, low, close, timeperiod=14)
TRANGE : True Range 真实波动幅度 :ta.TRANGE(high, low, close)
import pandas as pd import numpy as np import matplotlib.pyplot as plt import talib as ta import tushare as ts plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False def get_data(code, start='2015-01-01'): df = ts.get_k_data(code, start) df.index = pd.to_datetime(df.date) df = df.sort_index() return df df = get_data('sh')[['open', 'close', 'high', 'low']] df['atr'] = ta.ATR(df.high, df.low, df.close, timeperiod=14) df['natr'] = ta.NATR(df.high, df.low, df.close, timeperiod=14) df['trange'] = ta.TRANGE(df.high, df.low, df.close) df.tail() df[['close', 'atr', 'natr', 'trange'] ].plot(figsize=(16,12), subplots=True, layout=(2,2)) plt.subplots_adjust(wspace=0, hspace=0.2)
上证指数走势及波动率指标