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
相关产品推荐
相关产品推荐

