如何修改Pine Script代码,在TradingView显示绝对枢轴高低点?
修改Pine Script代码实现绝对枢轴高低点标记
原代码使用highestbars()和lowestbars()函数判断枢轴点,但当存在相等的高低点时,这两个函数会因返回最近的极值点位置而误标记非绝对的枢轴。要实现仅显示绝对枢轴高低点(即枢轴点的高低严格大于/小于指定范围内所有其他K线的高低),可以通过直接比较候选点与左右区间内所有K线的高低值来实现。
修改后的代码
//@version=4 study("Absolute Pivot High Low Points", overlay =true) lb = input(defval = 1, title="Left Bars") rb = input(defval = 1, title="Right Bars") // 定义绝对枢轴高点条件:候选点严格大于左边lb个bar和右边rb个bar的所有高点 isPivotHigh = high[lb] > highest(high, lb) and high[lb] > highest(high[1:rb+1]) // 定义绝对枢轴低点条件:候选点严格小于左边lb个bar和右边rb个bar的所有低点 isPivotLow = low[lb] < lowest(low, lb) and low[lb] < lowest(low[1:rb+1]) // 绘制绝对枢轴高点标记 plotshape(isPivotHigh, style = shape.triangledown, location = location.abovebar, color = color.lime, size = size.tiny, offset = -lb) // 绘制绝对枢轴低点标记 plotshape(isPivotLow, style = shape.triangleup, location = location.belowbar, color = color.red, size = size.tiny, offset = -lb)
关键改动说明
- 替换判断逻辑:舍弃
highestbars()/lowestbars(),改用highest()/lowest()配合严格比较运算符(>/<),确保候选点是指定区间内唯一的绝对最高/最低点。highest(high, lb):获取当前候选点左侧lb个K线的最高值highest(high[1:rb+1]):获取当前候选点右侧rb个K线的最高值(high[1:rb+1]表示从下一个K线开始往后rb个的区间)
- 代码可读性优化:将判断条件封装为变量
isPivotHigh和isPivotLow,逻辑更清晰。
内容的提问来源于stack exchange,提问作者kin182
相关产品推荐
相关产品推荐

