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

求助:基于EMA云颜色变化添加警报的PineScript代码修正

基于趋势云颜色变化的警报修正方案

原代码的问题在于警报逻辑和云颜色变化的核心条件无关,云颜色由rsi1与smma的相对位置决定,所以需要基于两者的交叉信号来触发警报,具体修改如下:

核心逻辑说明

云颜色切换的本质是:

  • 当rsi1上穿smma时,云从红色变为绿色,触发多头警报
  • 当rsi1下穿smma时,云从绿色变为红色,触发空头警报

修改后的完整代码片段

///////////////plot MAs
plot_ma1 = plot(MA1, color= dynamic ?  dynColor: color.green , linewidth=1, title = "MA1")
plot_ma2 = plot(MA2, color= dynamic ?  dynColor: color.red , linewidth=1, title = "MA2")
plot_ma3 = plot(MA3, color= dynamic ?  dynColor: color.yellow, linewidth=1, title = "MA3")
plot_ma4 = plot(MA4, color= dynamic ?  dynColor: color.white, linewidth=1, title = "MA4")
// Trend Fill
rsi1 = ta.rsi(close,14)
smmaLen = 50
//input(50, minval=1, title="SMMA Length", group = "Smoothed MA")
smmaSrc = rsi1
smma = 0.0
smma := na(smma[1]) ? ta.sma(smmaSrc, smmaLen) : (smma[1] * (smmaLen - 1) + smmaSrc) / smmaLen


trendFill = input(title="Show Trend Fill",  defval=true, group = "Smoothed MA Inputs") 
transparencyValue= trendFill ? math.abs(rsi1-smma): na

bColor = if rsi1  > smma 
    color.from_gradient(transparencyValue,0, 50, color.new(color.lime, 80), color.lime)
else 
    color.from_gradient(transparencyValue,0, 50, color.new(color.red, 80),color.red)
fill(plot_ma1,plot_ma2,bColor,title="RSI Fill")

// ### 修正后的云颜色变化警报逻辑
longS = input.bool(title="Show Long Cloud Signal",  defval=true, group = "Plot Mas")
shortS = input.bool(title="Show Short Cloud Signal",  defval=true, group = "Plot Mas")

// 捕捉rsi1上穿smma的信号(云变绿)
longSig = ta.crossover(rsi1, smma)
// 捕捉rsi1下穿smma的信号(云变红)
shortSig = ta.crossunder(rsi1, smma)

// 绘制多头信号标记
plotshape(longS ? longSig : na, style=shape.triangleup, color=color.green, 
location=location.belowbar, size = size.small,  title="Cloud Color Change Up")
// 绘制空头信号标记
plotshape(shortS ? shortSig : na, style=shape.triangledown, color=color.red, 
location=location.abovebar, size = size.small,   title="Cloud Color Change Down")

// 设置警报条件
alertcondition(longSig, title="Cloud Long", message="[CurrencyPair] [TimeFrame], Cloud turned green (Long Signal)")
alertcondition(shortSig, title="Cloud Short", message="[CurrencyPair] [TimeFrame], Cloud turned red (Short Signal)")

// End ###

关键修改点

  • 替换了原错误的longSig和shortSig逻辑:用ta.crossover()和ta.crossunder()精准捕捉rsi1与smma的交叉点,这正是云颜色切换的触发点
  • 修正了plotshape中未定义的变量(原代码的bullS、bullSig等拼写错误,替换为正确的longS、longSig)
  • 更新了警报消息,使其更清晰反映云颜色变化的状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 03:15:56