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

Pine Script中line.new仅生效于extend.right,如何绘制趋势线而非水平线?

解决Pine Script绘制趋势线而非水平线的问题

你当前代码绘制水平线的核心原因是:line.new()中设置的y1和y2都是同一个close[i]值,导致线段两端价格完全一致,自然是水平的。要绘制趋势线,需要为线段两端设置不同的价格锚点,同时extend = extend.right只是控制线条是否向右延伸,和是否为趋势线无关。

关键修改步骤

  1. 为趋势线两端设置不同的价格:比如将高点趋势线的一端锚定在high[iHighMain](找到的历史高点价格),另一端锚定在符合条件K线的收盘价;低点趋势线同理锚定low[iLowMain]和对应K线收盘价。
  2. 按需保留或调整extend参数:如果需要趋势线向右延伸,保留extend=extend.right;如果只需要显示两个锚点之间的线段,可移除该参数。

修改后的完整代码

maxBack = input.int(defval = 10, title = "maxBack", minval = 1)

float highMain = ta.highest(maxBack)
float lowMain = ta.lowest(maxBack)

int iHighMain = 0
int iLowMain = 0

bool we_work = barstate.islast
if(we_work)
    // 定位历史高低点对应的K线索引
    for i=2 to maxBack+2
        if(iHighMain==0 and high[i] == highMain)
            iHighMain := i
        if(iLowMain==0 and low[i] == lowMain)
            iLowMain := i

    // 绘制高点趋势线:连接符合条件的收盘价与历史高点价格
    for i=iHighMain+1 to 1000
        if(close[i]<high[iHighMain] and  close[i]>low[iHighMain])
            line.new(x1 = i, y1 = close[i], x2 = iHighMain, y2 = high[iHighMain], width = 3, color=color.yellow, extend=extend.right)
            break
    // 绘制低点趋势线:连接符合条件的收盘价与历史低点价格
    for i=iLowMain+1 to 1000
        if(close[i]<high[iLowMain] and  close[i]>low[iLowMain])
            line.new(x1 = i, y1 = close[i], x2 = iLowMain, y2 = low[iLowMain], width = 3, color=color.yellow, extend=extend.right)
            break

核心修改说明

  • 将line.new()的y2参数从重复的close[i]替换为对应的历史高低点价格(high[iHighMain]/low[iLowMain]),让线段两端价格不同,形成倾斜的趋势线。
  • extend=extend.right仅用于让线条向右延伸至最新K线,若不需要延伸效果,直接删除该参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:02:18