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

如何在多个study(指标)与strategy之间传递共享全局变量

需求可行性说明

该需求可通过以下两种成熟方案实现,适配Pine Script的官方规则限制:

方案1:整合多指标逻辑到单个study对外输出

利用strategy最多可引用1个study的规则,把所有需要用到的跨study全局变量的计算逻辑,全部整合到同一个自定义study中,所有需要传递给strategy的变量都通过plot()函数输出,不需要可视化的变量可设置为隐藏状态。

  • 整合study示例代码:
//@version=5
indicator("多指标变量整合容器", overlay=false)
// 原第一个study的计算逻辑,输出全局变量ma5
ma5 = ta.sma(close, 5)
// 原第二个study的计算逻辑,输出全局变量rsi14
rsi14 = ta.rsi(close, 14)
// 原第三个study的计算逻辑,输出全局变量atr14
atr14 = ta.atr(14)

// 对外输出所有全局变量,display.none表示不在K线图上显示
plot(ma5, title="ma5", display=display.none)
plot(rsi14, title="rsi14", display=display.none)
plot(atr14, title="atr14", display=display.none)
  • strategy调用变量示例代码:
//@version=5
strategy("跨指标变量调用策略", overlay=true)
// 分别定义输入源关联整合study的三个输出变量
input_ma5 = input.source(close, title="关联ma5变量")
input_rsi14 = input.source(close, title="关联rsi14变量")
input_atr14 = input.source(close, title="关联atr14变量")

// 策略内直接调用变量即可
if ta.crossover(close, input_ma5) and input_rsi14 < 30
    strategy.entry("多单", strategy.long)

操作提示:将整合study添加到K线图表后,打开strategy的参数设置面板,把三个input.source的取值分别选为整合study对应的三个plot输出项即可完成变量传递。

方案2:全逻辑合并到strategy脚本内

如果不需要单独维护多个独立study的可视化效果,直接把所有study的计算逻辑迁移到strategy脚本内部,用var关键字声明的变量就是全局持久化变量,可在整个策略脚本的任意位置调用,性能比跨脚本引用更高,不会出现周期匹配偏差问题。

  • 示例代码:
//@version=5
strategy("单脚本整合逻辑策略", overlay=true)
// 全局变量声明
var float ma5 = na
var float rsi14 = na
var float atr14 = na

// 原多study的计算逻辑直接在策略内实现
ma5 := ta.sma(close,5)
rsi14 := ta.rsi(close,14)
atr14 := ta.atr(14)

// 策略逻辑直接调用变量
if ta.crossunder(close, ma5) and rsi14 > 70
    strategy.entry("空单", strategy.short)
注意事项
  • 官方暂不支持strategy同时引用多个独立study,所以无法直接在不整合逻辑的前提下跨多个独立study传递变量
  • 跨脚本引用时要保证study和strategy的运行时间周期完全一致,避免取值错误
  • 不要在整合study中输出冗余变量,避免增加不必要的计算开销

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:57:03