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

如何在Pine Script中结合RSI与LuxAlgo的Nadaraya-Watson Envelope

Pine Script:RSI与Nadaraya-Watson Envelope策略整合方案

核心问题拆解

你遇到的本质问题是变量作用域隔离:生成箭头信号的局部代码块无法访问外部声明的rsiBuy/rsiSell变量,导致无法合并RSI与通道的触发条件。解决思路是将所有条件逻辑移至全局作用域,让变量互相可见,再合并生成最终的交易/预警信号。

完整实现代码

//@version=5
indicator("RSI + Nadaraya-Watson Envelope Strategy", overlay=true)

// 1. RSI参数与计算
rsi_len = input.int(14, "RSI周期")
rsi_overbought = input.int(70, "RSI超买阈值")
rsi_oversold = input.int(30, "RSI超卖阈值")
rsi_val = ta.rsi(close, rsi_len)

// 2. Nadaraya-Watson Envelope参数与计算(兼容LuxAlgo逻辑)
nw_len = input.int(20, "NW平滑周期")
nw_dev = input.float(1.5, "通道偏差")
// 核平滑中轨(还原LuxAlgo的核心逻辑,替代简单SMA)
nw_mid = ta.sma(close * ta.wma(1, nw_len), nw_len) / ta.sma(ta.wma(1, nw_len), nw_len)
nw_upper = nw_mid + nw_dev * ta.stdev(close, nw_len)
nw_lower = nw_mid - nw_dev * ta.stdev(close, nw_len)

// 3. 基础条件判断
price_cross_upper = ta.crossover(close, nw_upper)  // 价格上穿通道上轨
price_cross_lower = ta.crossunder(close, nw_lower) // 价格下穿通道下轨
rsi_is_overbought = rsi_val > rsi_overbought       // RSI处于超买区间
rsi_is_oversold = rsi_val < rsi_oversold           // RSI处于超卖区间

// 4. 合并策略条件
buy_signal = price_cross_lower and rsi_is_oversold
sell_signal = price_cross_upper and rsi_is_overbought

// 5. 绘制信号箭头
plotshape(buy_signal, title="买入信号", location=location.belowbar, 
          color=color.new(color.green, 0), style=shape.triangleup, size=size.small)
plotshape(sell_signal, title="卖出信号", location=location.abovebar, 
          color=color.new(color.red, 0), style=shape.triangledown, size=size.small)

// 6. 设置预警条件
alertcondition(buy_signal, title="买入预警", message="价格下穿NW通道下轨 + RSI超卖")
alertcondition(sell_signal, title="卖出预警", message="价格上穿NW通道上轨 + RSI超买")

关键解决细节

  1. 作用域统一:所有变量(RSI值、通道上下轨、条件判断)都在全局作用域声明,避免局部块的访问限制,确保条件可以自由合并。
  2. 逻辑精准匹配:严格对应你的策略要求:
    • 买入:价格下穿通道下轨 同时 RSI处于超卖区间(若需要RSI交叉触发,可将rsi_is_oversold替换为ta.crossover(rsi_val, rsi_oversold))
    • 卖出:价格上穿通道上轨 同时 RSI处于超买区间
  3. 兼容LuxAlgo逻辑:代码中用核平滑计算中轨,还原了LuxAlgo Nadaraya-Watson Envelope的核心平滑方式,保证通道形态与原指标一致。

如果你用的是LuxAlgo官方脚本

若直接调用LuxAlgo的Nadaraya-Watson Envelope指标,只需替换通道上下轨的计算部分:

// 调用LuxAlgo的NW Envelope(假设该指标输出upper/lower变量)
[upper, mid, lower] = luxalgo_nadaraya_watson_envelope(nw_len, nw_dev)
price_cross_upper = ta.crossover(close, upper)
price_cross_lower = ta.crossunder(close, lower)

其余RSI计算、条件合并逻辑保持不变即可。

内容的提问来源于stack exchange,提问作者Leandro Martin Bado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:47:43