Pine Script:如何通过存储的barindex值获取对应K线高低点?
解决Pine Script中通过Barindex获取对应K线高低点的问题
你遇到的问题核心是对Pine Script的数组引用语法理解有误:high[n]的作用是获取当前K线向前数n根的K线高点,而非直接获取barindex等于n的K线高点。比如当前barindex是1500,high[1002]会取1500-1002=498号K线的数值,这和你想要的1002号K线完全不符。
解决方案
使用Pine Script内置的ta.valuewhen()函数,该函数可以根据指定条件定位到目标K线,并获取对应位置的指标数值。
修正后的代码
//@version=5 indicator("获取指定Barindex的高低点", overlay=true) indexarray = array.new_int(4, 1002, 1004, 1005, 1010) for i = 0 to array.size(indexarray) - 1 val = array.get(indexarray, i) // 获取对应barindex的高点和低点 highvalue = ta.valuewhen(barindex == val, high, 0) lowvalue = ta.valuewhen(barindex == val, low, 0) // 在目标K线位置绘制标签 label.new(val, highvalue, str.tostring(val) + " 高点: " + str.tostring(highvalue), color=color.green, style=label.style_label_down) label.new(val, lowvalue, str.tostring(val) + " 低点: " + str.tostring(lowvalue), color=color.red, style=label.style_label_up)
关键说明
ta.valuewhen(barindex == val, high, 0):第一个参数是定位条件(找到barindex等于目标值的K线),第二个参数是要获取的指标(high/low),第三个参数0表示取最近一次满足条件的数值(由于每个barindex唯一,这就是目标K线的对应数值)。- 确保目标barindex在当前图表的加载范围内,否则函数会返回
na。
内容的提问来源于stack exchange,提问作者Ranjeeth kumar
相关产品推荐
相关产品推荐

