如何用Pine Script正确连接满足特定条件的K线高点?
解决Pine Script中连接顶部K线高点的问题
你的代码问题在于,判断条件是在当前K线检测上一根K线是否为顶部,并且在当前K线位置绘制上一根的高点,这会导致绘图逻辑错位,从而出现错误的连线。
正确实现方式(两种可选)
方法1:使用内置函数ta.pivothigh
Pine Script提供了专门寻找顶部的内置函数ta.pivothigh(length_before, length_after),参数分别代表顶部前后需要对比的K线数量。这里我们需要前后各1根,所以可以直接用这个函数来获取所有符合条件的顶部高点,再用plot连接:
//@version=5 indicator("顶部高点连线", overlay = true) // 识别前后各1根K线都更低的顶部高点 peakHigh = ta.pivothigh(1, 1) // 绘制顶部高点连线,仅连接有效高点 plot(peakHigh, title="顶部连线", color=color.blue, linewidth=2)
方法2:自定义无未来数据的判断逻辑
如果你想手动实现无未来数据的判断(避免指标重绘),可以在顶部K线闭合后再标记并收集高点:
//@version=5 indicator("顶部高点连线(无未来数据)", overlay = true) // 在当前K线判断上一根是否为顶部(基于已闭合的K线) isPreviousTop = high[1] > high[2] and high[1] > high[0] // 存储顶部高点的价格和对应K线索引 var float[] topPrices = array.new_float() var int[] topBarIndices = array.new_int() // 检测到顶部时,将数据存入数组 if isPreviousTop array.push(topPrices, high[1]) array.push(topBarIndices, bar_index[1]) // 绘制顶部高点连线 plot(array.size(topPrices) > 0 ? array.from(topPrices, topBarIndices) : na, title="顶部连线", color=color.blue, linewidth=2)
效果说明
上述代码都会只连接所有符合条件的顶部K线高点,不会错误连接后续无关K线。
内容的提问来源于stack exchange,提问作者pooya mahmoodi
相关产品推荐
相关产品推荐

