如何在价格上穿特定时段高点时终止画线,否则延伸至04:00?
实现TradingView时段高点线的动态终止逻辑
你的需求核心是让线条在价格突破高点后停止绘制,否则延伸到04:00。关键在于跟踪首次突破的发生位置,之后只在突破前的时段内绘制线条。以下是修改后的代码及说明:
//@version=5 indicator("时段高点动态延伸线", overlay=true) // 获取20:00-00:00(GMT-5)时段的高点 highRange = ta.sessionHigh("2000-0000", "GMT-5") // 定义线条的绘制时段:00:00-04:00(GMT-5) drawPeriod = time(timeframe.period, "0000-0400", "GMT-5") // 价格突破高点的交叉条件 crossHigh = ta.crossover(high, highRange) // 用var变量记录首次突破的K线索引,初始-1表示未触发突破 var int firstCrossBar = -1 if crossHigh firstCrossBar := bar_index // 绘制条件:处于绘制时段内,且要么未突破,要么当前K线在突破发生之前 plotCondition = drawPeriod and (firstCrossBar == -1 or bar_index < firstCrossBar) // 绘制线条:满足条件时显示高点,否则隐藏 plot(plotCondition ? highRange : na, color=color.new(#f1074d, 50), linewidth=2, title="动态高点线")
关键逻辑说明
var int firstCrossBar = -1:用var声明的变量只会初始化一次,专门用来记录第一次触发突破的K线位置,初始值-1代表还没出现突破。- 当
crossHigh条件触发时,把当前K线的索引bar_index赋值给firstCrossBar,锁定突破发生的位置。 plotCondition同时判断两个条件:当前处于00:00-04:00的绘制时段,并且要么还没发生突破,要么当前K线在突破K线之前。只有满足这两个条件时才绘制线条,突破后的K线就会停止显示线条。
内容的提问来源于stack exchange,提问作者marcq
相关产品推荐
相关产品推荐

