如何设置SSL指标颜色:交叉期间为灰色,交叉后切换颜色?
调整SSL指标颜色:交叉期间显示灰色,确认趋势后切换对应颜色
需求说明
需要调整SSL指标的颜色逻辑:
- 价格处于SSL区间内(交叉过程中)时,指标显示灰色
- 价格突破SSL区间并确认趋势后,指标切换为对应趋势颜色(突破上轨显示青色,突破下轨显示红色)
效果对比
当前效果

目标效果

原代码
//@version=5 // === SSL 60 === show_SSL = input.bool(true, 'Show SSL') SSL = ta.wma(2 * ta.wma(close, 60 / 2) - ta.wma(close, 60), math.round(math.sqrt(60))) SSLrangeEMA = ta.ema(ta.tr, 60) SSLhigh = SSL + SSLrangeEMA * 0.2 SSLlow = SSL - SSLrangeEMA * 0.2 // Trend and colors SSLcolor = close > SSLhigh ? color.new(color.aqua, 0) : close < SSLlow ? color.new(#ff0062, 0) : color.new(color.gray, 0) // Drawings plotSSL = plot(show_SSL ? SSL : na, color=SSLcolor, linewidth=1, title='SSL Baseline') plotSSLhigh = plot(show_SSL ? SSLhigh : na, color=SSLcolor, linewidth=1, title='SSL Highline') plotSSLlow = plot(show_SSL ? SSLlow : na, color=SSLcolor, linewidth=1, title='SSL Lowline') fill(plotSSLhigh, plotSSLlow, color=color.new(SSLcolor, 90)) // === SSL 120 === SSL_120 = ta.wma(2 * ta.wma(close, 120 / 2) - ta.wma(close, 120), math.round(math.sqrt(120))) SSL_120rangeEMA = ta.ema(ta.tr, 120) SSL_120high = SSL_120 + SSL_120rangeEMA * 0.2 SSL_120low = SSL_120 - SSL_120rangeEMA * 0.2 // Trend and colors SSL120color = close > SSL_120high ? color.new(color.aqua, 0) : close < SSL_120low ? color.new(#ff0062, 0) : color.new(color.gray, 0) // Drawings plotSSL120 = plot(show_SSL ? SSL_120 : na, color=color.new(SSL120color, 100), linewidth=1, title='SSL Baseline (120)') plotSSL120high = plot(show_SSL ? SSL_120high : na, color=color.new(SSL120color, 100), linewidth=1, title='SSL Highline (120)') plotSSL120low = plot(show_SSL ? SSL_120low : na, color=color.new(SSL120color, 100), linewidth=1, title='SSL Lowline (120)') fill(plotSSL120high, plotSSL120low, color=color.new(SSL120color, 80))
修改后的代码
//@version=5 // === SSL 60 === show_SSL = input.bool(true, 'Show SSL') SSL = ta.wma(2 * ta.wma(close, 60 / 2) - ta.wma(close, 60), math.round(math.sqrt(60))) SSLrangeEMA = ta.ema(ta.tr, 60) SSLhigh = SSL + SSLrangeEMA * 0.2 SSLlow = SSL - SSLrangeEMA * 0.2 // 用var变量保存当前趋势颜色,初始为灰色 var color SSL_trend_color = color.new(color.gray, 0) // 当收盘价突破上轨,更新趋势色为青色 if close > SSLhigh SSL_trend_color := color.new(color.aqua, 0) // 当收盘价跌破下轨,更新趋势色为红色 if close < SSLlow SSL_trend_color := color.new(#ff0062, 0) // 当收盘价回到区间内,切换为灰色 if close <= SSLhigh and close >= SSLlow SSL_trend_color := color.new(color.gray, 0) // Drawings plotSSL = plot(show_SSL ? SSL : na, color=SSL_trend_color, linewidth=1, title='SSL Baseline') plotSSLhigh = plot(show_SSL ? SSLhigh : na, color=SSL_trend_color, linewidth=1, title='SSL Highline') plotSSLlow = plot(show_SSL ? SSLlow : na, color=SSL_trend_color, linewidth=1, title='SSL Lowline') fill(plotSSLhigh, plotSSLlow, color=color.new(SSL_trend_color, 90)) // === SSL 120 === SSL_120 = ta.wma(2 * ta.wma(close, 120 / 2) - ta.wma(close, 120), math.round(math.sqrt(120))) SSL_120rangeEMA = ta.ema(ta.tr, 120) SSL_120high = SSL_120 + SSL_120rangeEMA * 0.2 SSL_120low = SSL_120 - SSL_120rangeEMA * 0.2 // 用var变量保存120周期的趋势颜色,初始为灰色 var color SSL120_trend_color = color.new(color.gray, 0) // 突破上轨更新为青色 if close > SSL_120high SSL120_trend_color := color.new(color.aqua, 0) // 跌破下轨更新为红色 if close < SSL_120low SSL120_trend_color := color.new(#ff0062, 0) // 回到区间内切换为灰色 if close <= SSL_120high and close >= SSL_120low SSL120_trend_color := color.new(color.gray, 0) // Drawings plotSSL120 = plot(show_SSL ? SSL_120 : na, color=color.new(SSL120_trend_color, 100), linewidth=1, title='SSL Baseline (120)') plotSSL120high = plot(show_SSL ? SSL_120high : na, color=color.new(SSL120_trend_color, 100), linewidth=1, title='SSL Highline (120)') plotSSL120low = plot(show_SSL ? SSL_120low : na, color=color.new(SSL120_trend_color, 100), linewidth=1, title='SSL Lowline (120)') fill(plotSSL120high, plotSSL120low, color=color.new(SSL120_trend_color, 80))
关键修改说明
- 使用
var关键字定义趋势颜色变量,确保颜色状态在K线周期间持续保留 - 拆分颜色判断逻辑为独立的
if条件:- 价格突破上轨时,设置趋势色为青色
- 价格跌破下轨时,设置趋势色为红色
- 价格回到SSL区间内时,切换为灰色
- 原代码是实时根据当前收盘价判断颜色,修改后会保持趋势色直到价格回到区间内,完全匹配目标效果中“交叉期间灰色,确认趋势后显示对应颜色”的需求
内容的提问来源于stack exchange,提问作者Notorious
相关产品推荐
相关产品推荐

