Pine Editor绘制固定间隔重复水平线的技术求助
Pine Editor 重复绘制线条与填充区域解决方案
要实现重复绘制指定间隔的线条和填充区域,核心是用循环语句替代手动逐个创建hline对象,这样能高效生成所有需要的水平元素。以下是满足需求的完整代码:
//@version=5 indicator("重复水平区间", overlay=true) // 基础参数设置 baseLevel = 11600 // 起始基准线 interval = 200 // 重复间隔 greenOffset = -50 // 绿色区域相对基准线的偏移 greenRange = 10 // 绿色区域高度(11550-11540=10) redOffset = 30 // 红色区域相对基准线的偏移 redRange = 10 // 红色区域高度(11640-11630=10) // 获取当前图表可见区间的高低价,动态计算循环范围 chartHigh = ta.highest(high, barssince(barstate.islast)) chartLow = ta.lowest(low, barssince(barstate.islast)) upCount = ceil((chartHigh - baseLevel) / interval) downCount = ceil((baseLevel - chartLow) / interval) // 向上循环生成线条与红色填充 for i = 0 to upCount currentLevel = baseLevel + i * interval hline(currentLevel, "基准线 " + str.tostring(currentLevel), color=color.yellow, linestyle=hline.style_dotted) redTop = currentLevel + redOffset + redRange redBottom = currentLevel + redOffset hRedTop = hline(redTop, display=display.data_window) hRedBottom = hline(redBottom, display=display.data_window) fill(hRedTop, hRedBottom, color=color.new(color.red, 90)) // 向下循环生成线条与绿色填充 for i = 1 to downCount currentLevel = baseLevel - i * interval hline(currentLevel, "基准线 " + str.tostring(currentLevel), color=color.yellow, linestyle=hline.style_dotted) greenTop = currentLevel + greenOffset + greenRange greenBottom = currentLevel + greenOffset hGreenTop = hline(greenTop, display=display.data_window) hGreenBottom = hline(greenBottom, display=display.data_window) fill(hGreenTop, hGreenBottom, color=color.new(color.green, 90)) plot(close)
关键逻辑说明
- 参数化配置:把基准值、间隔、偏移量等设为变量,后续调整时无需逐行修改代码。
- 动态范围适配:通过获取图表当前可见区间的高低价,自动计算需要生成的线条数量,确保覆盖视图内所有区域;也可直接将
upCount、downCount设为固定数值(比如upCount=5)来控制生成次数。 - 循环批量生成:分别向上/向下循环,每次以200点为间隔生成黄色虚线,同步计算对应填充区域的上下边界并创建填充效果。
- 简化图表显示:填充区域的边界线通过
display=display.data_window设置为仅在数据窗口显示,避免图表线条过多杂乱。
版本兼容提示
代码基于Pine Script v5编写,若使用v4版本,需调整语法:将indicator改为study,循环写法改为for i = 0 to upCount by 1格式。
内容的提问来源于stack exchange,提问作者German Iglesias
相关产品推荐
相关产品推荐

