如何绘制Supertrend(多/空)首次信号K线的收盘价序列?
在Pine Script中绘制Supertrend信号首次出现时的收盘价序列
要实现这个需求,核心是捕捉Supertrend趋势反转的首次信号点,并记录对应K线的收盘价,最后将这些收盘价连成序列。以下是修改后的完整代码及关键逻辑说明:
修改后的完整代码
//@version=5 indicator("Supertrend 带信号收盘价序列", overlay=true, timeframe="", timeframe_gaps=true) atrPeriod = input(10, "ATR Length") factor = input.float(3.0, "Factor", step = 0.01) [supertrend, direction] = ta.supertrend(factor, atrPeriod) // 检测趋势反转信号:direction发生变化时即为首次多/空信号 isSignal = ta.change(direction) != 0 // 记录信号出现时的收盘价,无信号时设为na signalClose = isSignal ? close : na // 原有Supertrend绘图逻辑 bodyMiddle = plot((open + close) / 2, display=display.none) upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr) downTrend = plot(direction < 0 ? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr) fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false) fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false) // 绘制信号收盘价序列:用带标记的连线展示 plot(signalClose, "信号收盘价序列", color=color.blue, style=plot.style_linebr, linewidth=2, markersize=8, marker=marker.circle)
关键逻辑说明
- 信号检测:
ta.change(direction)会返回当前K线与前一根K线的direction差值,不为0时说明趋势发生反转(从多转空或空转多),这就是我们要捕捉的首次信号点。 - 收盘价记录:
signalClose变量仅在信号出现时赋值为当前K线收盘价,其余时候为na,这样就能筛选出所有信号对应的收盘价。 - 序列绘制:使用
plot函数的style=plot.style_linebr参数,会自动连接所有非na的收盘价点,同时添加圆形标记让信号点更醒目。
内容的提问来源于stack exchange,提问作者mourad gawad
相关产品推荐
相关产品推荐

