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

当支撑位或阻力位被突破时,如何将其值设为NaN?

Pine Script 突破后隐藏支撑/阻力位的实现方案

核心问题分析

原代码里的fixnan会把所有NaN的 pivot 值替换为前一个有效值,导致突破后旧的支撑阻力位仍持续显示。直接移除fixnan只是保留了初始NaN,但没实现突破后将旧值设为NaN的关键逻辑,所以达不到预期效果。

修改后的完整代码

toggleBreaks = input(true, title='显示突破后隐藏')
leftBars = input(15, title='左侧K线数')
rightBars = input(15, title='右侧K线数')
volumeThresh = input(20, title='成交量阈值')

// 获取原始pivot值(保留NaN,不使用fixnan)
highPivot = ta.pivothigh(leftBars, rightBars)[1]
lowPivot = ta.pivotlow(leftBars, rightBars)[1]

// 用变量跟踪当前有效的支撑/阻力位值
var float r1Value = na
var float s1Value = na

// 更新阻力位并判断向上突破
if not na(highPivot)
    r1Value := highPivot
if toggleBreaks and not na(r1Value) and ta.close > r1Value
    r1Value := na

// 更新支撑位并判断向下突破
if not na(lowPivot)
    s1Value := lowPivot
if toggleBreaks and not na(s1Value) and ta.close < s1Value
    s1Value := na

// 绘制支撑阻力位
plot(r1Value, color=change(r1Value) ? na : #FF0000, linewidth=3, offset=-(rightBars+1), title="阻力位")
plot(s1Value, color=change(s1Value) ? na : #233dee, linewidth=3, offset=-(rightBars+1), title="支撑位")

关键逻辑说明

  • 移除fixnan:让未形成pivot的位置保持NaN,避免无效值填充导致的旧线残留
  • 变量持续跟踪:用var声明的变量会保留当前有效的支撑阻力位值,直到被突破触发重置
  • 突破判断:当收盘价向上突破阻力位、向下跌破支撑位时,将对应变量设为NaN,实现线条隐藏
  • 开关控制:通过toggleBreaks参数可以随时开启/关闭突破隐藏功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:11:20