TradingView Pine Script自定义指数security函数报错问题
错误原因
报错由字符串引号格式错误导致:你的代码中使用了中文全角双引号作为字符串闭合符,Pine Script 仅支持英文半角双引号识别字符串边界。
定位到你代码第6行:BP_close=security(symbol="NYSE:BP”, resolution=timeframe.period, expression=close) 中NYSE:BP后的闭合引号是中文全角的”,解析器匹配不到对应的英文半角闭合引号,读取到换行符时就抛出了mismatched character '\n' expecting '"'的错误。
你注释掉的其余3行security调用也存在同样的全角引号问题,取消注释后会触发同类报错。
另外补充:Pine Script v5版本中,跨周期/跨品种调用函数已更新为request.security(),旧的security()写法存在兼容风险,建议替换为标准写法。
修正后完整可运行代码
//@version=5 indicator("Oil_Majors_Index", overlay=false) // 调用各成分股收盘价 BP_close = request.security(symbol="NYSE:BP", timeframe=timeframe.period, expression=close, gaps=gaps.fill) COP_close = request.security(symbol="NYSE:COP", timeframe=timeframe.period, expression=close, gaps=gaps.fill) CVX_close = request.security(symbol="NYSE:CVX", timeframe=timeframe.period, expression=close, gaps=gaps.fill) XOM_close = request.security(symbol="NYSE:XOM", timeframe=timeframe.period, expression=close, gaps=gaps.fill) // 计算等权重石油巨头指数 OIL_Majors_Close = (BP_close + COP_close + CVX_close + XOM_close) / 4 // 绘图,可按需注释/取消注释切换展示内容 plot(BP_close, color=color.new(color.blue, 0), title="BP收盘价") plot(OIL_Majors_Close, color=color.new(color.red, 0), title="石油巨头等权指数", linewidth=2)
代码中额外添加的gaps=gaps.fill参数用于自动填充不同品种交易时间差异导致的数据缺口,避免指数线出现断档。
避坑提示
- 编写Pine Script代码时,所有语法符号(引号、括号、逗号、等号)都需要切换到英文半角输入法输入,中文全角符号会直接触发语法错误
- 你当前使用的等权平均计算逻辑是成立的,如果要做更贴近实际指数的计算,后续可以加入价格复权、权重动态调整、成分股调整等逻辑
内容的提问来源于stack exchange,提问作者Purpletiger
相关产品推荐
相关产品推荐

