TradingView初始平衡指标绘图修正:解决低周期显示与回溯问题
问题解决:Initial Balance Pivots指标低周期异常与回溯周期设置问题
核心问题
- 低周期(15分钟、30分钟等)图表中IB区间及扩展位显示异常,数值频繁变动
- 定义的
lookback回溯周期参数未生效,所有历史IB线均显示导致图表杂乱
修改后的完整代码
//@version=5 indicator(title="Initial Balance Pivots", shorttitle="IB-Pivots", overlay=true) // 回溯周期设置:仅显示最近N个交易日的IB及扩展位 lookback = input.int(title="Initial Balance Lookback Period", defval=3, minval=1) // -------------------------- // 修复:正确计算当日初始平衡(IB)区间 // -------------------------- // 创建常规交易时段的日度ticker daily_ticker = ticker.new(syminfo.prefix, syminfo.ticker, session=session.regular) // 提取当日开盘后第一个小时的高低点作为IB区间(可根据交易时段调整时间范围) ib_high = request.security(daily_ticker, "60", ta.valuewhen(time("60") == session.regular + "0900-1000", high, 0), gaps=barmerge.gaps_off) ib_low = request.security(daily_ticker, "60", ta.valuewhen(time("60") == session.regular + "0900-1000", low, 0), gaps=barmerge.gaps_off) // 计算IB区间跨度及扩展位 ib_span = ib_high - ib_low ib_median = ib_low + ib_span / 2 // 下方支撑扩展位 sa = ib_low - (0.5 * ib_span) sb = ib_low - ib_span sc = ib_low - (1.5 * ib_span) sd = ib_low - (2 * ib_span) se = ib_low - (3 * ib_span) sf = ib_low - (4 * ib_span) sg = ib_low - (4.5 * ib_span) // 上方阻力扩展位 ra = ib_high + (0.5 * ib_span) rb = ib_high + ib_span rc = ib_high + (1.5 * ib_span) rd = ib_high + (2 * ib_span) re = ib_high + (3 * ib_span) rf = ib_high + (4 * ib_span) rg = ib_high + (4.5 * ib_span) // -------------------------- // 修复:回溯周期控制逻辑 // -------------------------- // 跟踪当前交易日的起始K线索引 current_day_start = ta.barssince(time("D") != time("D")[1]) // 计算回溯周期的起始交易日索引 lookback_start = ta.barssince(time("D") != time("D")[lookback]) // 仅显示当前及回溯范围内的交易日线条 show_lines = current_day_start >= 0 and current_day_start <= lookback_start // -------------------------- // 绘制IB区间及扩展位 // -------------------------- // IB高低位 plot(show_lines ? ib_high : na, title="IB High", color=color.fuchsia, style=plot.style_line, linewidth=2) plot(show_lines ? ib_low : na, title="IB Low", color=color.fuchsia, style=plot.style_line, linewidth=2) // IB中位线 plot(show_lines ? ib_median : na, title="IB Median", color=color.black, style=plot.style_line, linewidth=1) // 上方阻力扩展位 plot(show_lines ? ra : na, title="IB High Extension 1", color=color.red, linewidth=2) plot(show_lines ? rb : na, title="IB High Extension 2", color=color.red, linewidth=2) plot(show_lines ? rc : na, title="IB High Extension 3", color=color.red, linewidth=2) plot(show_lines ? rd : na, title="IB High Extension 4", color=color.red, linewidth=2) plot(show_lines ? re : na, title="IB High Extension 5", color=color.red, linewidth=2) plot(show_lines ? rf : na, title="IB High Extension 6", color=color.red, linewidth=2) plot(show_lines ? rg : na, title="IB High Extension 7", color=color.red, linewidth=2) // 下方支撑扩展位 plot(show_lines ? sa : na, title="IB Low Extension 1", color=color.green, linewidth=2) plot(show_lines ? sb : na, title="IB Low Extension 2", color=color.green, linewidth=2) plot(show_lines ? sc : na, title="IB Low Extension 3", color=color.green, linewidth=2) plot(show_lines ? sd : na, title="IB Low Extension 4", color=color.green, linewidth=2) plot(show_lines ? se : na, title="IB Low Extension 5", color=color.green, linewidth=2) plot(show_lines ? sf : na, title="IB Low Extension 6", color=color.green, linewidth=2) plot(show_lines ? sg : na, title="IB Low Extension 7", color=color.green, linewidth=2) // -------------------------- // 修复:前一交易日高低点绘制 // -------------------------- res = input(title="Resolution", defval="D") yesterday_high = request.security(daily_ticker, res, high[1], gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off) yesterday_low = request.security(daily_ticker, res, low[1], gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_off) // 仅在回溯范围内显示昨日高低点 plot(show_lines ? yesterday_high : na, color=color.red, style=plot.style_cross, linewidth=2) plot(show_lines ? yesterday_low : na, color=color.green, style=plot.style_cross, linewidth=2)
关键修复说明
低周期异常修复:
- 改用日度ticker结合小时级时间过滤,精准锁定当日开盘后第一个小时的高低点作为IB区间,确保在任何周期下IB值稳定,不会随低周期K线波动。
- 关闭
lookahead参数,避免引入未来数据,保证指标信号的客观性。
回溯周期生效:
- 通过交易日索引跟踪,仅绘制当前交易日及最近
lookback个交易日的IB线条,彻底解决图表杂乱问题。
- 通过交易日索引跟踪,仅绘制当前交易日及最近
代码优化:
- 统一ticker定义,减少重复逻辑;简化新日判断逻辑,提升代码可读性。
内容的提问来源于stack exchange,提问作者Krishnendu Bhattacharyya
相关产品推荐
相关产品推荐

