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

Pine Script 5中switch语句语法错误求助

问题描述

编程经验不足,首次尝试使用Pine Script的switch函数,无法排查代码问题。报错信息为“Syntax error at input 'US02Y'”,switch语句中首个“US02Y”条件前的括号被红色下划线标记为错误位置。相关代码如下:

// Get the current ticker
currentTicker = syminfo.ticker

// Get the related ivol ticker
string ivolString = switch ticker.standard(currentTicker)
 "US02Y" => "CBOE:VXTLT"
 "US10Y" => "CBOE:VXTLT"
 "US30Y" => "CBOE:VXTLT"
 "TLT" => "CBOE:VXTLT"
 "SPX500USD" => "TVC:VIX"
 "SPX" => "TVC:VIX"
 "SPY" => "TVC:VIX"
 "QQQ" => "NASDAQ:VOLQ"
 "NDQ" => "NASDAQ:VOLQ"
 "US100" => "NASDAQ:VOLQ"
 "DJI" => "CBOE:VXD"
 "DIA" => "CBOE:VXD"
 "IWM" => "CBOE:RVX"
 "RUT" => "CBOE:RVX"
 "US2000" => "CBOE:RVX"
 "EEM" => "CBOE:VXEEM"
 "EFA" => "CBOE:VXEFA"
 "EWZ" => "CBOE:VXEWZ"
 "GOLD" => "CBOE:GVZ"
 "GLD" => "CBOE:GVZ"
 "FXI" => "CBOE:VXFXI"
 "USOIL" => "CBOE:OVX"
 "WTI" => "CBOE:OVX"
 "FXE" => "CBOE:EVZ"
 "EURUSD" => "CBOE:EVZ"
 "IBM" => "CBOE:VXIBM"
 "GOOGL" => "CBOE:VXGOG"
 "AMZN" => "CBOE:VXAZN"
 "AAPL" => "CBOE:VXAPL"
 => na

ivolSymbol = request.security(ivolString, "", close)
ivolSymbol_availabilityCheck = str.contains(ivolString, "V") ? true : false
问题排查与解决

报错核心原因是Pine Script对switch语句的缩进有严格要求:switch表达式的下一行开始,每个case必须使用至少4个空格(或1个制表符)缩进,你当前仅用1个空格,编译器无法识别case结构,因此抛出语法错误。

修正后的代码(注意每个case前的4个空格缩进):

// Get the current ticker
currentTicker = syminfo.ticker

// Get the related ivol ticker
string ivolString = switch ticker.standard(currentTicker)
    "US02Y" => "CBOE:VXTLT"
    "US10Y" => "CBOE:VXTLT"
    "US30Y" => "CBOE:VXTLT"
    "TLT" => "CBOE:VXTLT"
    "SPX500USD" => "TVC:VIX"
    "SPX" => "TVC:VIX"
    "SPY" => "TVC:VIX"
    "QQQ" => "NASDAQ:VOLQ"
    "NDQ" => "NASDAQ:VOLQ"
    "US100" => "NASDAQ:VOLQ"
    "DJI" => "CBOE:VXD"
    "DIA" => "CBOE:VXD"
    "IWM" => "CBOE:RVX"
    "RUT" => "CBOE:RVX"
    "US2000" => "CBOE:RVX"
    "EEM" => "CBOE:VXEEM"
    "EFA" => "CBOE:VXEFA"
    "EWZ" => "CBOE:VXEWZ"
    "GOLD" => "CBOE:GVZ"
    "GLD" => "CBOE:GVZ"
    "FXI" => "CBOE:VXFXI"
    "USOIL" => "CBOE:OVX"
    "WTI" => "CBOE:OVX"
    "FXE" => "CBOE:EVZ"
    "EURUSD" => "CBOE:EVZ"
    "IBM" => "CBOE:VXIBM"
    "GOOGL" => "CBOE:VXGOG"
    "AMZN" => "CBOE:VXAZN"
    "AAPL" => "CBOE:VXAPL"
    => na

ivolSymbol = request.security(ivolString, "", close)
ivolSymbol_availabilityCheck = str.contains(ivolString, "V") ? true : false

补充说明:Pine Script的switch语法中,缩进是区分代码块的关键,所有case分支必须与switch表达式保持正确的缩进层级,否则会被编译器判定为语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:22:37