Webull平台Pine Script代码报错求助:变量与函数参数问题
Pine Script 指标报错修复(成交量信号+EMA云图)
错误原因解析
- 第11行错误:变量名笔误,声明了
signalbuySignal但后续调用的是未定义的buySignal,同时误将变量当作函数调用 - 第12行错误:因
buySignal未声明,导致plot函数接收无效参数,触发参数不匹配报错 - 隐藏语法错误:
ema (close, 34)中函数名与括号之间存在空格,违反Pine Script语法规范
修正后的完整代码
// Define the number of bars to calculate volume increase/decrease numOfBars = input(14, "Number of bars", minval=1) // Calculate the volume increase/decrease volIncrease = volume - nz(volume[numOfBars]) // Define the threshold for a volume increase to trigger a buy signal buyThreshold = input(200, "Buy threshold", minval=1) // Define the threshold for a volume decrease to trigger a sell signal sellThreshold = input(-200, "Sell threshold", minval=-1) // Plot the buy signal buySignal = crossover(volIncrease, buyThreshold) // 用crossover更明确表示上穿逻辑 plot(buySignal, style=plot.style_cross, color=color.green, title="Buy") sellSignal = crossunder(volIncrease, sellThreshold) plot(sellSignal, style=plot.style_cross, color=color.red, title="Sell") // EMA Calculations EMA8 = ema(close, 9) EMA21 = ema(close, 20) EMA34 = ema(close, 34) // 修复函数调用的空格问题 EMA50 = ema(close, 50) // Top Charts topcloud1 = plot(series = EMA8, title = "EMA8", color = color.yellow) topcloud2 = plot(series = EMA21, title = "EMA21", color = color.yellow) fill(topcloud1, topcloud2, color=iff(EMA8>EMA21, color.green, color.red), opacity = 40) // Bottom Charts bottomcloud1 = plot(series = EMA34, title = "EMA34", color = color.blue) bottomcloud2 = plot(series = EMA50, title = "EMA50", color = color.blue) fill(bottomcloud1, bottomcloud2, color =iff(EMA34>EMA50, color.green, color.red), opacity = 40)
关键修改说明
- 修正变量名笔误:将
signalbuySignal改为buySignal,确保变量声明与调用一致 - 修复
ema函数语法:删除函数名与括号之间的空格,符合Pine Script函数调用规范 - 优化信号逻辑:使用
crossover(volIncrease, buyThreshold)替代cross,更直观表达「成交量增量上穿买入阈值」的买入信号逻辑,与crossunder的卖出信号逻辑形成统一
内容的提问来源于stack exchange,提问作者raj s
相关产品推荐
相关产品推荐

