求助:如何使TP线仅绘制最近的longentry/shortentry信号?
仅绘制最近止盈(TP)线的Pine Script实现方案
你的当前代码会绘制所有触发longentry/shortentry信号后的TP线,要实现只显示最近一次信号对应的TP线,可以通过跟踪最近信号的位置和对应TP价格来实现,修改后的代码如下:
//@version=5 indicator("最近信号TP线", overlay=true) // 请替换为你实际的longentry/shortentry信号条件 longentry = ta.crossover(ta.sma(close, 5), ta.sma(close, 20)) shortentry = ta.crossunder(ta.sma(close, 5), ta.sma(close, 20)) // 存储最近一次信号的bar索引、对应TP价格及信号类型 var int lastSignalBar = na var float lastTP = na var bool isLastLongSignal = na // 更新最近信号的记录 if longentry lastSignalBar := bar_index lastTP := open + 0.0023 isLastLongSignal := true if shortentry lastSignalBar := bar_index lastTP := open - 0.0023 isLastLongSignal := false // 仅绘制最近信号之后的TP线 plot(bar_index >= lastSignalBar ? lastTP : na, "最近TP", color=isLastLongSignal ? color.green : color.red, linewidth=1)
关键逻辑说明
- 用
var关键字声明变量,确保它们在脚本运行全程保留值,不会随每个bar重置。 - 触发多/空信号时,同步更新最近信号的bar索引、TP价格,以及标记信号类型(多/空)。
- 绘图时通过
bar_index >= lastSignalBar判断,仅在最近信号之后的bar上绘制对应TP线,之前的bar返回na(不显示)。
可选优化
代码中已通过isLastLongSignal区分多空信号,TP线会用绿色(多单)和红色(空单)显示,你可以根据需求自行调整颜色参数。
内容的提问来源于stack exchange,提问作者Parabolic1
相关产品推荐
相关产品推荐

