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

PineScript中能否实现单个输入控制多个输入的状态?

单个开关控制多时段指标显示的实现方案(Pine Script)

这个需求完全可以实现,你之前的代码失效是因为Pine Script不支持多变量一次性赋值的语法,不能用LO, NYO, LC, AO, NYC := false这种写法。下面是正确的实现思路和代码示例:

1. 修正赋值逻辑

把多变量赋值拆分为逐个赋值,Pine Script要求每个变量的赋值语句单独成行:

if not killzone_killswitch
    LO := false
    NYO := false
    LC := false
    AO := false
    NYC := false

2. 完整实现示例

结合开关定义和显示逻辑,完整代码如下:

//@version=5
indicator("多时段指标控制", overlay=true)

// 全局总开关:控制所有时段的显示/隐藏
killzone_killswitch = input.bool(title="全局时段开关", defval=true, tooltip="开启/关闭所有时段指标显示")

// 各个时段的独立开关(可单独控制)
LO = input.bool(title="伦敦开盘时段", defval=true)
NYO = input.bool(title="纽约开盘时段", defval=true)
LC = input.bool(title="伦敦收盘时段", defval=true)
AO = input.bool(title="亚洲开盘时段", defval=true)
NYC = input.bool(title="纽约收盘时段", defval=true)

// 总开关控制逻辑:关闭总开关时,强制所有时段开关为false
if not killzone_killswitch
    LO := false
    NYO := false
    LC := false
    AO := false
    NYC := false

// 示例:时段指标显示逻辑(替换成你实际的指标绘制代码)
// 伦敦开盘时段显示
if killzone_killswitch and LO
    bgcolor(color.new(color.blue, 90), title="伦敦开盘时段")

// 纽约开盘时段显示
if killzone_killswitch and NYO
    bgcolor(color.new(color.red, 90), title="纽约开盘时段")

// 其他时段依此类推...
if killzone_killswitch and LC
    bgcolor(color.new(color.green, 90), title="伦敦收盘时段")
if killzone_killswitch and AO
    bgcolor(color.new(color.yellow, 90), title="亚洲开盘时段")
if killzone_killswitch and NYC
    bgcolor(color.new(color.purple, 90), title="纽约收盘时段")

关键说明

  • 总开关关闭时,通过:=强制覆盖各时段的独立开关值,确保所有时段都隐藏;
  • 显示指标时,同时判断总开关和对应时段的开关,避免总开关关闭时仍有内容显示;
  • 如果你的时段变量不是通过input定义的,只需确保它们是可重新赋值的变量(避免用const声明)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:33:18