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

Pine Script绘图异常:大循环下无法精准绘制流动性Wick水平线

Pine Script大循环下流动性Wick水平线不显示的原因解析

这个Pine Script脚本用来给没被突破的前期流动性Wick最高点画向右延伸的水平线,但运行时出了问题:

  • 循环范围设成for i=0 to 4998时,图表红框里的早期蜡烛区域没生成预期的水平线;
  • 改成for i=0 to 300后,前300根蜡烛的水平线能正常显示,只是后面的蜡烛没覆盖到。

脚本代码:

//@version=5
indicator("Liquidity Profiling", overlay = true, max_bars_back = 4999)
highs = request.security(syminfo.tickerid, timeframe.period, high)

prevH = 0.0
currH = nz(highs[0])

if barstate.islast
    for i=0 to 4998
        if currH >= prevH
            line.new(bar_index-i, high[i], bar_index+1, high[i], extend = extend.right, color=color.white, width = 1)
            prevH := currH
        
        currH := nz(highs[i+1])

问题原因

  • 线条数量超平台限制:Pine Script对单个脚本能创建的line线条数量有上限,一般远少于4999条。大循环下脚本要创建的线条太多,超过了平台允许的数量,系统会自动删掉一部分早期生成的线条,导致前部分蜡烛的水平线显示不出来。缩小到300的循环范围后,线条数量在限制内,所以前300根的线条能正常保留。
  • 遍历逻辑搞反了判断方向:脚本从当前K线往前遍历历史K线,currH取的是更早K线的高点,判断条件currH >= prevH其实是在找比后面K线高点还高的历史高点。当遍历范围扩大到4998时,大部分早期高点早就被后面的价格突破了,不符合绘制条件,自然不会生成水平线;而缩小到300时,近期没被突破的高点更多,所以能显示不少线条。
  • 多余的request.security拖慢性能:脚本里request.security(syminfo.tickerid, timeframe.period, high)完全没必要,直接用high就能拿到当前品种当前周期的高点数据。这个冗余调用会增加脚本运行负担,大循环时更明显,间接影响线条的正常绘制。

内容的提问来源于stack exchange,提问作者Ali Azlan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:46:24