You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求修改Pine Script指标:破线后延迟5根K线删除画线

Pine Script v5 修改方案

以下是满足需求的完整修改代码,实现了形态识别画线、破线改样式、延迟5根K线删除的逻辑:

//@version=5
indicator("NHNHNHNH", overlay = true)
Kol_Linii = input(2, "Количество линий")

// 原信号条件保留
Signal = open[3] < close[3] and open[2] < close[2] and open[1] < close[1] and close < open and high[1] > high and high[1] > close[1] and high > open

// 新增平行数组跟踪线条状态
var ArrayLine = array.new_line()
var isLineBroken = array.new_bool()  // 标记线条是否已被跌破
var breakBarIndex = array.new_int()   // 记录跌破时的K线索引

if Signal
    // 创建新线条并初始化状态
    LINIA = line.new(bar_index, high, bar_index + 1, high, extend = extend.right, color = color.fuchsia, width = 1)
    array.push(ArrayLine, LINIA)
    array.push(isLineBroken, false)
    array.push(breakBarIndex, na)
    // 保留原标签逻辑
    label.new(bar_index, close, str.tostring(array.size(ArrayLine))+" : " + str.tostring(high), color= color.white, yloc=yloc.abovebar)

// 遍历处理每条线条的状态
if array.size(ArrayLine) > 0
    Complete = false
    Index = array.size(ArrayLine) - 1
    while not(Complete)
        Line = array.get(ArrayLine, Index)
        lineY = line.get_y1(Line)
        broken = array.get(isLineBroken, Index)
        breakBar = array.get(breakBarIndex, Index)
        
        // 首次跌破:修改线条样式并记录破线位置
        if not broken and close < lineY
            line.set_color(Line, color.orange)
            line.set_style(Line, line.style_dashed)
            array.set(isLineBroken, Index, true)
            array.set(breakBarIndex, Index, bar_index)
        // 破线后第5根K线收盘:删除线条
        elif broken and bar_index >= breakBar + 4
            line.delete(Line)
            array.remove(ArrayLine, Index)
            array.remove(isLineBroken, Index)
            array.remove(breakBarIndex, Index)
        
        Index := Index - 1
        if Index < 0
            Complete := true

关键逻辑说明

  1. 状态跟踪:通过isLineBroken和breakBarIndex两个平行数组,为每条线条单独记录是否破线、破线时的K线位置,解决了单线条状态无法区分的问题
  2. 破线触发:仅当线条未标记过破线且收盘价跌破时,才修改样式(避免重复触发)
  3. 延迟删除:破线K线为第1根,第5根K线对应索引为breakBar + 4(例如破线在bar 100,第5根是bar 104),当当前K线达到该索引时执行删除
  4. 遍历安全:从数组末尾往前遍历,避免删除元素后导致的索引错位问题

内容的提问来源于stack exchange,提问作者Роман Костюк

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 15:14:55