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

Pine Script:Initial Balance叠加层line函数不显示问题修复求助

修复Pine Script中line函数绘制Initial Balance不显示的问题

问题分析

原代码存在几个核心问题导致line函数无法正常显示图形:

  • 每根K线都调用line.new()创建仅覆盖当前bar的单像素短线,视觉上几乎不可见
  • 未使用var关键字持久化线条对象,无法跨bar更新线条的终点位置
  • 跨周期获取IB高低点的逻辑错误,未正确定位日内第一根60分钟K线的高低点

修复后的代码

//@version=5
indicator(title="Initial Balance New & Updated", shorttitle = "IB", overlay = true)

// 定义日内第一根60分钟K线的条件
is_first_hour_bar = request.security(syminfo.tickerid, "60", bar_index == ta.barssince(time("D") != time("D")[1]))

// 仅在新交易日初始化IB高低点
var float ibh = na
var float ibl = na
if ta.change(time("D"))
    ibh := request.security(syminfo.tickerid, "60", high)
    ibl := request.security(syminfo.tickerid, "60", low)

// 持久化线条对象,仅初始化一次
var line ib_high_line = na
var line ib_low_line = na

// 新交易日时创建/重置线条
if ta.change(time("D"))
    // 先删除旧线条避免堆积
    if not na(ib_high_line)
        line.delete(ib_high_line)
    if not na(ib_low_line)
        line.delete(ib_low_line)
    // 创建新线条,从日内第一根K线的bar_index开始
    first_hour_bar_idx = request.security(syminfo.tickerid, "60", bar_index)
    ib_high_line := line.new(first_hour_bar_idx, ibh, bar_index, ibh, extend=extend.right, color=color.purple, style=line.style_solid, width=1)
    ib_low_line := line.new(first_hour_bar_idx, ibl, bar_index, ibl, extend=extend.right, color=color.purple, style=line.style_solid, width=1)
else
    // 非交易日更新线条的终点到当前bar
    if not na(ib_high_line)
        line.set_x2(ib_high_line, bar_index)
    if not na(ib_low_line)
        line.set_x2(ib_low_line, bar_index)

// IB Delta计算与表格显示
ib_delta = ibh - ibl

var table ib_analytics = table.new(position.bottom_left, 2, 6)
table.cell(ib_analytics, 0, 0, "IB Delta", bgcolor=color.black, text_color=color.white)
table.cell(ib_analytics, 0, 4, "Today", bgcolor=color.black, text_color=color.white)
table.cell(ib_analytics, 1, 4, str.tostring(ib_delta, "#.##"), bgcolor=color.black, text_color=color.white)

关键修复说明

  • 持久化线条对象:用var声明ib_high_line和ib_low_line,确保线条不会随每根K线重建,而是持续存在并更新
  • 正确获取IB高低点:在新交易日触发时,直接获取60分钟周期第一根K线的高低点,避免原代码中跨周期逻辑错误
  • 动态更新线条:新交易日创建线条并设置起点为日内第一根60分钟K线的位置,后续每根K线更新线条的终点到当前bar,同时支持向右延伸
  • 清理旧线条:每个新交易日删除上一交易日的旧线条,避免图表上线条堆积

内容的提问来源于stack exchange,提问作者Krishnendu Bhattacharyya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:35:19