量化指标解码13:WaveTrend波浪趋势 - 震荡行情的超买超卖捕手

本文是《量化指标解码》系列的第13篇,我们将深入解码WaveTrend波浪趋势指标,从双重EMA平滑到交叉信号捕捉,从超买超卖区域判断到背离检测,从常规信号到强势信号识别,让你掌握在震荡行情中精准捕捉转折点的核心技术。

WaveTrend波浪趋势

写在前面

上一篇讲了聪明钱突破通道,有读者私信说这个指标在捕捉突破时确实好用,但在震荡行情中不太管用,价格在通道内来回波动时,不知道什么时候该进该出。

这个问题我也遇到过。趋势行情好做,无非就是顺势而为,等回调入场。但震荡行情就麻烦了,价格在一个区间反复拉锯,追高了就套,杀跌了就踏空。很多人在震荡市里被来回打脸,亏得怀疑人生。

后来接触到WaveTrend这个指标,是在研究TradingView上LazyBear大神的脚本时发现的。仔细研究了算法之后才发现,这个指标的设计思路非常适合震荡行情:通过双重EMA平滑价格波动,用两条波浪线的交叉来判断买卖时机,再配合超买超卖区域和背离检测,在震荡市里找到相对确定性的入场点

把这个指标加到系统里用了一段时间,效果确实不错。特别是在横盘震荡的时候,WT1和WT2的交叉信号比单纯看RSI或MACD要清晰很多。更重要的是,它能通过背离提前预警趋势反转,让你在震荡转趋势的临界点上占据先机。

这篇文章,我们就来好好讲讲WaveTrend。它既能在震荡行情中捕捉高抛低吸的机会,又能在趋势行情中识别过度延伸和潜在反转。

WaveTrend是什么?

WaveTrend(波浪趋势),是一个基于双重EMA平滑和动量振荡的技术指标。它的核心思想是:通过多重平滑消除价格噪音,用两条波浪线的交叉来捕捉市场的转折点。

说人话就是:把价格数据经过两次平滑处理,变成两条流畅的波浪线。当快线上穿慢线,就是买入信号;当快线下穿慢线,就是卖出信号。

WaveTrend和RSI有什么不同?

很多人会问:这不就是RSI吗?都是振荡指标,都有超买超卖区域。

其实不是。关键区别有三个:

  1. 平滑程度不同

    • RSI:基于价格涨跌幅的简单平均

    • WaveTrend:基于双重EMA的多层平滑,曲线更流畅

  2. 信号生成不同

    • RSI:主要看单线进入超买超卖区域

    • WaveTrend:看两条线的交叉,配合超买超卖区域,信号更明确

  3. 灵敏度不同

    • RSI:反应相对滞后,适合趋势确认

    • WaveTrend:反应更灵敏,适合提前捕捉转折

打个比方,RSI像是用温度计测水温,告诉你现在水是热还是冷。WaveTrend像是用两个不同灵敏度的温度计,快的那个先感知到温度变化,慢的那个跟上时,就是温度真正转折的时候。

WaveTrend适合什么场景?

这个指标天生就是为震荡行情设计的:

  • 震荡市场:表现优异,能在区间内捕捉多次高抛低吸机会

  • 趋势市场:可以用来判断趋势是否过度延伸,寻找回调入场点

  • 多周期配合:大周期看趋势,小周期用WaveTrend找精确入场点

  • 配合背离:背离信号是趋势反转的重要预警

所以这个指标最适合在震荡行情中做波段交易,或者在趋势行情中寻找回调和反转的时机。

WaveTrend的计算原理

WaveTrend的计算分六步:计算HLC3、计算ESA、计算D值、计算CI、计算WT1、计算WT2。听起来复杂,但每一步都有清晰的逻辑。

第一步:计算HLC3

HLC3是High、Low、Close三个价格的平均值,代表K线的价格重心。

复制代码
def calculate_hlc3(bars):
    """
    计算HLC3

    HLC3 = (最高价 + 最低价 + 收盘价) / 3
    """
    hlc3 = [(bar.high_price + bar.low_price + bar.close_price) / 3
            for bar in bars]
    return hlc3

