TradingView Pine Script需求:近5根K线内包K线标记图形/标签
解决内包K线检测与标记问题
原代码存在的问题
- 逻辑偏离需求:原for循环将当前K线与过去5根逐一对比,只要内包其中任意一根就标记,而非内包过去5根的整体区间;且重复创建标签,导致标记混乱。
- 标记位置错误:标签设置在K线低点下方,不符合“顶部绘制”的要求。
- 冗余无效代码:后半段
second_candle相关逻辑毫无意义(close几乎不会为0),后续的inside_bar仅对比前一根K线,完全不满足“过去5根”的检测条件。
修正后的代码
//@version=5 indicator("内包K线标记", overlay=true) // 计算过去5根K线(不含当前)的最高高点和最低低点 past5_high = ta.highest(high[1], 5) past5_low = ta.lowest(low[1], 5) // 判断当前K线是否为内包K线(完全处于过去5根的区间内) is_inside_bar = high < past5_high and low > past5_low // 在K线顶部绘制文本标签 if is_inside_bar label.new(bar_index, high, "内包", yloc=yloc.abovebar, textcolor=color.white, color=color.red, style=label.style_label_down) // 可选:在K线顶部绘制图形标记(橙色向下三角形) plotshape(is_inside_bar, location=location.abovebar, style=shape.triangledown, color=color.orange, size=size.small)
代码说明
ta.highest(high[1],5)和ta.lowest(low[1],5):精准获取过去5根K线的区间极值(排除当前K线,避免干扰)。is_inside_bar:严格判断当前K线是否完全被过去5根的区间包裹,符合需求定义的内包K线。- 提供两种标记方式:文本标签和图形标记,可根据视觉偏好选择或同时使用。
内容的提问来源于stack exchange,提问作者bengaltiger
相关产品推荐
相关产品推荐

