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

如何编写脚本实现SMA50高于SMA200时仅绘制MACD买入信号及报错修复

Pine Script错误排查与修复方案

错误原因

Pine Script v4对代码缩进有严格要求:if 条件对应的代码块必须缩进4个空格或1个制表符,你当前代码中两个if判断后的所有代码行都没有做缩进处理,不符合语法规范,因此触发了输入不匹配的报错。

另外还有更符合Pine Script开发习惯的优化方案:不需要将变量定义和绘图函数放在if块中,直接在信号判断条件里叠加SMA50和SMA200的大小限制即可,逻辑更简洁,也能从根源上避免缩进错误。

修复后的完整代码

//@version=4
study("Testing MACD Strategy", overlay=true)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD

// SMA参数设置
len50 = input(50, minval=1, title="SMA 50")
len200 = input(200, minval=1, title="SMA 200")

src50 = input(close, title="SMA 50 Source")
src200 = input(close, title="SMA 200 Source")

sma50 = sma(src50, len50)
sma200 = sma(src200, len200)

plot(sma50, color=color.blue, linewidth=3, title="SMA 50")
plot(sma200, color=color.red, linewidth=4, title="SMA 200")

// 合并条件判断信号,无需嵌套if
MACD_buy = crossover(delta, 0) and sma50 > sma200
plotshape(MACD_buy, title='MACD BUY', style=shape.triangleup, 
text='B', location=location.belowbar, color=#00BCD4, 
textcolor=color.gray, size=size.tiny)

MACD_sell = crossunder(delta, 0) and sma50 < sma200
plotshape(MACD_sell, title='MACD SELL', style=shape.triangledown, 
text='S', location=location.abovebar, color=#E040FB, 
textcolor=color.gray, size=size.tiny)

如果你要保留原有if块的写法,只需要给if后的代码统一加缩进即可,示例如下:

if sma50 > sma200
    MACD_buy = crossover(delta, 0)
    plotshape(MACD_buy, title='MACD BUY', style=shape.triangleup, 
     text='B', location=location.belowbar, color=#00BCD4, 
     textcolor=color.gray, size=size.tiny)

if sma50 < sma200
    MACD_sell = crossunder(delta, 0)
    plotshape(MACD_sell, title='MACD SELL', style=shape.triangledown, 
     text='S', location=location.abovebar, color=#E040FB, 
     textcolor=color.gray, size=size.tiny)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:45:02