Pine Script调用security函数报错:参数类型不匹配问题咨询
Pine Script中security函数调用错误的原因与解决方法
这个问题我碰到过不少次,咱们一步步拆解原因和解决办法:
错误原因
你触发这个错误的核心问题是参数类型不匹配:
- 旧版
security()函数的第一个ticker参数要求是常量字符串(const string),也就是不会随K线(bar)变化的固定字符串。 - 但你的代码里,
yr = tostring(year,"NSE:X####")中的year是一个序列(series)变量,随每个K线的年份变化,所以yr和最终的vol3_ticker都是series[string]类型(随K线变化的字符串序列),完全不符合security()的参数要求,因此触发了重载匹配失败的错误。
你的问题代码:
yr = tostring(year,"NSE:X####") vol3_ticker = ticker+yr vol3 = security(vol3_ticker, timeframe.period, volume, lookahead=barmerge.lookahead_on)
解决方法
要实现动态切换ticker的需求,你需要用Pine Script v5引入的request.security()函数——它专门支持series[string]类型的动态ticker参数,完美适配你的场景。
修改后的代码如下:
//@version=5 indicator("Dynamic Ticker Volume") yr = tostring(year, "NSE:X####") vol3_ticker = ticker + yr // 用request.security替代旧版security,支持动态ticker vol3 = request.security(vol3_ticker, timeframe.period, volume, lookahead=barmerge.lookahead_on) plot(vol3, title="Dynamic Volume")
额外说明
如果你还在使用Pine Script v4,很遗憾v4没有原生支持动态ticker的security替代函数,你只能通过提前枚举所有可能的ticker,再用条件判断来切换(比如if year == 2023 then security("NSE:X2023", ...)),但这种方法扩展性很差,建议升级到v5来使用request.security。
内容的提问来源于stack exchange,提问作者Aman
相关产品推荐
相关产品推荐

