如何移除PineScript指标中连续K线的高亮箭头?
PineScript v5 连续箭头抑制问题解决方案
问题分析
你之前添加连续高亮检测后所有箭头消失,大概率是错误地直接引用绘图函数返回值,或是未用布尔变量正确记录每根K线的触发状态,导致抑制条件逻辑错误,最终所有触发都被过滤。
正确实现方案
核心思路是用独立布尔变量存储每根K线的触发状态,再通过引用前一根K线的状态抑制连续触发。以下是完整可运行代码:
//@version=5 indicator("带连续抑制的做空信号箭头", overlay=true) // 可调整参数 ema_len = input.int(9, title="9周期EMA") stoch_len = input.int(14, title="Stoch周期") stoch_smooth_k = input.int(3, title="Stoch %K平滑") // 计算核心指标 ema9 = ta.ema(close, ema_len) [stoch_k, _] = ta.stoch(close, high, low, stoch_len, stoch_smooth_k, 3) // 1. 定义原始触发条件 is_trigger = low < low[1] and low[1] > ema9 and stoch_k > 80 // 2. 添加连续触发抑制:仅当前触发且上一根未触发时生效 is_valid_trigger = is_trigger and not is_trigger[1] // 绘制向下箭头 plotshape(is_valid_trigger, title="做空箭头", location=location.abovebar, color=color.red, style=shape.arrowdown, size=size.small)
关键逻辑说明
is_trigger:单独存储原始触发条件,避免重复计算,同时方便引用前一根K线的状态is_valid_trigger:在原始条件基础上增加not is_trigger[1]判断,确保仅当当前K线满足条件且前一根K线未满足条件时,才绘制箭头- 通过数组索引
[1]直接访问前一根K线的状态,逻辑清晰且不会出现初始值错误
内容的提问来源于stack exchange,提问作者Baba Niftyanand
相关产品推荐
相关产品推荐

