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

如何在Pine Script中仅为SPY标的绘制LONG/SHORT信号图形

解决仅在SPY标的显示多空信号的问题

核心问题出在:你只获取了SPY的数据,但没有限制信号的绘制范围——即使其他标的图表中,信号变量依然存在,所以会被默认绘制。只需添加当前标的判断逻辑,就能实现仅SPY显示信号。

具体实现步骤

  1. 判断当前图表标的是否为SPY
    使用Pine Script内置的syminfo.ticker获取当前图表的标的代码,直接与"SPY"对比:

    isSPY = syminfo.ticker == "SPY"
    

    若需兼容带交易所后缀的SPY(如部分市场的SPY.NYSE),可改用模糊匹配:

    isSPY = str.contains(syminfo.ticker, "SPY")
    
  2. 限制信号绘制的可见性
    在绘制信号的函数(如plotshape、plotarrow)中,添加visible=isSPY参数,仅当当前是SPY图表时才显示信号。

完整示例代码

//@version=5
indicator("仅SPY显示多空信号", overlay=true)

// 获取SPY的行情数据(以收盘价为例)
spyClose = request.security("SPY", timeframe.period, close)

// 判断当前是否为SPY图表
isSPY = syminfo.ticker == "SPY"

// 示例:基于SPY数据生成多空信号(这里用5/20均线金叉死叉演示)
spySMA5 = ta.sma(spyClose, 5)
spySMA20 = ta.sma(spyClose, 20)
longSignal = ta.crossover(spySMA5, spySMA20)
shortSignal = ta.crossunder(spySMA5, spySMA20)

// 仅在SPY图表绘制信号
plotshape(longSignal, title="LONG", location=location.belowbar, 
          color=color.green, style=shape.labelup, text="LONG", visible=isSPY)
plotshape(shortSignal, title="SHORT", location=location.abovebar, 
          color=color.red, style=shape.labeldown, text="SHORT", visible=isSPY)

关键说明

  • 信号计算依然基于request.security拉取的SPY数据,确保信号逻辑统一;
  • visible=isSPY是核心控制项,直接关闭非SPY图表的信号显示;
  • 也可以用if isSPY:语句包裹所有绘制代码,效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:16:00