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

WaveTrend波浪趋势
写在前面
上一篇讲了聪明钱突破通道,有读者私信说这个指标在捕捉突破时确实好用,但在震荡行情中不太管用,价格在通道内来回波动时,不知道什么时候该进该出。
这个问题我也遇到过。趋势行情好做,无非就是顺势而为,等回调入场。但震荡行情就麻烦了,价格在一个区间反复拉锯,追高了就套,杀跌了就踏空。很多人在震荡市里被来回打脸,亏得怀疑人生。
后来接触到WaveTrend这个指标,是在研究TradingView上LazyBear大神的脚本时发现的。仔细研究了算法之后才发现,这个指标的设计思路非常适合震荡行情:通过双重EMA平滑价格波动,用两条波浪线的交叉来判断买卖时机,再配合超买超卖区域和背离检测,在震荡市里找到相对确定性的入场点。
把这个指标加到系统里用了一段时间,效果确实不错。特别是在横盘震荡的时候,WT1和WT2的交叉信号比单纯看RSI或MACD要清晰很多。更重要的是,它能通过背离提前预警趋势反转,让你在震荡转趋势的临界点上占据先机。
这篇文章,我们就来好好讲讲WaveTrend。它既能在震荡行情中捕捉高抛低吸的机会,又能在趋势行情中识别过度延伸和潜在反转。
WaveTrend是什么?
WaveTrend(波浪趋势),是一个基于双重EMA平滑和动量振荡的技术指标。它的核心思想是:通过多重平滑消除价格噪音,用两条波浪线的交叉来捕捉市场的转折点。
说人话就是:把价格数据经过两次平滑处理,变成两条流畅的波浪线。当快线上穿慢线,就是买入信号;当快线下穿慢线,就是卖出信号。
WaveTrend和RSI有什么不同?
很多人会问:这不就是RSI吗?都是振荡指标,都有超买超卖区域。
其实不是。关键区别有三个:
-
平滑程度不同
-
RSI:基于价格涨跌幅的简单平均
-
WaveTrend:基于双重EMA的多层平滑,曲线更流畅
-
-
信号生成不同
-
RSI:主要看单线进入超买超卖区域
-
WaveTrend:看两条线的交叉,配合超买超卖区域,信号更明确
-
-
灵敏度不同
-
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怎么用?
理解了计算原理,使用起来就很清晰了。
什么时候买入?
看两个条件:
-
WT1从下方上穿WT2:快线上穿慢线,多头力量增强
-
最好在超卖区域:WT1在-60以下时的上穿,成功率更高
如果WT1在-60以下(极度超卖区)上穿WT2,这就是强烈买入信号,代码里会在K线下方画一个向下的三角形。这种机会不多,但一旦出现,往往是绝佳的抄底时机。
如果WT1在-60到-53之间(超卖区)上穿,这是普通买入信号,用小圆点标记。这种信号多一些,但也需要配合其他指标验证。
什么时候卖出?
同样看两个条件:
-
WT1从上方下穿WT2:快线下穿慢线,空头力量增强
-
最好在超买区域: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