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

Pine Script中for循环运行异常 平均持仓量指标绘图结果不符合预期

问题原因分析
  • 持久化变量未清零:你用var声明的totaloi是全局持久化变量,只会在指标第一次加载时初始化一次,后续每根K线执行for循环时,都会沿用上一根K线计算完的totaloi值持续累加,不会重置为0,自然会出现数值持续递增的问题。
  • 累加逻辑重复:你在循环内先把单年持仓量加到totaloi,又把累计后的totaloi加到总和y里,相当于做了重复累计,最终结果不是各年度持仓量的和,而是累计值的和,完全偏离平均持仓的计算目标。
  • 循环计数与分母不匹配:你的循环范围是i=0 to lookback*52 step 52,最终会取到lookback+1个样本点(包含当前最新的持仓值),但你最后除以的是lookback,平均值计算分母错误。
  • 存在冗余变量:代码中声明的xx、z两个变量完全没有被使用,属于无效代码。
修复后代码
openint   = security("QUANDL:CFTC/"+code+"|0", "D", close) 

float sum_oi = 0.0
// 循环取过去lookback年的同期持仓量累加
for i = 1 to lookback
    sum_oi := sum_oi + nz(openint[i*52])

// 计算平均值
avg_oi = sum_oi / lookback

plot(avg_oi, title="平均持仓量")
补充说明

如果需要把当前年度的持仓量也纳入平均值计算,把循环起始值改为0,同时把分母改为lookback+1即可。

内容的提问来源于stack exchange,提问作者Ben C-H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:45:03