You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pine Script绘制最近2根K线高低价的两条全幅水平横线

Pine Script 实现全幅水平横线绘制:定位最近2根K线高低点

核心实现逻辑

要完成需求需要拆解两个目标:

  • 精准计算最近2根K线的动态最高、最低价格
  • 让绘制的横线从生成位置一直贯穿图表全幅,不会随K线推进逐段割裂

具体实现步骤

1. 计算近期K线高低极值

直接调用Pine Script内置的序列计算函数即可,无需手动逐根回溯:

  • 最近2根K线最高价:使用 ta.highest(high, 2),自动覆盖当前K线+前1根K线的最高价取最大值
  • 最近2根K线最低价:使用 ta.lowest(low, 2),自动覆盖当前K线+前1根K线的最低价取最小值

2. 绘制全幅贯穿的横线

普通逐K线的plot() 绘制方式无法实现跨K线的连续全幅效果,需要通过线对象的坐标设置+延伸参数实现,同时要做好性能优化,避免重复创建线对象拖慢图表加载。
完整可运行代码如下:

//@version=5
indicator("近2根K线高低全幅水平线", overlay=true)

// 计算最近2根K线的高低极值
recent_high = ta.highest(high, 2)
recent_low = ta.lowest(low, 2)

// 初始化线对象,固定只创建一次,避免冗余渲染
var line high_line = line.new(
     x1=bar_index, 
     y1=recent_high, 
     x2=bar_index, 
     y2=recent_high,
     color=color.new(color.red, 0),
     width=2,
     extend=extend.right
)
var line low_line = line.new(
     x1=bar_index, 
     y1=recent_low, 
     x2=bar_index, 
     y2=recent_low,
     color=color.new(color.green, 0),
     width=2,
     extend=extend.right
)

// 极值变动时才更新线的坐标,减少无效计算
if recent_high != recent_high[1]
    line.set_xy1(high_line, bar_index, recent_high)
    line.set_xy2(high_line, bar_index, recent_high)
if recent_low != recent_low[1]
    line.set_xy1(low_line, bar_index, recent_low)
    line.set_xy2(low_line, bar_index, recent_low)

关键参数说明

  • overlay=true:必须开启,让指标直接叠加在主K线图表上,不会生成单独的副图窗口
  • var 关键字修饰线对象:让线对象只在脚本首次运行时初始化一次,后续只更新坐标,不会每根K线都新建线导致渲染卡顿
  • extend=extend.right:核心控制参数,让绘制的线从生成位置一直向右延伸到图表最右侧,实现全幅贯穿的效果
  • 极值变动判断逻辑:仅当最近2根K线的高低点发生实际变化时,才更新线的位置,大幅减少不必要的计算开销

内容的提问来源于stack exchange,提问作者Roboman Robo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 23:15:01