为什么用HLC3?因为它比单纯的收盘价更能反映K线的整体位置,过滤掉了尾盘拉升或砸盘的干扰。

第二步:计算ESA(指数平滑平均)

对HLC3进行第一次EMA平滑,得到ESA(Exponential Smoothed Average)。

复制代码
def calculate_esa(hlc3, channel_length=9):
    """
    计算ESA

    ESA = EMA(hlc3, channel_length)
    """
    esa = talib.EMA(hlc3, timeperiod=channel_length)
    return esa

这里的channel_length默认是9,意思是用9周期的EMA。周期越短,反应越快;周期越长,曲线越平滑。

第三步:计算D值(偏离度的平滑)

计算HLC3与ESA的偏离程度,然后再对这个偏离度进行EMA平滑。

复制代码
def calculate_d(hlc3, esa, channel_length=9):
    """
    计算D值

    D = EMA(abs(hlc3 - esa), channel_length)
    """
    d_values = np.abs(hlc3 - esa)
    d = talib.EMA(d_values, timeperiod=channel_length)
    return d

这一步很关键。D值衡量的是价格偏离均线的幅度。价格波动剧烈时,D值大;价格平稳时,D值小。

第四步:计算CI(通道指数)

这是WaveTrend的核心公式,用偏离度除以一个缩放因子。

复制代码
def calculate_ci(hlc3, esa, d):
    """
    计算CI(Channel Index)

    CI = (hlc3 - esa) / (0.015 * d)
    """
    ci = np.zeros_like(hlc3)
    for i in range(len(hlc3)):
        if d[i] != 0:
            ci[i] = (hlc3[i] - esa[i]) / (0.015 * d[i])
    return ci

为什么是0.015?

这个系数是LazyBear在TradingView上测试出来的经验值。它的作用是调整CI的取值范围,让大部分时候CI在-100到+100之间波动。你也可以改成0.01或0.02,但0.015是市场验证过的最优值。

第五步:计算WT1(WaveTrend主线)

对CI再做一次EMA平滑,得到WT1。

复制代码
def calculate_wt1(ci, avg_length=21):
    """
    计算WT1

    WT1 = EMA(ci, avg_length)
    """
    # 过滤无效值
    ci_clean = np.copy(ci)
    ci_clean[np.isnan(ci_clean)] = 0
    ci_clean[np.isinf(ci_clean)] = 0

    wt1 = talib.EMA(ci_clean, timeperiod=avg_length)
    return wt1

这里的avg_length默认是21,第二次平滑使用的周期更长,让WT1更加稳定。

第六步:计算WT2(WaveTrend信号线)

对WT1计算4周期的SMA,得到WT2。

复制代码
def calculate_wt2(wt1):
    """
    计算WT2

    WT2 = SMA(wt1, 4)
    """
    wt1_clean = np.copy(wt1)
    wt1_clean[np.isnan(wt1_clean)] = 0

    wt2 = talib.SMA(wt1_clean, timeperiod=4)
    return wt2

为什么WT2用SMA而不是EMA?

因为SMA更滞后,和WT1的EMA形成快慢配合。当快线(WT1)穿越慢线(WT2)时,就是明确的交叉信号。

把这六步串起来,就得到了完整的WaveTrend指标:

  • WT1:青绿色曲线,快线,反应灵敏

  • WT2:珊瑚色曲线,慢线,更加平滑

  • 交叉点:WT1和WT2交叉时,产生买卖信号

  • 填充区域:两条线之间的填充,直观显示多空力量对比

WaveTrend怎么用?

理解了计算原理,使用起来就很清晰了。

什么时候买入?

看两个条件:

  1. WT1从下方上穿WT2:快线上穿慢线,多头力量增强

  2. 最好在超卖区域:WT1在-60以下时的上穿,成功率更高

如果WT1在-60以下(极度超卖区)上穿WT2,这就是强烈买入信号,代码里会在K线下方画一个向下的三角形。这种机会不多,但一旦出现,往往是绝佳的抄底时机。

如果WT1在-60到-53之间(超卖区)上穿,这是普通买入信号,用小圆点标记。这种信号多一些,但也需要配合其他指标验证。

什么时候卖出?

