返回

Python 中的 ATR 计算方法:掌握波动性评估

python

Python 中计算 OHLC 数据的平均真实范围 (ATR)

简介

平均真实范围 (ATR) 是一款技术分析指标,用来衡量给定时间内证券价格波动的幅度。它广泛用于识别趋势、确定止损水平和制定交易策略。

传统 ATR 计算方法

传统的 ATR 计算方法是使用真实范围 (TR),即最高价和最低价之间的差值,然后取一定时间段内的平均值。然而,这种方法可能会产生不稳定的结果,特别是对于较短的周期。

改进的 ATR 计算方法

为了解决这个问题,引入了改进的 ATR 计算方法,它使用了一个平滑因子。此方法将前一期的 ATR 值与当前期的 TR 值相结合,从而提供更加平滑的结果:

Current ATR = [(Prior ATR x 13) + Current TR] / 14

Python 中的实现

在 Python 中,可以使用以下步骤实现改进的 ATR 计算方法:

  1. 计算真实范围 (TR)
tr = df['High'] - df['Low']
  1. 初始化 ATR
atr = tr.copy()
  1. 迭代计算 ATR
for i in range(1, len(tr)):
    atr[i] = ((atr[i - 1] * 13) + tr[i]) / 14

示例

以下是一个示例,展示如何使用改进的方法计算 ATR:

import pandas as pd
import numpy as np

# 创建 OHLC 数据
ohlc_data = {
    'Date': ['30/09/16', '30/09/16', '30/09/16', '30/09/16', '30/09/16'],
    'Time': ['14:45:00+00:00', '15:00:00+00:00', '15:15:00+00:00', '15:30:00+00:00', '15:45:00+00:00'],
    'Open': [1.1216, 1.1209, 1.1205, 1.1217, 1.1216],
    'High': [1.1221, 1.1211, 1.1216, 1.1222, 1.1240],
    'Low': [1.1208, 1.1203, 1.1204, 1.1213, 1.1216],
    'Close': [1.1209, 1.1205, 1.1216, 1.1216, 1.1240]
}

# 创建数据框
df = pd.DataFrame(ohlc_data)

# 计算 TR
tr = df['High'] - df['Low']

# 初始化 ATR
atr = tr.copy()

# 迭代计算 ATR
for i in range(1, len(tr)):
    atr[i] = ((atr[i - 1] * 13) + tr[i]) / 14

# 打印结果
print(df.assign(ATR=atr))

结论

改进的 ATR 计算方法提供了比传统方法更加平滑和稳定的结果,这使其成为确定趋势和管理风险的有用指标。通过利用 Python 中的内置函数,我们可以轻松地实现此方法,从而增强我们的技术分析能力。

常见问题解答

  1. ATR 的典型值是多少?

ATR 没有固定的典型值,因为它取决于所分析的证券和所使用的周期。一般来说,较高的 ATR 值表示更高的波动性,而较低的 ATR 值表示较低的波动性。

  1. ATR 如何用于识别趋势?

ATR 可以通过比较当前 ATR 与历史 ATR 值来用于识别趋势。如果当前 ATR 高于历史平均值,则表明市场可能处于趋势中。

  1. ATR 如何用于确定止损水平?

ATR 可以用来确定止损水平,因为它可以提供当前价格波动幅度的估计。通常,止损水平设置在 ATR 倍数处。

  1. ATR 如何用于制定交易策略?

ATR 可以整合到交易策略中,以管理风险和提高交易决策。例如,ATR 可以用来确定交易头寸的大小或进入/退出交易的时间点。

  1. ATR 有哪些局限性?

ATR 是一种滞后指标,这意味着它基于历史数据。此外,ATR 可能在平稳市场条件下产生虚假信号。