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

Pine Script中valuewhen()获取pivot高低点数值异常如何解决

问题原因分析

首先明确ta.pivothigh()/ta.pivotlow()的运行逻辑:

  • 函数定义为ta.pivothigh(left_len, right_len),含义是寻找满足「左边left_len根K线最高价都更低、右边right_len根K线最高价都更低」的拐点,必须等右边right_len根K线全部走完,才会在当前K线返回该拐点的最高价,否则返回na。
  • 你设置的左右参数都是Pivotprd=10,所以当某根K线触发ph非na时,真正的pivot高点实际在当前K线往前数10根的位置。

你代码的核心错误有两个:

  • ta.valuewhen(ph, close, 1)取的是「ph条件成立(即确认pivot高点)的那根K线的收盘价」,并非pivot高点所在K线的数值,也不是高点本身的价格
  • occurrence参数填1代表取上一次满足条件的结果,要取最近一次满足条件的结果应该填0
修正方案

方案1:直接提取pivot高低点的价格

ta.pivothigh()/ta.pivotlow()返回非na值时,本身就是pivot高点/低点的价格,直接取最近一次非na值即可:

Pivotprd = input.int(defval=10, title='Pivot Point Period', minval=10, maxval=50)

ph = ta.pivothigh(Pivotprd, Pivotprd)
pl = ta.pivotlow(Pivotprd, Pivotprd)

// 最近一次pivot高点价格
phVal = ta.valuewhen(not na(ph), ph, 0)
// 最近一次pivot低点价格
plVal = ta.valuewhen(not na(pl), pl, 0)

方案2:提取pivot高低点所在K线的其他数值

如果需要取pivot拐点所在K线的开盘价/收盘价/成交量等其他数据,在取数时偏移Pivotprd即可:

// 取最近pivot高点所在K线的收盘价
ph_close = ta.valuewhen(not na(ph), close[Pivotprd], 0)
// 取最近pivot低点所在K线的成交量
pl_vol = ta.valuewhen(not na(pl), volume[Pivotprd], 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:15:10