如何基于硬编码数组指定日期绘制高低点水平线?
解决Pine Script批量绘制指定日期高低点水平线的问题
你可以通过遍历硬编码的日期数组,结合line.new()逐个创建水平线来实现需求。核心思路是对每个目标日期定位对应的K线,提取该K线的高低点后,调用line.new()绘制横跨指定范围的水平线。
完整代码示例
//@version=5 indicator("指定日期高低点水平线", overlay=true) // 硬编码需要标记的日期数组(格式:年-月-日) target_dates = array.new_timestamp( timestamp("2024-01-02"), timestamp("2024-01-15"), timestamp("2024-02-01") ) // 遍历日期数组,为每个日期绘制高低点水平线+垂直线 for i = 0 to array.size(target_dates) - 1 current_date = array.get(target_dates, i) // 定位到当前日期对应的K线索引 target_bar_idx = ta.barssince(time == current_date) // 仅当找到有效K线时绘制 if target_bar_idx != na // 获取目标K线的高低点价格 target_high = high[target_bar_idx] target_low = low[target_bar_idx] // 绘制高点水平线(可调整左右偏移量控制长度) line.new( x1=bar_index - 50, y1=target_high, x2=bar_index + 50, y2=target_high, color=color.new(color.green, 0), width=1, style=line.style_dashed ) // 绘制低点水平线 line.new( x1=bar_index - 50, y1=target_low, x2=bar_index + 50, y2=target_low, color=color.new(color.red, 0), width=1, style=line.style_dashed ) // 绘制原有的垂直线(可选) line.new( x1=current_date, y1=low, x2=current_date, y2=high, color=color.blue, width=2 )
关键细节说明
- 日期定位:用
ta.barssince(time == current_date)找到目标日期对应的K线索引,避免直接用time比较可能出现的无匹配问题。 - 水平线长度:通过
bar_index - 50和bar_index + 50控制水平线的左右范围,你可以根据需求调整这个偏移量(比如改成0和bar_index让线延伸到当前K线)。 - 样式自定义:可以修改
color、width、style参数,让线条符合你的视觉需求。
注意事项
- 如果目标日期不在当前图表的时间范围内,
target_bar_idx会返回na,此时不会绘制线条,避免报错。 - 如果需要在图表缩放时自动适配水平线长度,可以把
x1和x2改成ta.min(bar_index, ...)和ta.max(bar_index, ...),或者直接用time的极值。
内容的提问来源于stack exchange,提问作者amol
相关产品推荐
相关产品推荐

