Supertrend 是如何计算的?公式、参数和数据要求
什么是 Supertrend,它计算什么?
Supertrend 是一种趋势跟踪指标,它将价格数据转换为一条线(通常以阶梯状线条绘制)和一个方向(上升趋势或下降趋势)。它的设计目标是始终停留在价格的一侧,直到指标的带状线被价格突破,此时它会切换方向。
总体而言,Supertrend 需要三个要素:
- 一个价格序列(例如,使用每根K线的最高价/最低价/收盘价)。
- 一个波动率估计值(通常为 ATR,即平均真实波幅)。
- 一条将波动率调整后的带状线转换为持续趋势线的规则。
由于它依赖移动窗口计算(ATR,以及可选的平滑处理),其精确数值输出取决于您如何计算 ATR、使用哪种“K线”定义(时间周期和 OHLC 数据)以及所选择的参数。
核心机制:带状线、ATR 和趋势切换
Supertrend 是针对每一根新K线迭代计算的。最常见的计算方式如下:
步骤 1:计算真实波幅(TR)
对于每根K线 t,使用最高价/最低价/收盘价定义真实波幅。标准定义为:
- (TR_t = \max{H_t - L_t,\ |H_t - C_{t-1}|,\ |L_t - C_{t-1}|})
其中:
- (H_t) = 第 t 根K线的最高价
- (L_t) = 第 t 根K线的最低价
- (C_t) = 第 t 根K线的收盘价
- (C_{t-1}) = 上一根K线的收盘价
步骤 2:计算 ATR(平均真实波幅)
ATR 是在选定周期 (n) 内对 TR 的平均值。常用方法是简单移动平均(SMA):
- (ATR_t = \text{SMA}(TR_t, n))
某些实现可能使用 Wilder 平滑法(ATR 中常见),但验证的关键点是:您必须与参考实现所用的平滑方法保持一致。
步骤 3:计算基础上下带
典型的 Supertrend 带状线构造使用中间价 (M_t) 和乘以因子 (k)(乘数)的 ATR:
- (M_t = (H_t + L_t) / 2)
- (\text{BasicUpper}_t = M_t + k \cdot ATR_t)
- (\text{BasicLower}_t = M_t - k \cdot ATR_t)
所需参数:
- (n):ATR 回溯长度(通常称为“周期”)。
- (k):ATR 乘数(通常称为“乘数”)。
步骤 4:应用“带状线最终化”规则(前向传递逻辑)
Supertrend 通常会调整(最终化)带状线,使其不随当前趋势反向移动。一种广泛使用的规则集如下:
- (\text{FinalUpper}_t) 通常设为 (\text{BasicUpper}_t),除非条件表明应从前一根K线继承。
- (\text{FinalLower}_t) 通常设为 (\text{BasicLower}_t),除非条件表明应从前一根K线继承。
一种常见的条件结构基于前一根K线的收盘价和之前最终化的带状线值。概念上:
- 当价格高于前一个趋势线时,下带可以“逐步上移”,但不应下降。
- 当价格低于前一个趋势线时,上带可以“逐步下移”,但不应上升。
由于不同实现方式存在差异,这是一个重要的数据要求:要复现特定的 Supertrend 序列,您必须使用与参考实现相同的带状线最终化规则。
步骤 5:确定趋势方向和 Supertrend 线
一旦有了最终的上下带,Supertrend 通过将当前价格(通常是收盘价)与相关带状线比较来确定趋势方向:
- 如果指标处于上升趋势状态且价格跌破最终的下/上边界(取决于惯例),则切换为下降趋势。
- 如果处于下降趋势且价格升破另一边界,则切换为上升趋势。
Supertrend 在第 t 根K线的“线”值设定为:
- 当状态为上升趋势时,取最终下带(或在下降趋势时取最终上带),遵循指标的绘图惯例。
这种迭代状态机机制解释了为什么 Supertrend 不只是一个单一公式:其输出依赖于前几根K线的最终化带状线和先前的趋势状态。
示例计算(含明确假设)
以下是验证式的小型示例,展示您应如何计算,而非精确数值结果。
示例假设:
- 您使用具有已知 (H_t, L_t, C_t) 的K线。
- 您使用最大值定义计算 (TR_t)。
- 您使用 (n) 根K线的 SMA 计算 ATR。
- 您使用要复现的计算器所选的参数 (n) 和 (k)。
- 您使用与目标实现一致的标准带状线最终化规则。
步骤:
- 从第 (t = 2) 根K线开始(因为需要 (C_{t-1})),计算 (TR_t)。
- 对于存在足够 TR 值的每根K线 (t)(在 SMA 意义上 (t \ge n)),计算 (ATR_t)。
- 计算 (M_t = (H_t + L_t)/2)。
- 计算基础带:
- (\text{BasicUpper}_t = M_t + k\cdot ATR_t)
- (\text{BasicLower}_t = M_t - k\cdot ATR_t)
- 应用实现的带状线最终化(逐步调整)规则,得到 (\text{FinalUpper}_t) 和 (\text{FinalLower}_t)。
- 更新趋势状态:
- 根据指标惯例,将价格与相关最终化带状线比较。
- 输出 Supertrend 值为最终下带(上升趋势)或最终上带(下降趋势)。
正确性关键:
- 如果您的计算序列不同,差异通常源于 ATR 平滑类型(SMA 与 Wilder)、带状线最终化规则差异,或初始状态设定方式。
自行计算 Supertrend 所需的数据
要独立复现 Supertrend,您需要:
- 一个按时间排序的分析品种 OHLC 数据集(使用计算所用的确切时间周期)。
- TR 和 ATR 平滑方法的定义(SMA 与 Wilder 平滑)。
- 参数值 (n)(ATR 周期)和 (k)(乘数)。
- 所选定义所用的带状线最终化规则和趋势状态更新规则。
若选择不同,两个计算器都可声称计算“Supertrend”,但可能产生不同的线条。
主要限制和失效模式
Supertrend 是机械的,但并非没有问题。主要限制包括:
-
参数敏感性
改变 (n) 或 (k) 会影响带的宽度以及波动率变化传递到指标的速度。在一个市场环境下平滑的设置,在另一个环境下可能更频繁地切换。 -
横盘或震荡行情中的频繁切换
当价格在带状线附近震荡时,趋势状态可能频繁切换。这会产生交替的上涨/下跌阶段模式,可能无法反映持续趋势。 -
初始化效应
ATR 和移动平均需要启动期。首个可计算的 ATR 值(以及初始趋势状态)会影响后续的最终化带状线和状态演变,因此早期K线在不同实现中可能表现不同。 -
数据粒度和 OHLC 约定
不同的K线构造方式(时间周期、数据源对高低点的处理、缺失K线)可能改变 (TR_t),从而影响 ATR,导致带状线位置偏移。