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

PineScript技术问题:满足单向条件仅绘一次,反向触发后再绘制

RSI信号单向仅绘一次,反向触发后才允许重绘

你需要实现的是:仅在首次触发某方向(上穿超买/下穿超卖)信号时绘制三角形,之后必须等反向信号触发,该方向再次满足条件时才会重新绘制。用var变量记录上次触发的方向即可实现,修改后的代码如下:

//@version=5
indicator("RSI 单向信号控制", overlay=true)

overBought = input.int(80, title="超买阈值")
overSold = input.int(20, title="超卖阈值")
rsiValue = ta.rsi(close, 14)  // 补充RSI计算逻辑,原代码遗漏此部分

cross_upper = ta.crossover(rsiValue, overBought)    // RSI上穿超买线
cross_lower = ta.crossunder(rsiValue, overSold)     // RSI下穿超卖线

// 记录上次触发的信号方向:0=无信号,1=上穿超买,-1=下穿超卖
var int lastSignalDir = 0

// 上穿信号:仅当上次不是上穿信号时才绘制
plotshape(cross_upper and lastSignalDir != 1, 
          style=shape.triangleup, 
          location=location.bottom, 
          color=#ff00ff, 
          size=size.tiny)

// 下穿信号:仅当上次不是下穿信号时才绘制
plotshape(cross_lower and lastSignalDir != -1, 
          style=shape.triangledown, 
          location=location.top, 
          color=#ff00ff, 
          size=size.tiny)

// 更新信号方向记录
if cross_upper
    lastSignalDir := 1
elif cross_lower
    lastSignalDir := -1

逻辑说明

  • var关键字让lastSignalDir仅在脚本启动时初始化一次,不会随每根K线重置
  • 绘制条件中加入lastSignalDir != 当前方向的判断,直接过滤掉同方向的重复信号
  • 每次触发有效信号后,更新lastSignalDir的取值,确保下次同方向信号不会被绘制,直到反向信号触发

内容的提问来源于stack exchange,提问作者user27501116

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:32:19