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

Pine Script挤压指标优化:如何减少security调用且不删减统计时间帧

Pine脚本性能优化方案

你当前脚本加载慢的核心原因是security调用冗余:resolution_squeeze函数对同一个时间帧会分别调用3次security获取SMA、标准差、TR的SMA数据,叠加你需要查询7-8个时间帧,单次运行就要发起20次以上的跨时间帧数据请求,自然加载速度慢。

可通过以下方法在不减少统计时间帧的前提下大幅提升性能:

  • 合并同一个时间帧的security调用:同一个时间帧仅发起1次请求,一次性返回所有需要的计算源数据,直接将跨时间帧请求次数降到原来的1/3
  • 保留现有if分支逻辑:仅触发当前图表时间帧对应的查询请求,不会发起无效的时间帧调用
  • 为security添加标准参数:添加barmerge.gaps_on和barmerge.lookahead_off参数,既避免未来函数风险,也能提升数据加载稳定性

优化后代码示例

重构后的统计函数

// 注:以下为Pine Script v5版本代码,建议升级到v5获得更好的性能表现
resolution_squeeze(D)=>
    // 单次security调用返回该时间帧下所有需要的源数据,大幅减少请求次数
    [tf_ma, tf_bb, tf_kc] = request.security(syminfo.tickerid, D, [sma(source,length), stdev(source,length), sma(tr,length)], gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off)
    upBB = tf_ma + tf_bb * 2
    lowBB = tf_ma - tf_bb * 2
    upKCWide = tf_ma + tf_kc * 2
    lowKCWide = tf_ma - tf_kc * 2
    upKCNormal = tf_ma + tf_kc * 1.5
    lowKCNormal = tf_ma - tf_kc * 1.5
    upKCNarrow = tf_ma + tf_kc
    lowKCNarrow = tf_ma - tf_kc
    
    // 收缩类型判断
    sqzOnWide  = (lowBB >= lowKCWide) and (upBB <= upKCWide) // 宽收缩:黑色
    sqzOnNormal  = (lowBB >= lowKCNormal) and (upBB <= upKCNormal) // 普通收缩:红色
    sqzOnNarrow  = (lowBB >= lowKCNarrow) and (upBB <= upKCNarrow) // 窄收缩:橙色
    sqzOffWide = (lowBB < lowKCWide) and (upBB > upKCWide) // 宽收缩释放:绿色
    noSqz  = (sqzOnWide == false) and (sqzOffWide == false) // 无收缩:蓝色
    
    // 返回收缩状态颜色
    sq_color = noSqz ? color.blue : sqzOnNarrow ? color.orange : sqzOnNormal ? color.red : sqzOnWide ? color.black : color.lime
    sq_color

时间帧判断逻辑

原有if/else判断逻辑无需修改,直接使用重构后的resolution_squeeze函数即可,不会减少任何需要统计的时间帧。

以上优化完成后,脚本加载速度会有非常明显的提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:15:05