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

请求优化RSI指标代码:仅触发首次超买穿40/超卖穿60信号

RSI交易信号脚本修正(仅触发首个跨位信号)

需求说明

需要实现以下RSI交易信号逻辑:

  • 空单信号:RSI从**超买区间(≥70)**下穿40水平时触发,且仅触发该区间内的首个下穿信号
  • 多单信号:RSI从**超卖区间(≤30)**上穿60水平时触发,且仅触发该区间内的首个上穿信号

修正后的Pine Script代码

//@version=5
indicator(title='RSI 专属交易信号', overlay=false)

// 输入参数
rsiLength = input.int(title='RSI周期', defval=14)
overboughtLevel = input.int(title='超买阈值', defval=70)
oversoldLevel = input.int(title='超卖阈值', defval=30)
shortCrossLevel = input.int(title='空单触发下穿水平', defval=40)
longCrossLevel = input.int(title='多单触发上穿水平', defval=60)

// 计算RSI值
rsi = ta.rsi(close, rsiLength)

// 持久化变量:记录是否已触发当前区间的信号
var bool hasLongSignal = false
var bool hasShortSignal = false

// 重置信号状态的条件:RSI回到中线,或重新进入超买/超卖区间
resetLong = ta.crossover(rsi, 50) or ta.crossunder(rsi, oversoldLevel)
resetShort = ta.crossunder(rsi, 50) or ta.crossover(rsi, overboughtLevel)

if resetLong
    hasLongSignal := false
if resetShort
    hasShortSignal := false

// 生成信号的核心逻辑
longCondition = ta.crossover(rsi, longCrossLevel) and not hasLongSignal and ta.barssince(ta.crossover(rsi, oversoldLevel)) > 0
shortCondition = ta.crossunder(rsi, shortCrossLevel) and not hasShortSignal and ta.barssince(ta.crossunder(rsi, overboughtLevel)) > 0

// 触发信号后标记为已触发
if longCondition
    hasLongSignal := true
if shortCondition
    hasShortSignal := true

// 绘制信号标记
plotshape(longCondition, "多单信号", style=shape.triangleup, location=location.bottom, color=color.green, size=size.small)
plotshape(shortCondition, "空单信号", style=shape.triangledown, location=location.top, color=color.red, size=size.small)

// 绘制RSI及关键水平线
plot(rsi, title='RSI', color=color.purple)
hline(overboughtLevel, '超买线', color=color.new(color.red, 50))
hline(oversoldLevel, '超卖线', color=color.new(color.green, 50))
hline(shortCrossLevel, '空单触发线', color=color.new(color.red, 20))
hline(longCrossLevel, '多单触发线', color=color.new(color.green, 20))
hline(50, '中线', color=color.new(#787B86, 60))

代码关键逻辑说明

  • 持久化信号标记:用var声明的hasLongSignal和hasShortSignal会在脚本运行全程保留状态,避免同一区间内重复触发信号
  • 信号重置机制:当RSI回到50中线,或者重新进入超买/超卖区间时,重置信号标记,确保下次符合条件时能触发新信号
  • 跨位条件校验:在判断跨位的同时,加入“RSI此前曾进入对应超买/超卖区间”的校验,确保信号是从目标区间出发的跨位动作
  • 单次触发控制:只有在未触发过当前区间信号的情况下,才生成有效交易信号,触发后标记为已触发,避免重复提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:39:16