请求协助:在RSI上穿/下穿区间时添加文字标注
解决Pine Script双RSI合并及交叉标注问题
核心思路
要实现双RSI合并+区间交叉文字标注,得先把交叉信号的触发逻辑找对——你之前修改的up是RSI计算的中间变量,和区间交叉信号没有直接关联,自然不会生效。正确的做法是:先算出两个RSI,再监测它们与目标区间的交叉关系,最后在信号触发点添加文字标注。
修改后的完整代码示例
//@version=5 indicator("双RSI合并带标注", overlay=false) // 输入参数:两个RSI的自定义设置 rsiLength1 = input.int(14, title="RSI1周期") rsiSource1 = input(close, title="RSI1数据源") rsiLength2 = input.int(9, title="RSI2周期") rsiSource2 = input(close, title="RSI2数据源") // 区间阈值设置(可自定义) overbought = input.int(70, title="超买阈值") oversold = input.int(30, title="超卖阈值") // 计算两个RSI的值 rsi1 = ta.rsi(rsiSource1, rsiLength1) rsi2 = ta.rsi(rsiSource2, rsiLength2) // 合并显示:同时展示两条RSI线+合并均值线(可按需调整) plot(rsi1, color=color.blue, title="RSI1") plot(rsi2, color=color.red, title="RSI2") plot((rsi1+rsi2)/2, color=color.green, title="合并RSI", linewidth=2) // 检测交叉信号 // RSI上穿超卖区间(上行趋势信号) crossOversold1 = ta.crossover(rsi1, oversold) crossOversold2 = ta.crossover(rsi2, oversold) crossOversoldMerge = ta.crossover((rsi1+rsi2)/2, oversold) // RSI下穿超买区间(下行趋势信号) crossOverbought1 = ta.crossunder(rsi1, overbought) crossOverbought2 = ta.crossunder(rsi2, overbought) crossOverboughtMerge = ta.crossunder((rsi1+rsi2)/2, overbought) // 添加文字标注(调整垂直偏移避免重叠) // RSI1的信号标注 if crossOversold1 label.new(bar_index, oversold, "RSI1上穿超卖", color=color.green, textcolor=color.white, style=label.style_label_up) if crossOverbought1 label.new(bar_index, overbought, "RSI1下穿超买", color=color.red, textcolor=color.white, style=label.style_label_down) // RSI2的信号标注 if crossOversold2 label.new(bar_index, oversold-3, "RSI2上穿超卖", color=color.green, textcolor=color.white, style=label.style_label_up) if crossOverbought2 label.new(bar_index, overbought+3, "RSI2下穿超买", color=color.red, textcolor=color.white, style=label.style_label_down) // 合并RSI的信号标注 if crossOversoldMerge label.new(bar_index, oversold-6, "合并RSI上穿超卖", color=color.green, textcolor=color.white, style=label.style_label_up) if crossOverboughtMerge label.new(bar_index, overbought+6, "合并RSI下穿超买", color=color.red, textcolor=color.white, style=label.style_label_down) // 绘制区间参考线 hline(overbought, "超买线", color=color.gray) hline(oversold, "超卖线", color=color.gray)
关键说明
- 信号触发逻辑:用
ta.crossover(上穿)和ta.crossunder(下穿)函数直接判断RSI值与区间阈值的交叉,这才是触发标注的正确位置。 - 标注优化:给不同RSI的标注设置了垂直偏移(如
oversold-3),避免多个标注重叠遮挡。 - 合并方式可选:代码提供了单独显示两条RSI线、合并均值线两种展示方式,可根据需求删减调整。
- 原修改无效原因:
up = ta.rma(...)是RSI内部计算上涨动能的中间步骤,这个变量的变化和区间交叉没有直接关联,所以在该位置添加逻辑无法触发标注。
内容的提问来源于stack exchange,提问作者rony sen
相关产品推荐
相关产品推荐

