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

如何将syminfo.ticker字符串转换为变量以实现ADR的CEDEAR比率计算

解决Pine Script中字符串转对应变量值的问题

我明白你的痛点——你想用syminfo.ticker拿到的股票代码字符串(比如"MELI"),去匹配你预先定义好的对应比率变量,但Pine Script不支持直接通过字符串动态引用变量名,这就得换个更靠谱的方式来处理。

问题根源

你之前把每个股票的比率做成了独立变量(比如GOOGL = 58、MELI = 60),但syminfo.ticker返回的是字符串类型的代码,Pine Script没有办法把字符串直接转换成变量名来读取对应的值,所以才会出现无法计算的问题。

解决方案:用字典(映射对象)替代独立变量

我们可以把所有股票代码和对应的比率整理成一个字典(键值对对象),用股票代码字符串作为"键",对应的比率作为"值",这样就能通过字符串直接取出对应的值了。

修改后的完整代码

// 第一步:创建股票代码到比率的映射字典
cedearRatios = {
    "GOOGL": 58,
    "MELI": 60,
    "GGAL": 10, // 示例:可以继续添加其他股票的比率
    // 这里补充你所有需要的股票比率
}

// 获取当前标的的代码字符串(比如查看MELI时,这里就是"MELI")
stockTicker = syminfo.ticker

// 从字典中取出对应比率,没找到的话设默认值(这里用1,你可以根据需求调整)
currentRatio = na(cedearRatios[stockTicker]) ? 1 : cedearRatios[stockTicker]

// 你的原有计算逻辑
ggalc = request.security('BCBA:GGAL', '1D', close)
ggals = request.security('NASDAQ:GGAL', '1D', close)
ccl = ggalc * 10 / ggals
stockPrice = request.security(syminfo.tickerid, timeframe.period, close)

// 现在用字典取出的比率计算CEDEAR
CEDEAR = ccl * stockPrice / currentRatio

plot(CEDEAR)

关键细节说明

  • 字典键的一致性:确保字典里的键和syminfo.ticker返回的字符串完全匹配(Pine Script中syminfo.ticker返回的是大写字符串,所以字典里的键也要用大写,比如"MELI"而不是"meli")
  • 异常处理:用na(cedearRatios[stockTicker]) ? 1 : ...的判断,防止遇到没有定义的股票代码时脚本报错,你也可以把默认值改成你需要的数值,或者添加alert()来提示未定义的代码
  • 可维护性:把所有比率集中放在字典里,后续新增或修改比率都会非常方便,不用到处找独立变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 12:47:44