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

PineScript如何过滤plotshape重复买卖信号 仅显示首次信号直至反向触发

PineScript 同方向买卖信号仅首次触发显示实现

核心实现逻辑

通过新增状态变量记录上一次已触发的信号类型,只有当前信号与上一次信号方向相反时才输出新信号,即可实现同方向信号仅首次生效的效果,同时修正了原代码中变量大小写拼写错误的问题。

完整修正代码

study(title="ALMA", overlay=true)
alma = alma(close, 9, 0.85, 6)
plot(alma, title="ALMA", color=color.yellow, linewidth=2)
ema50 = ema(close,50)
plot(ema50, title="EMA", color=color.fuchsia, linewidth=2)
A = close > alma
B = close < alma
// 定义状态变量:0无信号,1已触发买入信号,2已触发卖出信号
var signal_status = 0
// 计算有效可显示信号:仅当前信号和历史状态不一致时生效
valid_buy = A and signal_status != 1
valid_sell = B and signal_status != 2
// 触发有效信号后更新状态
if valid_buy
    signal_status := 1
if valid_sell
    signal_status := 2

plotshape(valid_buy,text="Buy",style=shape.flag,size=size.small,offset=0,color=color.green,textcolor=color.green,location=location.belowbar)
plotshape(valid_sell,text="Sell",style=shape.flag,size=size.small,offset=0,color=color.red,textcolor=color.red,location=location.abovebar)

改动说明

  • 替换原有逻辑混乱的S_sell、S_buy变量为统一的信号状态变量,代码逻辑更清晰
  • 新增有效信号判定规则,同方向信号触发后会被自动过滤,直到反向信号触发更新状态后才会重新判定新的同方向信号

内容的提问来源于stack exchange,提问作者John Kenneth Miano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:30:02