当布尔值变化时持续切换背景色的Pine Script技术求助
解决K线背景色持续切换的问题
核心问题是你当前的代码只在highBroken或lowBroken为true的单根K线触发变色,没有保留状态。要实现"触发后保持颜色直到另一个条件触发",需要用状态变量来跟踪当前应该显示的颜色。
解决方案代码
// 初始化状态变量,var关键字确保只在脚本启动时赋值一次 var color currentBgColor = na // 更新状态:当highBroken触发时切换为绿色,lowBroken触发时切换为红色 currentBgColor := highBroken ? color.green : lowBroken ? color.red : currentBgColor // 应用背景色 bgcolor(currentBgColor, editable = true, transp=80)
代码解释
var color currentBgColor = na:用var声明的变量会在整个脚本运行期间保留值,不会每根K线都重置。初始设为na表示默认无背景色。currentBgColor := ...:三元运算符逻辑:- 如果
highBroken为true,把颜色设为绿色; - 否则如果
lowBroken为true,设为红色; - 都不满足的话,保持当前的颜色不变。
- 如果
- 最后只用一次
bgcolor调用,避免两个bgcolor同时生效导致颜色重叠。
为什么原来的代码不行?
- 你之前的两段
bgcolor代码,每段只在对应布尔值为true的K线生效,其他K线用na跳过,所以只有触发的那根变色。 - 去掉
na的话,两段bgcolor会同时对所有K线生效,绿色和红色重叠显示,导致颜色混乱。
内容的提问来源于stack exchange,提问作者Joe Pieczynski
相关产品推荐
相关产品推荐