同样看两个条件:

  1. WT1从上方下穿WT2:快线下穿慢线,空头力量增强

  2. 最好在超买区域:WT1在+60以上时的下穿,成功率更高

如果WT1在+60以上(极度超买区)下穿WT2,这就是强烈卖出信号,会在K线上方画一个向上的三角形。这是逃顶的好时机。

如果WT1在+53到+60之间(超买区)下穿,这是普通卖出信号,用小圆点标记。

背离信号怎么看?

背离是WaveTrend最有价值的功能之一。有两种背离:

看涨背离(价格创新低,指标创新高)

  • 价格在下跌,一个低点比一个低点低

  • 但WT1的低点却一个比一个高

  • 这说明空头力量在衰竭,可能反转向上

  • 用菱形标记显示在指标线下方

看跌背离(价格创新高,指标创新低)

  • 价格在上涨,一个高点比一个高点高

  • 但WT1的高点却一个比一个低

  • 这说明多头力量在衰竭,可能反转向下

  • 用菱形标记显示在指标线上方

背离信号往往出现在趋势的末端,是反转的早期预警。结合交叉信号使用,效果更好。

AI智能解读

系统会自动分析WaveTrend的状态,给出实时解读。

智能解读效果图

解读内容包括:

  • 超买超卖状态:极度超买/超买/中性/超卖/极度超卖

  • 交叉信号分析:WT1上穿WT2/WT2上穿WT1,方向判断

  • 动能变化趋势:WT1快速上升/温和上升/快速下降/温和下降

  • 背离信号提示:看涨背离/看跌背离,关注反转做多/做空

  • 关键位突破:突破零轴/进入超买超卖区域

这些解读会实时更新,帮你快速理解当前市场在什么阶段。比如你看到"极度超卖区 - 警惕底部反转"配合"WT1上穿WT2 - 看涨信号",这就是明确的做多机会。

参数配置详解

WaveTrend有几个核心参数,理解它们对实战很重要。

参数配置界面

1. 通道长度(channel_length,默认9)

控制第一次EMA平滑的周期,影响指标的灵敏度。

  • 5-8:快速反应

    • 信号多,反应快,但假信号也多

    • 适合日内交易、短线波段

  • 9-12:平衡模式(推荐)

    • 在灵敏度和稳定性之间取得平衡

    • 适合大多数交易周期

  • 13-15:稳健跟踪

    • 信号少,但可靠性高

    • 适合中长线持仓

实战建议:日内用7-9,小时线用9-11,日线用11-13。

2. 平均长度(avg_length,默认21)

控制第二次EMA平滑的周期,影响WT1的平滑程度。

  • 15-18:快速模式

    • WT1变化快,交叉信号多

    • 适合活跃品种

  • 21-25:标准模式(推荐)

    • 兼顾速度和稳定性

    • 适合大多数情况

  • 26-30:平稳模式

    • WT1非常平滑,交叉信号少但可靠

    • 适合震荡剧烈的品种

实战建议:默认21就很好,不同品种可以在18-25之间微调。

3. 超买线1(ob_level1,默认60)

极度超买的阈值,WT1超过这个值说明市场过热。

实战建议:60是经典设置,可以根据品种特性调整到55-65。波动大的品种可以设高一点,波动小的品种设低一点。

4. 超买线2(ob_level2,默认53)

普通超买的阈值,WT1超过这个值开始考虑减仓。

实战建议:保持和超买线1有7-10点的差距,形成一个超买区间。

5. 超卖线1(os_level1,默认-60)

极度超卖的阈值,WT1低于这个值说明市场超跌。

实战建议:-60是经典设置,对称于+60。

6. 超卖线2(os_level2,默认-53)

普通超卖的阈值,WT1低于这个值开始考虑加仓。

实战建议:保持和超卖线1有7-10点的差距。

7. 显示背离(show_divergences,默认True)

是否显示价格与WaveTrend的背离信号。

背离是很重要的反转信号,建议开启。如果觉得图表太乱,可以关闭,专注交叉信号本身。

实战经验与避坑指南

第一,不是所有交叉都值得做。WT1和WT2在零轴附近来回穿梭时,交叉信号不可靠。最好等WT1到超买超卖区域后的交叉,成功率高很多。

