Bootstrap

平均真实波幅(Average True Range, ATR)

平均真实波幅(Average True Range, ATR)是一种技术分析指标, 用于衡量金融市场中价格波动的幅度。它是由J. Welles Wilder Jr. 在1978年提出的, 主要用于识别市场的波动性和趋势强度。

ATR的计算基于以下三个步骤:

计算每个周期的真实波幅(True Range, TR)。TR是以下三个值中的最大值:

当前周期的最高价减去最低价。

当前周期的最高价减去前一周期的收盘价。

当前周期的最低价减去前一周期的收盘价。

计算TR的移动平均值。通常使用简单移动平均(SMA), 周期长度可以根据需要选择, 例如14天。

将移动平均值除以一个调整因子, 通常是2, 以得到平均真实波幅。

ATR的计算公式如下:

TR = max(high - low, abs(high - prev_close), abs(low - prev_close))

ATR = SMA(TR, n) / 2

其中, high是当前周期的最高价, low是当前周期的最低价, prev_close是前一周期的收盘价, SMA是简单移动平均, n是移动平均的周期长度。

ATR的主要用途包括:

衡量市场波动性:ATR值越高, 市场波动性越大; ATR值越低, 市场波动性越小。

设置止损和止盈水平:ATR可以帮助交易者确定合理的止损和止盈点位,以适应市场的波动性。

识别趋势强度:ATR可以与其他趋势指标结合使用, 以评估趋势的强度和可能的反转点。

在实际应用中, ATR通常与其他技术分析工具和指标一起使用, 以提高交易决策的准确性。

def stock_atr(stock_data, window=14):

stock_data['H-L'] = stock_data['high'] - stock_data['low']

stock_data['H-PC'] = stock_data['high'] - stock_data['close'].shift(1)

stock_data['L-PC'] = stock_data['low'] - stock_data['close'].shift(1)

stock_data['TR'] = stock_data[['H-L', 'H-PC', 'L-PC']].max(axis=1)

stock_data['ATR'] = stock_data['TR'].rolling(window=window).mean()

return stock_data['ATR']

def plot_stock_atr(stock_data):

atr = stock_atr(stock_data)

stock_data['trade_date'] = pd.to_datetime(stock_data['trade_date'], format='%Y%m%d')

plt.subplot(2, 1, 1)

plt.plot(stock_data['trade_date'], stock_data['close'], label='Close Price')

plt.legend()

plt.title('Close Price')

plt.subplot(2, 1, 2)

plt.plot(stock_data['trade_date'], atr, label='ATR')

plt.legend()

plt.title('ATR')

plt.xlabel('Date')

plt.ylabel('ATR')

plt.show()

;