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

Tradingview Pine Script第15行')'语法错误排查求助

问题说明

在TradingView平台运行Pine Script v5编写的多时间框架赫尔移动平均线(HMA MTF)指标时,平台提示第15行存在语法错误:Line 15: Syntax error at input ')',已尝试所有已知代码排查方法仍未定位问题。

注:原发帖时因Stack Overflow提示「你的发帖内容大部分为代码,请补充更多细节」无法提交,重复添加的多段提示文字可直接忽略。

错误原因定位

代码共存在4处问题,其中第一处直接触发第15行语法报错:

  • 第15行HMA计算公式末尾多写1个右括号,括号数量不匹配,直接触发语法错误
  • HMA计算函数内判断涨跌方向时,引用了不存在的变量_HMA,会触发运行时错误
  • request.security函数返回值解构时,涨跌状态变量名前多加了下划线,和后续颜色赋值逻辑中调用的变量名不匹配,会触发未定义变量错误
  • 代码中调用了f_res_to_string()函数实现时间框架文本转换,但全篇未定义该函数,会触发函数不存在的运行时错误
修复方案

针对上述问题逐一修正即可:

  1. 删除第15行公式末尾多余的右括号,保证括号匹配
  2. 将涨跌判断语句中不存在的_HMA替换为实际计算得到的_xHMA变量
  3. 去掉request.security返回值中涨跌状态变量名前多余的下划线,和后续调用的变量名保持一致
  4. 补充缺失的f_res_to_string()时间框架文本转换函数定义

修复后的完整可运行代码如下:

//@version=5
indicator(title='Hull MA Multi-Time Frame', shorttitle='HMA MTF', overlay=false)

PDS = input.int(7, title = "Periods (PDS)", minval=2)
SRC = input(close, title='Source')

HMA1_res = input.timeframe('15', title = "HMA1")
HMA2_res = input.timeframe('30', title = "HMA2")
HMA3_res = input.timeframe('60', title = "HMA3")
HMA4_res = input.timeframe('240', title = "HMA4")

// 补充缺失的时间框架转字符串函数
f_res_to_string(_res) =>
    _res == "" ? "当前周期" : _res

f_HMA(_PDS, _SRC) =>
    // 删除多余的右括号
    _xHMA = ta.wma(2 * ta.wma(_SRC, _PDS / 2) - ta.wma(_SRC, _PDS), math.round(math.sqrt(_PDS)))
    // 修正错误的变量名引用
    _xHMA_is_up = _xHMA >= _xHMA[1]
    [_xHMA, _xHMA_is_up]

// 去掉解构变量名前多余的下划线
[xHMA1, xHMA1_is_up] = request.security(syminfo.tickerid, HMA1_res, f_HMA(PDS, SRC))
HMA1_color = xHMA1_is_up ? color.green : color.red
HMA1_text = f_res_to_string(HMA1_res) + "=" + str.tostring(xHMA1, "#.00")
plot(xHMA1, color = HMA1_color, linewidth=1)
var label HMA1_label = label.new(x = na, y = na, color = #00000000, size = size.normal, style = label.style_label_left)
label.set_xy(HMA1_label, x = bar_index, y = xHMA1)
label.set_textcolor(HMA1_label, HMA1_color)
label.set_text(HMA1_label, HMA1_text)


[xHMA2, xHMA2_is_up] = request.security(syminfo.tickerid, HMA2_res, f_HMA(PDS, SRC))
HMA2_color = xHMA2_is_up ? color.green : color.red
HMA2_text = f_res_to_string(HMA2_res) + "=" + str.tostring(xHMA2, "#.00")
plot(xHMA2, color = HMA2_color, linewidth=1)
var label HMA2_label = label.new(x = na, y = na, color = #00000000, size = size.normal, style = label.style_label_left)
label.set_xy(HMA2_label, x = bar_index, y = xHMA2)
label.set_textcolor(HMA2_label, HMA2_color)
label.set_text(HMA2_label, HMA2_text)

[xHMA3, xHMA3_is_up] = request.security(syminfo.tickerid, HMA3_res, f_HMA(PDS, SRC))
HMA3_color = xHMA3_is_up ? color.green : color.red
HMA3_text = f_res_to_string(HMA3_res) + "=" + str.tostring(xHMA3, "#.00")
plot(xHMA3, color = HMA3_color, linewidth=1)
var label HMA3_label = label.new(x = na, y = na, color = #00000000, size = size.normal, style = label.style_label_left)
label.set_xy(HMA3_label, x = bar_index, y = xHMA3)
label.set_textcolor(HMA3_label, HMA3_color)
label.set_text(HMA3_label, HMA3_text)

[xHMA4, xHMA4_is_up] = request.security(syminfo.tickerid, HMA4_res, f_HMA(PDS, SRC))
HMA4_color = xHMA4_is_up ? color.green : color.red
HMA4_text = f_res_to_string(HMA4_res) + "=" + str.tostring(xHMA4, "#.00")
plot(xHMA4, color = HMA4_color, linewidth=1)
var label HMA4_label = label.new(x = na, y = na, color = #00000000, size = size.normal, style = label.style_label_left)
label.set_xy(HMA4_label, x = bar_index, y = xHMA4)
label.set_textcolor(HMA4_label, HMA4_color)
label.set_text(HMA4_label, HMA4_text)
验证说明
  • 修正后第15行的语法报错会直接消除,代码可正常编译运行
  • 原有多周期HMA计算、涨跌颜色区分、线端数值标签展示的逻辑完全保留,未做功能改动
  • 补充的时间框架转换函数兼容默认周期选择,选择当前图表周期时标签会显示「当前周期」,可读性更好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:06:26