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

如何绘制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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:27:30