量化策略开发,高质量社群,交易思路分享等相关内容
超级趋势指标结合价格和波动性信息,帮助交易者跟随更大的趋势。了解如何计算和使用它。
识别趋势的能力是交易的关键组成部分。通常,交易者依赖于价格结构和/或移动平均线来识别趋势并保持在趋势中。最近,我了解到另一个名称令人感兴趣的指标,称为超级趋势,它结合了价格和波动性,帮助交易者跟随更大的趋势。
关于超级趋势指标的创建背景信息比较稀少。它的开发归功于一位名叫 Olivier Seban 的法国外汇交易者,他基于 J. Welles Wilder 的平均真实波幅(ATR)来计算该指标,而不是基于移动平均线。
如图 1 所示,超级趋势指标展示了该指标如何识别方向偏差和波动性。它常常会产生阶梯效应,随着波动性的扩展和收缩而移动。
图1:超级趋势指标。超级趋势指标显示在Blackrock(BLK)的图表上,它使用真实波动幅度均值而不是移动平均线,从而同时衡量方向偏差和波动性。当它随着波动性的扩张和收缩而移动时,它通常会呈现出阶梯状的效果。
超级趋势与其他指标的区别
与基于过去开盘价、最高价、最低价或收盘价的移动平均线不同,平均真实波幅是基于过去的价格范围值。价格范围计算的是从高到低或低到高的距离,这是一种衡量价格波动性的方式。然而,发现实际的价格范围并不像听起来那么简单。例如,当股票从当前柱线的收盘价向上或向下跳空时,实际的价格范围是多少?或者在一个内区间日的情况下呢?或者当某商品价格达到涨停或跌停时呢?
这些问题促使 Wilder 创建了一个他称为真实波幅的指标。它测量当前每日波幅以及从前一天收盘价到当前价格的跳空。这一值基于以下最大距离之一:1)当前最高价减去当前最低价,2)当前最高价减去前一日收盘价,或 3)当前最低价减去前一日收盘价。真实波幅揭示了关于股票或商品的波动性信息。大的真实波幅表示高波动性,而小的波幅代表低波动性。
随后,Wilder 创建了 平均真实波幅,它是表示某个给定时间段内波动性高低的真实波幅值的平均值。大多数图表平台上的默认设置是 14 周期的 ATR,通常作为价格图表下的单独指标,如图 2 所示。
ATR 指标的移动标识了价格波动性的程度,无论价格趋势如何。例如,使用 14 周期的 ATR,图 2 中的 Adobe 图表显示了 2023 年 1 月底价格上涨和孤岛反转之后,以及 2023 年 2 月底趋势下跌期间的波动性峰值。
图2:平均真实范围(ATR)。这里的ATR与Adobe(ADBE)的价格图表一起显示,通常会在价格图表下方的单独窗口中绘制。与超趋势指标不同,ATR并不衡量价格方向,而只是衡量价格波动。
计算超级趋势指标
与 ATR 指标不同,超级趋势指标作为价格图表的覆盖图,而不是在价格图表下的面板中绘制。它需要创建一条上限线和一条下限线。注意:超级趋势指标类似于吊灯止损,它也结合了 ATR,但是公式中的变量不同。
超级趋势指标的计算非常简单。以下是上限线和下限线的公式:
上限线:(最高价 + 最低价) / 2 + 乘数 × ATR
下限线:(最高价 + 最低价) / 2 - 乘数 × ATR
该公式将中位价格替代了收盘价,并将其与 ATR 的一个乘数相加。在原始公式中,默认乘数为 3,使用的 ATR 周期为 10。
当价格高于指标线时,表明上升趋势;当价格低于指标线时,则表示下降趋势。当价格收盘超出相反方向的 ATR 乘数范围时,发出趋势反转信号。
一些图表软件包中包含超级趋势指标,并分别绘制上限线和下限线。对于本文,我使用了 MetaStock 图表平台,并将超级趋势指标绘制为一条单线。单线在价格上方和下方移动,反映了由方向性价格变化引起的波动性。这使得我更清晰地看到实际的超级趋势交叉信号发生的地方。
本文使用每日股票图表来展示所提出的概念,但超级趋势指标适用于所有市场和所有时间框架。
使用超级趋势指标进行交易
超级趋势指标的主要功能是提供一个更广泛的方向性偏差视角,帮助交易者在一些价格波动中仍然保持在上升或下降趋势中。最新的超级趋势线位置甚至标识了趋势变化可能发生的价格水平。然而,该指标还为交易者提供了其他几种有助于理解价格行为的参考,并为进场、出场和止损设置提供了位置。
交易信号——交叉点标识趋势变化并创建一个简单的交易策略。例如,当价格最初跃过超级趋势线时,交易者可以进入多头仓位,当价格跌破该线时退出。或者,对于风险较低的交易者,可以等待趋势变化信号后的第一次回调再进入多头仓位。
止损设置——即使超级趋势是一个滞后指标,无法捕捉到价格的顶点和底部,但交叉信号通常会在趋势变化点形成明显的角度,切换为从高到低的峰值,或从低到高的 V 形,如图 3 中的 Amgen 图表所示。当超级趋势交叉发生时,后续价格再测试高点或低点很少超过之前的峰值或谷底,这使得它们成为初始止损设置的优秀位置。一旦趋势开始,超级趋势指标线可以作为跟踪止损或支撑/阻力水平。
图3:超级趋势指标的交叉信号。箭头安进(AMGN)的这条日线图指向超级趋势指标在发出趋势变化信号时通常在价格交叉处形成的波峰和波谷。
整理阶段——当价格收缩并开始横盘或进行浅度到中度回调时,指标线会沿主要趋势方向上升或下降,但会形成一条水平线。这些水平线警告价格行为的变化,并通过快速识别价格开始整理时的情况来帮助消除潜在的震荡操作。图4中的思科系统公司(Cisco Systems)图表上用透明的灰色竖线展示了在现行趋势中的价格整理和回调区域。
图4:超级趋势整理。在这张思科系统公司(Cisco Systems, CSCO)的图表中,垂直的灰色阴影显示了价格整理区域。
整理突破——在当前趋势中,水平线通常有助于形成一个明显的阶梯图案。这为交易者提供了增加现有交易或在价格突破整理区进入新交易的机会,从而形成下一个上涨或下跌水平。水平线还为突破交易设置初始止损点或在进行中的交易中上下调整止损提供了合适的价格水平。
确认其他指标信号
交易者还可以将超级趋势指标与其他技术分析工具(如移动平均线或动量振荡器)结合使用,以确认交易的进场或出场。图5展示了在 SPY ETF 的日线图上绘制的超级趋势指标,配合上方面板中的随机振荡器。箭头指向随机振荡器的超买和超卖水平。2022年8月,从超买到超卖的变化在超级趋势发出价格从上方翻转到下方的趋势变化信号后不久得到了确认。该指标还确认了随机振荡器在10月向上反转的信号,当时价格跨越了超级趋势线的上方。
图5:超级趋势对其他指标的确认。超级趋势指标帮助确认反转信号并防止其他指标中的过早退出。在这里,超级趋势指标被应用在 SPY 的日线图上,用来确认或拒绝随机振荡指标给出的反转信号。
正如许多振荡指标一样,随机振荡器在趋势市场中因生成虚假信号而臭名昭著。然而,超级趋势能够避免不合时宜的出场或进场信号。在10月价格持续下跌时,价格保持在超级趋势线下方,而随机振荡器在9月和10月的价格回调期间两次穿越其20水平。然而,由于价格仍然低于超级趋势线,这些反趋势行动(在图表上用黄色圆圈标出)并未得到确认。
在10月至11月的上升趋势期间,超级趋势指标还避免了虚假出场信号,因为它并未确认11月随机振荡器在超买水平下跌的回调。
创建提前预警提示
一个等于三倍 ATR 的指标线确实可以消除市场噪音,并给价格提供更大的波动空间,但不幸的是,它通常不能及时反转,往往会回吐过多的利润。调整乘数设置是提高 ATR 敏感度的一种方法。较小的设置使得指标对价格更敏感。
通过保持 10 周期的 ATR 但将乘数从 3 减小到 2,可以创建一个提前预警系统,提示价格从一种方向偏差过渡到另一种时,趋势即将发生变化。
图6中的通用电气(General Electric)图表展示了两个超级趋势指标——红色的原始指标和蓝色的较短、反应更迅速的超级趋势设置。箭头标出了价格被这两个指标夹住的潜在趋势变化区域。使用这种双指标设置不仅可以为交易者提供潜在的趋势方向变化的提示,还可以在进行中的交易中更积极地上下调整止损。
图6:双重超级趋势提前预警系统。使用两个具有不同乘数的超级趋势指标可以用来警告潜在的方向变化(此处为通用电气 GE 的图表),当价格在交叉之前被短期和长期指标夹住时,可以提供预警信号。
对于一些交易者来说,这甚至可以提供额外的策略来决定交易的进场和出场。例如,交易者可以等待蓝色指标线穿过红色指标线作为进场信号,但当价格穿过蓝色指标线时退出交易。
结论
保持趋势直到结束”的这一格言变得更加容易通过应用超级趋势指标来实现,因为它忽略了较小的价格波动。正如本文所指出的,它还提供了许多其他功能,可能为交易提供优势。然而,提醒一句:股票并不总是处于趋势模式,超级趋势指标在非趋势期间会产生虚假买卖信号。交易者最好熟悉超级趋势指标在不同市场条件下的行为。
代码
Params
Numeric ATRLength(10); // ATR周期长度
Numeric Multiplier(3); // 乘数
Numeric NumPlotLines(1); // 绘制线的数量:1或2
Vars
Numeric ATRValue(0); // ATR值
Numeric BTop(0); // 上轨初始值
Series<Numeric> Top(0); // 上轨
Numeric BBottom(0); // 下轨初始值
Series<Numeric> Bottom(0); // 下轨
Series<Numeric> ST(0); // 超级趋势值
Numeric MedianPrice(0); // 中间价
Integer PlotColor(0); // 绘制颜色
Events
OnBar(ArrayRef<Integer> indexs)
{
// 计算中间价
MedianPrice = (High + Low) / 2;
// 计算ATR值
ATRValue = AvgTrueRange(ATRLength);
// 计算初始上轨和下轨
BTop = MedianPrice + Multiplier * ATRValue;
BBottom = MedianPrice - Multiplier * ATRValue;
// 初始化 Top 和 Bottom
If(CurrentBar == 0)
{
Top = BTop;
Bottom = BBottom;
ST = BTop;
}
Else
{
// 更新上轨
Top = IIF(BTop < Top[1] OR Close[1] > Top[1], BTop, Top[1]);
// 更新下轨
Bottom = IIF(BBottom > Bottom[1] OR Close[1] < Bottom[1], BBottom, Bottom[1]);
// 确定超级趋势值和绘制颜色
If(Close < ST[1])
{
ST = Top;
PlotColor = Rgb(0,255,0);
}
Else
{
ST = Bottom;
PlotColor = Rgb(255,0,0);
}
}
// 根据 NumPlotLines 的值绘制相应的线
If(NumPlotLines == 2)
{
PlotNumeric("Upper Line", Top,0,PlotColor);
PlotNumeric("Lower Line", Bottom,0,PlotColor);
}
Else
{
PlotNumeric("Supertrend", ST,0,PlotColor);
}
}