第二,超买超卖可以持续很久。WT1进入超买区域不代表马上会跌,可能还会继续上涨。真正的卖点是WT1在超买区下穿WT2的时候。

第三,背离信号要配合位置。低位的看涨背离最可靠,往往是大底部信号。高位的看跌背离最可靠,往往是大顶部信号。中间位置的背离,谨慎对待。

第四,多周期验证。小周期的WaveTrend信号配合大周期趋势,效果最好。如果日线在上涨趋势,小时线WaveTrend给出超卖买入信号,这种顺势交易成功率最高。

第五,零轴很重要。WT1在零轴上方,说明整体偏多;在零轴下方,说明整体偏空。突破零轴或跌破零轴,都是重要的趋势转折信号。

就这几点。话不多,但都是实战踩坑总结出来的。

写在最后

到这里,WaveTrend波浪趋势的核心内容基本讲完了。从双重EMA平滑到交叉信号捕捉,从超买超卖判断到背离检测,从常规信号到强势信号识别,最重要的是理解这个指标的本质:它通过多层平滑消除噪音,用双线交叉捕捉市场转折点

不要指望这个指标能告诉你市场一定会涨还是会跌,它只能告诉你:当前市场处于什么状态(超买/超卖/中性),以及动量方向在发生什么变化(上穿/下穿)。

用好它的关键是:

  • 在超买超卖区域等交叉信号(不要在中间区域频繁交易)

  • 结合大周期趋势判断方向(小周期找入场点)

  • 重视背离信号(特别是极端位置的背离)

  • 关注零轴突破(趋势转折的重要信号)

  • 配合其他指标验证(成交量、SuperTrend、挤压动量等)

下一篇准备讲SuperTrended RSI。说实话,WaveTrend在震荡行情中捕捉买卖点确实很强,但它有个问题:不太能区分震荡和趋势。有时候在强势趋势中,WT1刚进超买区就给卖出信号,你平仓出来,结果它继续涨了20%。SuperTrended RSI专门解决这个问题,它把RSI和SuperTrend结合起来,用趋势方向过滤掉逆势信号。两个指标配合起来,WaveTrend管震荡中的精确买卖点,SuperTrended RSI管趋势中的顺势交易,互补性很强。

先写到这,有问题欢迎留言交流。


本文是《量化指标解码》系列的第13篇,ATMQuant量化交易系统已开源至GitHub:https://github.com/seasonstar/atmquant

WaveTrend波浪趋势指标已集成到ATMQuant系统副图指标控制板,完整源码和配置教程详见GitHub。

本文内容仅供学习交流,不构成任何投资建议。交易有风险,投资需谨慎。


加入「量策堂·AI算法指标策略」

想系统性掌握策略研发、指标可视化与回测优化?加入我的知识星球,获得持续、体系化的成长支持:


往期文章回顾

《量化指标解码》系列

《以AI量化为生》系列


相关标签:#量化交易 #技术指标 #WaveTrend #波浪趋势 #震荡指标 #Python #vnpy

相关推荐
weixin_509138341 小时前
语义流形探索:大型语言模型中可控涌现路径的实证证据
人工智能·语义空间
soldierluo2 小时前
大模型的召回率
人工智能·机器学习
Gofarlic_oms12 小时前
Windchill用户登录与模块访问失败问题排查与许可证诊断
大数据·运维·网络·数据库·人工智能
童话名剑2 小时前
人脸识别(吴恩达深度学习笔记)
人工智能·深度学习·人脸识别·siamese网络·三元组损失函数
_YiFei2 小时前
2026年AIGC检测通关攻略:降ai率工具深度测评(含免费降ai率方案)
人工智能·aigc
GISer_Jing3 小时前
AI Agent 智能体系统:A2A通信与资源优化之道
人工智能·aigc
yusur3 小时前
边缘智算新引擎 DPU 驱动的算力革新
人工智能·科技·rdma·dpu
视觉&物联智能3 小时前
【杂谈】-企业人工智能的变革与机遇
人工智能·ai·aigc·agi
图生生3 小时前
电商主图快速修改方案:AI工具实现元素自由增删,降低开发与设计成本
人工智能