如何在Pine Script中调整label.new的X和Y位置?
解决标签遮挡价格走势的问题
从截图能看到,你的红绿标签直接叠加在价格K线上,影响走势查看。问题出在代码里设置了yloc=yloc.price,导致标签绑定在价格对应的位置。下面给你几种简单的调整方法:
方法1:把标签固定在K线上下方
将yloc=yloc.price改成yloc.belowbar(K线下方)或yloc.abovebar(K线上方),让标签避开价格走势区域:
label.delete(rsidown) yrsil = al*bar_index + bl rsidown := label.new(bar_index, yrsil, text=str.tostring(yrsil, "#.####"), color=color.red, style=label.style_text_outline, yloc=yloc.belowbar) // 移到K线下方 label.delete(rsiup) yrsih = ah*bar_index + bh rsiup := label.new(bar_index, yrsih, text=str.tostring(yrsih, "#.####"), color=color.green, style=label.style_text_outline, yloc=yloc.abovebar) // 移到K线上方
方法2:将标签放到图表顶部/底部区域
如果想让标签完全脱离价格波动区,可基于周期极值设置固定位置,把标签放到图表最上方或最下方:
label.delete(rsidown) yrsil = al*bar_index + bl // 取100周期最低价的0.95倍作为底部位置,标签移到此处 chart_bottom = ta.lowest(ta.low, 100) * 0.95 rsidown := label.new(bar_index, chart_bottom, text=str.tostring(yrsil, "#.####"), color=color.red, style=label.style_text_outline, yloc=yloc.price) label.delete(rsiup) yrsih = ah*bar_index + bh // 取100周期最高价的1.05倍作为顶部位置,标签移到此处 chart_top = ta.highest(ta.high, 100) * 1.05 rsiup := label.new(bar_index, chart_top, text=str.tostring(yrsih, "#.####"), color=color.green, style=label.style_text_outline, yloc=yloc.price)
方法3:给标签添加偏移量
如果不想改变标签的绑定逻辑,可通过yoffset参数让标签在原位置基础上上下偏移,避开价格:
label.delete(rsidown) yrsil = al*bar_index + bl rsidown := label.new(bar_index, yrsil, text=str.tostring(yrsil, "#.####"), color=color.red, style=label.style_text_outline, yloc=yloc.price, yoffset=-20) // 向下偏移20像素 label.delete(rsiup) yrsih = ah*bar_index + bh rsiup := label.new(bar_index, yrsih, text=str.tostring(yrsih, "#.####"), color=color.green, style=label.style_text_outline, yloc=yloc.price, yoffset=20) // 向上偏移20像素
你可以根据自己的需求选一种方式修改,调整后标签就不会再遮挡价格走势了。
内容的提问来源于stack exchange,提问作者Paul Cas
相关产品推荐
相关产品推荐

