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
相关产品推荐
相关产品推荐

