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
相关产品推荐
相关产品推荐

