如何在RSI上穿70后3根K线过后高亮其超买区域?
RSI指标延迟高亮需求

希望高亮RSI指标中数值超过70的区域,但高亮需在RSI上穿70后3根K线走完才开始。已知如何在RSI超过70时直接高亮,但无法实现延迟3根K线的高亮效果。
当前代码
//@version=5 indicator(title="Relative Strength Index", shorttitle="RSI") rsi = ta.rsi(close,14) l_60 = 60 l_40 = 40 ob = rsi > 60 ? rsi : l_60 os = rsi < 40 ? rsi : l_40 p1 = plot(series=l_60, color=color.new(#FF5252,20), linewidth=1) p2 = plot(series=ob, color=color.new(#FF5252,20), linewidth=1) p3 = plot(series=l_40, color=color.new(#4CAF50,20), linewidth=1) p4 = plot(series=os, color=color.new(#4CAF50,20), linewidth=1) fill(p1, p2, color=color.new(#4CAF50,10)) fill(p3, p4, color=color.new(#FF5252,10)) plot(rsi, "RSI", color=#7E57C2)
补充需求
如果上述延迟高亮区域的需求无法实现,使用矩形框是否可行?不清楚如何用Pine Script绘制矩形框,请问如何绘制从RSI上穿70后第3根K线开始的矩形框?
解决方案1:延迟填充高亮区域
通过检测RSI上穿信号并计数K线数量,实现延迟3根K线后的高亮效果,修改后的代码如下:
//@version=5 indicator(title="RSI 延迟高亮", shorttitle="RSI Delay Highlight") rsi = ta.rsi(close, 14) overbought_level = 70 // 检测RSI上穿70的信号 crossover_rsi_70 = ta.crossover(rsi, overbought_level) // 记录上穿信号后的K线数量 bars_since_crossover = ta.barssince(crossover_rsi_70) // 延迟3根K线后,且当前RSI仍在70上方时触发高亮 delay_trigger = bars_since_crossover >= 3 and rsi > overbought_level // 定义用于填充的上下线 ob_upper = delay_trigger ? rsi : overbought_level ob_lower = overbought_level // 绘制参考线和填充区域 p_upper = plot(ob_upper, color=color.new(#FF5252, 20), linewidth=1) p_lower = plot(ob_lower, color=color.new(#FF5252, 20), linewidth=1) fill(p_upper, p_lower, color=color.new(#FF5252, 10)) // 绘制RSI主线和超买线 plot(rsi, "RSI", color=#7E57C2) hline(overbought_level, "超买线", color=color.red)
解决方案2:绘制延迟触发的矩形框
使用box.new()函数实现延迟矩形高亮,代码如下:
//@version=5 indicator(title="RSI 延迟矩形高亮", shorttitle="RSI Delay Box") rsi = ta.rsi(close, 14) overbought_level = 70 // 检测RSI上穿70的信号 crossover_rsi_70 = ta.crossover(rsi, overbought_level) // 记录上穿信号的K线索引 var int crossover_bar_index = na if crossover_rsi_70 crossover_bar_index = bar_index // 延迟3根K线后创建矩形 if bar_index == crossover_bar_index + 3 highlight_box = box.new(left=bar_index, top=rsi, right=bar_index, bottom=overbought_level, color=color.new(#FF5252, 80), border_color=color.red) // 当RSI仍在70上方时,扩展矩形到当前K线 if rsi > overbought_level and not na(crossover_bar_index) and bar_index > crossover_bar_index + 3 box.set_right(highlight_box, bar_index) // 当RSI下穿70时,重置信号标记 if ta.crossunder(rsi, overbought_level) crossover_bar_index := na // 绘制RSI主线和超买线 plot(rsi, "RSI", color=#7E57C2) hline(overbought_level, "超买线", color=color.red)
内容的提问来源于stack exchange,提问作者Tuff Fish
相关产品推荐
相关产品推荐

