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

Pine Script进阶:用input.time识别选定K线是否为枢轴高点

Pine Script 枢轴高点判断脚本问题排查与修复

你的脚本始终显示“Not True”,核心问题出在枢轴高点的判断逻辑和变量声明方式上,具体原因及修正方案如下:

错误原因分析

  1. ta.pivothigh(1,1)返回逻辑误解:该函数只会在枢轴高点形成后的右侧第1根K线,返回枢轴高点所在的bar索引,而非在选中的目标K线上直接返回对应值。你直接用barStart == ta.pivothigh(1,1),只有当脚本运行到目标K线右侧第1根时才会匹配,但此时var声明的变量已固定初始值,无法更新。
  2. var关键字误用:var定义的变量仅在脚本启动时初始化一次,后续不会重新赋值。你的isPivotHigh和ph一旦初始化就不会随选中的新K线更新,导致判断结果始终固定。
  3. 标签未更新逻辑:var创建的标签只会生成一次,即使后续判断正确,文本也不会同步修改。

修正后的代码

start_time = input.time(timestamp("20 Jan 2021"), "Start Calculation", confirm=true)
displayStdDev = input.bool(false, title = "Display Std Dev Bands")
mult = input(2, title = "Standard Deviation Bands")

var int barStart = 0
var label l1 = na // 提前声明标签变量

// 记录选中K线的bar索引
if time == start_time
    barStart := bar_index

// 当选中K线后,在后续K线中判断是否为枢轴高点
if barStart != 0
    // 判断选中的bar是否是枢轴高点(需要右侧1根K线确认)
    isPivotHigh = barStart == ta.pivothigh(1,1)
    ph = isPivotHigh ? "True" : "False"
    
    // 更新标签:如果标签已存在则修改,否则创建
    if na(l1)
        l1 := label.new(x=barStart, y=high, text=ph, color=color.white)
    else
        label.set_text(l1, ph)

关键改动说明

  • 移除判断变量的var声明,确保每次选中新K线时重新计算枢轴高点状态
  • 提前声明标签变量,通过label.set_text()动态更新文本,避免重复创建标签
  • 利用ta.pivothigh(1,1)的返回特性,在选中K线的后续K线中完成判断,确保枢轴高点的确认逻辑生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:50:16