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

Pine Script实现价格触碰后自动停止箱体延伸的方法

Pine Script 箱体碰边自动停止延伸实现方案

箱体绘制参考效果

原有代码逻辑

OBS = box.new(left=bar_index[2], top=high[2], right=bar_index + 1, bottom=low[2], bgcolor=color.new(color.red, 70), border_width=0, extend=extend.right) 
box.set_extend(id=OBS[1], extend=extend.none) 

原有代码仅会将上一周期生成的箱体强制设置为不延伸状态,没有加入价格触碰边界的判断逻辑,无法实现「箱体持续右延,价格触碰边界后自动停止」的需求。

实现思路

  • 新箱体创建时默认开启向右延伸属性,同时将箱体ID、对应上下边界值存入活跃监控列表
  • 每根K线遍历所有处于延伸状态的箱体,检测当前K线价格是否触碰箱体上下沿
  • 检测到触碰行为后,立刻将对应箱体的延伸属性关闭,同时将其移出活跃监控列表,避免重复判断消耗性能

完整可运行代码

//@version=5
indicator("碰边停延伸箱体", overlay=true, shorttitle="AutoStopBox")

// 存储活跃(持续延伸中)箱体的ID、上沿价格、下沿价格
var activeBoxList = array.new<box>()
var activeBoxTop = array.new<float>()
var activeBoxBottom = array.new<float>()

// 按原有逻辑生成新箱体(K线确认后生成,避免重绘)
if barstate.isconfirmed
    newOBS = box.new(
         left=bar_index[2], 
         top=high[2], 
         right=bar_index + 1, 
         bottom=low[2], 
         bgcolor=color.new(color.red, 70), 
         border_width=0, 
         extend=extend.right
    )
    // 新箱体加入活跃监控队列
    array.unshift(activeBoxList, newOBS)
    array.unshift(activeBoxTop, high[2])
    array.unshift(activeBoxBottom, low[2])

// 遍历检测所有活跃箱体的触碰情况
for i = array.size(activeBoxList) - 1 downto 0
    checkBox = array.get(activeBoxList, i)
    boxTopVal = array.get(activeBoxTop, i)
    boxBottomVal = array.get(activeBoxBottom, i)

    // 触碰判定:K线最高价触及/突破上沿,或K线最低价触及/跌破下沿
    isHit = high >= boxTopVal or low <= boxBottomVal
    if isHit
        box.set_extend(checkBox, extend=extend.none)
        // 移出监控列表,后续不再检测
        array.remove(activeBoxList, i)
        array.remove(activeBoxTop, i)
        array.remove(activeBoxBottom, i)

效果说明

  • 箱体样式和原有逻辑保持一致,为红色半透明无边框效果
  • 箱体生成后会持续向右延伸,直到价格触碰上下边界才会停止
  • 仅在K线确认后生成箱体、做触碰判定,不会出现盘中信号重绘问题
  • 已停止延伸的箱体不会被重复遍历检测,脚本运行流畅无额外性能损耗

内容的提问来源于stack exchange,提问作者Việt Hòa Đinh Nguyễn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:42:18