You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为类MACD指标WaveTrend添加SMA(简单移动平均线)

问题解决:WaveTrend指标嵌入SMA显示异常

问题描述

我有一款类似MACD的WaveTrend指标,想给它添加SMA(简单移动平均线)。但嵌入SMA代码后无法正常显示,原因是这类MACD风格的指标属于区间受限型(数值范围大概在±60之间),而SMA的数值范围是0到数千,两者坐标轴范围差距太大导致SMA被压缩得看不见。目前我只能通过单独启用MA并移到下方现有面板作为临时方案,恳请帮忙实现需求。

原代码

//
// @author LazyBear
//@version=2
//
// If you use this code in its original/modified form, do drop me a note. 
//
study(title="WaveTrend [LazyBear]", shorttitle="BUCKET")
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
obLevel3 = input(40, "Over Bought Level 3")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
osLevel3 = input(-40, "Over Sold Level 3")
 
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,4)

plot(0, color=gray)
plot(obLevel1, color=red)
plot(osLevel1, color=green)
plot(obLevel2, color=red, style=3)
plot(obLevel3, color=red)
plot(osLevel2, color=green, style=3)
plot(osLevel3, color=green)

plot(wt1, color=green,title = 'GREEN')
plot(wt2, color=red, style=3)
plot(wt1-wt2, color=blue, style=area, transp=80)

// I am trying to embed sma but it is going in vain. Please help here

signal = sma(close, 9)
plot(signal, color=color.blue)

解决方案

方案1:将SMA叠加到主图(推荐)

通过给SMA的plot函数添加overlay=true参数,让SMA直接显示在价格主图上,避免受WaveTrend指标面板的坐标轴限制:

//
// @author LazyBear
//@version=2
//
// If you use this code in its original/modified form, do drop me a note. 
//
study(title="WaveTrend [LazyBear]", shorttitle="BUCKET")
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
obLevel3 = input(40, "Over Bought Level 3")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
osLevel3 = input(-40, "Over Sold Level 3")
 
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,4)

plot(0, color=gray)
plot(obLevel1, color=red)
plot(osLevel1, color=green)
plot(obLevel2, color=red, style=3)
plot(obLevel3, color=red)
plot(osLevel2, color=green, style=3)
plot(osLevel3, color=green)

plot(wt1, color=green,title = 'GREEN')
plot(wt2, color=red, style=3)
plot(wt1-wt2, color=blue, style=area, transp=80)

// SMA叠加到主图
signal = sma(close, 9)
plot(signal, color=color.blue, overlay=true)

方案2:将SMA放在独立面板

如果想让SMA和WaveTrend在同一个脚本但不同面板显示,可以给SMA的plot函数添加panel=3参数(WaveTrend默认在panel=2),这样SMA会显示在WaveTrend面板的下方:

//
// @author LazyBear
//@version=2
//
// If you use this code in its original/modified form, do drop me a note. 
//
study(title="WaveTrend [LazyBear]", shorttitle="BUCKET")
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
obLevel3 = input(40, "Over Bought Level 3")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
osLevel3 = input(-40, "Over Sold Level 3")
 
ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,4)

plot(0, color=gray)
plot(obLevel1, color=red)
plot(osLevel1, color=green)
plot(obLevel2, color=red, style=3)
plot(obLevel3, color=red)
plot(osLevel2, color=green, style=3)
plot(osLevel3, color=green)

plot(wt1, color=green,title = 'GREEN')
plot(wt2, color=red, style=3)
plot(wt1-wt2, color=blue, style=area, transp=80)

// SMA放在独立面板
signal = sma(close, 9)
plot(signal, color=color.blue, panel=3)

原理说明

WaveTrend指标的数值范围被限制在±60左右,而SMA是基于价格计算的,数值范围通常在0到数千,两者的坐标轴尺度差距极大。直接在WaveTrend的面板中绘制SMA会导致SMA线条被压缩到几乎看不见。通过overlay=true将SMA移到主图,或者用panel参数指定独立面板,就能避开这个尺度冲突问题。

内容的提问来源于stack exchange,提问作者Karthik dd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:10:27