如何修改TradingView Pivot Points High Low指标仅保留最新2个HH/LL枢轴点标签
TradingView 「Pivot Points High Low」指标修改实现方案
要实现仅显示最新2个HH枢轴高点、2个LL枢轴低点的需求,核心逻辑是通过变量存储最近生成的标签ID,每次新增标签时清理超出数量限制的历史标签,具体修改如下:
修改后完整可运行代码
//@version=5 indicator("Pivot Points High Low (仅显示最新2个)", overlay=true) gr="LENGTH LEFT / RIGHT" leftLenH = input.int(title="Pivot High", defval=10, minval=1, inline="Pivot High",group=gr) rightLenH = input.int(title="/", defval=10, minval=1, inline="Pivot High",group=gr) colorH = input(title="", defval=#E3EFFD, inline="Pivot High",group=gr) leftLenL = input.int(title="Pivot Low", defval=10, minval=1, inline="Pivot Low", group=gr) rightLenL = input.int(title="/", defval=10, minval=1, inline="Pivot Low",group=gr) colorL = input(title="", defval=#E3EFFD, inline="Pivot Low",group=gr) // 存储最近N个枢轴高、枢轴低的标签ID数组 var label[] phLabels = array.new_label() var label[] plLabels = array.new_label() showCount = input.int(2, minval=1, title="显示最新枢轴点数量", group="显示设置") ph = ta.pivothigh(leftLenH, rightLenH) pl = ta.pivotlow(leftLenL, rightLenL) drawLabel(_offset, _pivot, _style, _color, _labelArray) => if not na(_pivot) // 新建标签存入数组头部 newLabel = label.new(bar_index[_offset], _pivot, str.tostring(_pivot, format.mintick), style=_style, color=_color, textcolor=#131722) array.unshift(_labelArray, newLabel) // 超过显示数量时删除最早生成的标签 if array.size(_labelArray) > showCount label.delete(array.pop(_labelArray)) drawLabel(rightLenH, ph, label.style_label_down, colorH, phLabels) drawLabel(rightLenL, pl, label.style_label_up, colorL, plLabels)
关键修改说明
- 新增两个带
var修饰的标签数组phLabels、plLabels,分别存储未删除的高点、低点标签ID,var修饰保证变量不会随K线刷新重置 - 给
drawLabel函数新增标签数组参数,每次生成新标签时插入数组头部 - 新增数量判断逻辑:当数组长度超过设置的显示数量(默认2)时,删除数组尾部最早生成的标签
- 额外增加了可自定义显示数量的输入项,可直接在参数面板调整需要显示的最新枢轴点数量,无需修改代码逻辑
内容的提问来源于stack exchange,提问作者Pitt
相关产品推荐
相关产品推荐

