Pine Script中满足条件时如何在bar close位置绘制直线?
Pine Script条件触发后在收盘价位置持续绘制直线实现方案
核心实现逻辑
要实现条件成立后持续在触发K线收盘价位置画延伸直线,只需要三个核心步骤:
- 先自定义你的预设判定规则,比如指标金叉、价格突破、信号成立等任意你需要的触发条件
- 用
var关键字声明持久化变量,存储触发时的收盘价、创建的直线对象,var修饰的变量只会在脚本首次加载时初始化一次,不会随着K线遍历被重置,适合存储固定的触发状态 - 条件首次触发时创建水平线对象,之后每根新K线生成时,自动把直线的右端点更新到最新K线位置,实现直线持续延伸的效果。
可直接复用的示例代码
//@version=5 indicator("条件触发收盘价画线示例", overlay=true) // 替换为你自己的触发条件,示例默认用收盘价上穿20日均线作为触发信号 ma20 = ta.sma(close, 20) triggerCond = ta.crossover(close, ma20) // 持久化存储直线对象、触发价格 var line holdLine = na var float triggerClose = na // 条件成立时创建新直线 if triggerCond triggerClose := close holdLine := line.new( x1=bar_index, y1=triggerClose, x2=bar_index, y2=triggerClose, color=color.red, width=2, style=line.style_solid ) // 直线已创建的情况下,每根K线更新直线终点到当前最新位置 if not na(holdLine) line.set_x2(holdLine, bar_index)
常见场景调整
如果需要保留每一次条件触发的所有历史直线,不需要单根线替换更新:删除
var line holdLine = na的变量声明,在条件触发块内直接调用line.new()创建直线,创建时将x2参数设置为bar_index + 延伸长度,如果要永久延伸到图表最右侧,x2直接传入barstate.last_bar_index即可,不需要后续调用line.set_x2()更新位置。
内容的提问来源于stack exchange,提问作者John Kenneth Miano
相关产品推荐
相关产品推荐

