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

Pine Script实现货币强度指标仅绘制当前品种对应两条强度线

Pine Script货币强度脚本问题修复方案

问题根因

  1. 赋值运算符使用错误:Pine Script语法规定,给已经声明过的全局变量重新赋值时,必须使用:=运算符,不能使用=。你在if代码块内使用=赋值,相当于在if的局部作用域中声明了新的同名局部变量,全局的avgLeft、avgRight并未被修改,始终保留初始化的0.0值,因此绘制出的是水平线。
  2. 额外说明:提前初始化变量的操作是正确的,Pine Script要求所有变量必须先声明才能使用,若仅在if块内声明变量,出了局部作用域后变量会失效,就会触发undeclared identifier报错。

基础修复代码(适配你现有写法)

// 原有货币强度平均值计算逻辑保留
avgUSD = (USDEUR + USDGBP + USDJPY + USDNZD + USDCAD + USDCHF + USDAUD) / 7
avgEUR = (EURNZD + EURGBP + EURJPY + EURUSD + EURCAD + EURCHF + EURAUD) / 7
avgJPY = (JPYEUR + JPYGBP + JPYNZD + JPYUSD + JPYCAD + JPYCHF + JPYAUD) / 7
avgCAD = (CADEUR + CADGBP + CADJPY + CADUSD + CADNZD + CADCHF + CADAUD) / 7
avgCHF = (CHFEUR + CHFGBP + CHFJPY + CHFUSD + CHFCAD + CHFNZD + CHFAUD) / 7
avgAUD = (AUDEUR + AUDGBP + AUDJPY + AUDUSD + AUDCAD + AUDCHF + AUDNZD) / 7
avgNZD = (NZDEUR + NZDGBP + NZDJPY + NZDUSD + NZDCAD + NZDCHF + NZDAUD) / 7
avgGBP = (GBPEUR + GBPJPY + GBPUSD + GBPCAD + GBPCHF + GBPAUD + GBPNZD) / 7

// 提前声明全局变量
avgLeft = 0.0
avgRight = 0.0
colLeft = color.blue
colRight = color.red

// 使用:=运算符修改全局变量值
if syminfo.root == "CADCHF"
    avgLeft := avgCAD
    colLeft := colCAD
    avgRight := avgCHF
    colRight := colCHF
else
    avgLeft := avgAUD
    colLeft := colAUD
    avgRight := avgJPY
    colRight := colJPY

// 绘图
plot(avgLeft, title=str.tostring(syminfo.basecurrency) + " 强度", color=colLeft)
plot(avgRight, title=str.tostring(syminfo.countercurrency) + " 强度", color=colRight)

优化方案(无需手写全量货币对if判断)

可直接用Pine Script内置的syminfo.basecurrency、syminfo.countercurrency获取当前交易对的基准货币和计价货币,配合switch语句直接映射对应的强度值,不需要为每个货币对单独写判断分支:

// 原有avg系列计算逻辑保留
base = syminfo.basecurrency
quote = syminfo.countercurrency

// 映射基准货币强度
avgLeft := switch base
    "USD" => avgUSD
    "EUR" => avgEUR
    "JPY" => avgJPY
    "CAD" => avgCAD
    "CHF" => avgCHF
    "AUD" => avgAUD
    "NZD" => avgNZD
    "GBP" => avgGBP

// 映射计价货币强度
avgRight := switch quote
    "USD" => avgUSD
    "EUR" => avgEUR
    "JPY" => avgJPY
    "CAD" => avgCAD
    "CHF" => avgCHF
    "AUD" => avgAUD
    "NZD" => avgNZD
    "GBP" => avgGBP

颜色映射可以套用完全相同的switch逻辑实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:51:03