如何在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参数控制射线延伸方向,核心逻辑如下:
- 两点连线+单向延伸:从点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)
- 双向无限延伸射线:通过两点确定直线,向左右两边无限延伸
line.new(x1=pointAX, y1=pointAY, x2=pointBX, y2=pointBY, color=color.blue, width=2, extend=extend.both)
- 单点延伸射线:只需将x1/x2设为同一K线索引,再指定延伸方向即可(如前面的背离射线示例)。
内容的提问来源于stack exchange,提问作者E S
相关产品推荐
相关产品推荐

