如何编写检测3根及以上连续红K线的Pine Script策略?
连续红K检测与做多入场逻辑实现
核心需求
做多入场条件:出现3根及以上连续红K线后,在第一根绿K线时触发入场信号。现有基础代码无法实现连续红K的检测逻辑,曾考虑循环但需指定固定长度,希望找到更简洁的实现方式。(感谢用户@kyu23提供的基础代码,以下实现基于原代码做了针对性修改)
解决方案(Pine Script v5)
无需使用循环,利用ta.barssince()函数结合状态判断即可实现需求,代码如下:
//@version=5 indicator("连续红K后绿K入场策略", overlay = true) // 可设置的连续红K数量阈值 consec_red_threshold = input.int(3, title="连续红K数量阈值", minval=1) // 定义K线颜色判断条件 is_red_bar = close < open is_green_bar = close > open // 计算连续红K的数量:统计距离上一根非红K的Bar数 consec_red_count = ta.barssince(not is_red_bar) // 做多入场信号:Bar确认闭合 + 当前是绿K + 上一段连续红K数量≥阈值 long_entry = barstate.isconfirmed and is_green_bar and (consec_red_count >= consec_red_threshold) // 绘制入场信号标记(绿K下方显示向上三角) plotshape(long_entry, style=shape.triangleup, location=location.belowbar, color=color.new(color.green, 0), size=size.small, title="做多入场信号") // 可选:显示连续红K数量(用于验证逻辑) plot(consec_red_count, title="连续红K数量", color=color.new(color.red, 0), display=display.data_window)
代码逻辑说明
consec_red_count = ta.barssince(not is_red_bar):统计从最近一根非红K线到当前的Bar数量,直接反映连续红K的长度(若当前是红K,该值为连续红K数;若当前是绿K,该值为上一段连续红K的总数)long_entry条件:只有当Bar完全闭合(避免信号漂移)、当前是绿K,且上一段连续红K数量达到或超过设定阈值时,才触发做多入场信号- 额外添加的连续红K数量指标,可在数据窗口查看,方便验证逻辑是否符合预期
内容的提问来源于stack exchange,提问作者maxi974
相关产品推荐
相关产品推荐

