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

Pine Script如何获取指定条件触发前第10根K线的收盘价

问题原因

你当前的代码逻辑仅在cond触发的当期K线为变量a赋值,其余K线的a值均为na,而plotshape函数默认会在a不为na的对应K线位置绘制图形。close[10]仅代表你取的是触发日前10根K线的收盘价作为a的数值,不会改变图形绘制的绑定位置,所以无论你修改[]内的数字,标记永远都会显示在cond触发的K线上。

解决方法

根据你的实际需求选择对应方案:

方案1:标记保留在cond触发K线,仅读取前10根收盘价

你原有代码的取值逻辑完全正确,若要验证取值是否准确,可以额外添加一行plot(a)输出数值即可查看。

方案2:将标记移动到cond触发前第10根K线的位置

有两种常用实现方式:

  • 简易版:直接调整plotshape的偏移参数
    给plotshape添加offset=-10参数,即可将原本绘制在cond触发K线的标记向左偏移10根K线位置:
    //@version=4    
    a = iff(cond, close[10], na)
    plotshape(a, "a", shape.triangleup, location.belowbar, color.lime, size=size.normal, offset=-10)
    
  • 稳定版:匹配K线序号赋值,适合后续需要调用该位置值做计算的场景
    通过valuewhen获取cond触发的K线序号,再匹配前10根的序号赋值:
    //@version=4
    // 获取最近一次cond触发时的K线序号
    trigger_bar = valuewhen(cond, bar_index, 0)
    // 当前K线为触发前第10根时赋值收盘价
    a = bar_index == trigger_bar - 10 ? close : na
    plotshape(a, "a", shape.triangleup, location.belowbar, color.lime, size=size.normal)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:36:04