如何在Pine Script中通过Absolute ZigZag Lib获取最新及前序高低点
获取Absolute ZigZag Lib的最后及倒数第二个高低点
你之前的代码问题出在函数参数传递错误——不需要把库本身(pivotLib)传给getLastHigh/getHigh等函数,而是要先初始化一个包含ZigZag配置的Pivot对象,再把这个对象作为参数传入。
以下是修正后的可用代码:
//@version=5 indicator("ZigZag Pivot Example", overlay=true) // 导入Absolute ZigZag库 import niquedegraaff/Absolute_ZigZag_Lib/10 as pivotLib // 初始化Pivot配置:设置偏差值(这里用2%,可自行调整),启用高低价计算 zigzagPivot = pivotLib.Pivot(deviation=2.0, useHighLow=true) // 获取最后一个高点(索引1)和倒数第二个高点(索引2) latestHigh = pivotLib.getLastHigh(zigzagPivot) prevHigh = pivotLib.getHigh(zigzagPivot, 2) // 获取最后一个低点(索引1)和倒数第二个低点(索引2) latestLow = pivotLib.getLastLow(zigzagPivot) prevLow = pivotLib.getLow(zigzagPivot, 2) // 可选:在图表上标记高低点方便验证 if not na(latestHigh) label.new(bar_index, latestHigh, "Latest High: " + str.tostring(latestHigh), color=color.new(color.green, 0), textcolor=color.white) if not na(prevHigh) label.new(bar_index - 5, prevHigh, "Prev High: " + str.tostring(prevHigh), color=color.new(color.blue, 0), textcolor=color.white) if not na(latestLow) label.new(bar_index, latestLow, "Latest Low: " + str.tostring(latestLow), color=color.new(color.red, 0), textcolor=color.white) if not na(prevLow) label.new(bar_index - 5, prevLow, "Prev Low: " + str.tostring(prevLow), color=color.new(color.orange, 0), textcolor=color.white)
关键说明:
pivotLib.Pivot()是创建ZigZag计算规则的核心,deviation参数控制反转的阈值(比如2%表示价格变动超过2%才生成新的高低点),useHighLow设为true表示用K线的高低价计算,而非收盘价。getHigh(zigzagPivot, N)中的N是高点的索引:1对应最后一个生成的高点,2对应倒数第二个,以此类推;getLastHigh等价于getHigh(zigzagPivot, 1),是简化写法。- 如果返回值为
na,说明还没有足够的K线生成对应数量的高低点,可通过not na()判断后再使用。
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

