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

Pine Script v5:日均成交量计算结果异常问题排查

问题分析与解决方案

你的代码存在两处关键问题,导致计算结果错误且跨时间框架不一致:

1. math.sum 用法错误

math.sum() 的参数要求第一个是数值序列/数组,第二个参数是求和的长度(可选)。而你写的 math.sum(dVol[1], dailyLookback) 中,dVol[1] 只是单根日K线的成交量(单个数值),并非过去30天的成交量序列。这会导致求和结果就是 dVol[1] 本身,再除以30得到错误的均值。

2. 无法获取完整的30日成交量数据

通过 request.security 获取的 dVol,在非日线时间框架下,dVol[1] 仅指向前一根日K线的成交量,无法覆盖过去30天的完整数据范围,所以不同时间框架下的结果会出现差异。


修正后的代码方案

方案一:在日线级别直接计算均值(推荐)

将30日均量的计算逻辑放在request.security的日线上下文里,直接拉取计算好的结果,避免跨周期数据处理的问题:

dailyLookback = input(30, "Daily Lookback", group = "Vol Settings", inline = "Volume Settings")

// 在日线级别计算30日简单移动平均成交量,再拉取到当前周期
dAvgVol = request.security(syminfo.tickerid, "D", ta.sma(volume, dailyLookback))

方案二:获取30日成交量数组后计算均值

如果需要对成交量数据做更多自定义处理,可以先获取过去30天的日线成交量数组,再计算平均值:

dailyLookback = input(30, "Daily Lookback", group = "Vol Settings", inline = "Volume Settings")

// 初始化存储成交量的数组
var dVolArray = array.new_float(dailyLookback)
// 在日线级别更新数组,始终保留最新的30根日K成交量
request.security(syminfo.tickerid, "D", array.unshift(dVolArray, volume))

// 计算数组的平均值
dAvgVol = array.avg(dVolArray)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:25:24