切换交易币种时能否让指标自动修改输入选项?
错误原因
你的代码有两处核心问题:
syminfo.tickerid是Pine Script内置只读变量,不是支持传参的自定义/内置函数,它本身的作用是返回当前图表加载品种的完整标识字符串,直接加括号传参的写法不符合语法规则。- Pine Script对变量作用域有严格要求,在if/else分支内赋值的变量如果需要在分支外使用,必须提前在全局作用域声明,且分支内赋值要使用
:=运算符。
可直接运行的正确代码
//@version=5 indicator("品种匹配赋值Demo", overlay = true) // 提前声明全局变量 var string Inst = na // 直接将当前品种的tickerid和目标值做等值判断 if syminfo.tickerid == "BINANCE:ATOMUSDT" Inst := "BTCUSDTPERP_OI" else if syminfo.tickerid == "BINANCE:AVAXUSDT" Inst := "AVAXUSDTPERP_OI" // 以下为调试用输出,可根据实际业务逻辑替换 if barstate.islast label.new(bar_index, high, str.format("当前匹配Inst值:{0}", Inst), color=color.yellow)
扩展说明
- 若不需要严格匹配交易所,仅判断交易对名称,可将判断条件替换为
syminfo.ticker == "ATOMUSDT",兼容不同交易所加载的同名交易对。 - 新增更多品种匹配规则时,直接在现有逻辑后追加
else if判断分支即可。 - 若需要匹配所有未在分支内列明的品种,可在最后加
else分支给Inst设置默认值,避免出现空值。
内容的提问来源于stack exchange,提问作者Mikhail Marka
相关产品推荐
相关产品推荐

