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

如何在Pine Script中将两点间绘制线改为射线并监测与0线交叉?

在Pine Script中将背离点改为射线及两点间绘制射线的方法

一、修改现有背离代码为射线

原代码用plot()只能绘制离散点或短线段,要实现射线效果,需用Pine Script的line.new()函数,它支持创建可延伸的线条。以下是两种修改方案:

方案1:只保留最新的顶/底背离射线(覆盖旧射线)

// 顶背离射线:从触发点向右延伸
var line topRay = na
if (wtFractalTop)
    rayX = bar_index - 2  // 对应原代码的offset=-2
    rayY = wt2[2]
    // 删除旧射线(可选,若不需要保留历史则添加)
    line.delete(topRay)
    // 创建新的向右延伸射线
    topRay := line.new(x1=rayX, y1=rayY, x2=bar_index, y2=rayY, color=wtBearDivColor, width=2, extend=extend.right)

// 底背离射线:从触发点向右延伸
var line botRay = na
if (wtFractalBot)
    rayX = bar_index - 2
    rayY = wt2[2]
    line.delete(botRay)
    botRay := line.new(x1=rayX, y1=rayY, x2=bar_index, y2=rayY, color=wtBullDivColor, width=2, extend=extend.right)

方案2:保留所有历史背离射线

如果需要展示每一次的背离射线,去掉var和旧射线删除逻辑即可:

// 顶背离射线(保留所有历史记录)
if (wtFractalTop)
    rayX = bar_index - 2
    rayY = wt2[2]
    line.new(x1=rayX, y1=rayY, x2=bar_index, y2=rayY, color=wtBearDivColor, width=2, extend=extend.right)

// 底背离射线(保留所有历史记录)
if (wtFractalBot)
    rayX = bar_index - 2
    rayY = wt2[2]
    line.new(x1=rayX, y1=rayY, x2=bar_index, y2=rayY, color=wtBullDivColor, width=2, extend=extend.right)

二、两点间绘制射线的通用方法

用line.new()函数,通过extend参数控制射线延伸方向,核心逻辑如下:

  1. 两点连线+单向延伸:从点A到点B,再从B向指定方向延伸
// 示例:定义两个点的坐标(替换为你的实际数据)
pointAX = bar_index - 10
pointAY = close[10]
pointBX = bar_index - 5
pointBY = close[5]

// 创建从A到B,再向右延伸的射线
line.new(x1=pointAX, y1=pointAY, x2=pointBX, y2=pointBY, color=color.red, width=2, extend=extend.right)
  1. 双向无限延伸射线:通过两点确定直线,向左右两边无限延伸
line.new(x1=pointAX, y1=pointAY, x2=pointBX, y2=pointBY, color=color.blue, width=2, extend=extend.both)
  1. 单点延伸射线:只需将x1/x2设为同一K线索引,再指定延伸方向即可(如前面的背离射线示例)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:33:30