TradingView Pine Script v5 跨周期成交量正负统计实现咨询
Pine Script v5 跨周期正成交量实现方案
以下是符合需求的可运行完整代码:
//@version=5 indicator("1分钟基期正成交量聚合", overlay=false, shorttitle="正成交量", precision=0) // 封装1分钟周期内的正成交量判断逻辑 get_1min_pos_vol() => // 当期1分钟收盘价高于前一期1分钟收盘价时返回当期成交量,否则返回0 close > close[1] ? volume : 0 // 拉取1分钟周期计算结果,关闭未来函数避免数据偏差 min1_pos_vol = request.security(syminfo.tickerid, "1", get_1min_pos_vol(), gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off) // 在当前图表周期聚合对应区间内的所有1分钟正成交量 cycle_total_pos_vol = math.sum(min1_pos_vol, ta.barssince(barstate.isfirst) + 1) // 绘图配置 plot(cycle_total_pos_vol, title="正成交量", color=color.green, style=plot.style_columns) // 可选:叠加总成交量作为对比 plot(volume, title="总成交量", color=color.new(color.gray, 60), style=plot.style_columns, transp=70)
关键逻辑说明
- 将1分钟周期的收盘价对比、成交量归类逻辑封装为独立函数传入
request.security,确保判断过程完全基于1分钟周期运行,不受当前图表周期切换影响 - 新增高周期聚合逻辑,将当前图表单根K线对应时间范围内的所有1分钟正成交量求和,得到高周期维度的展示值
- 显式设置
lookahead=barmerge.lookahead_off,避免未来函数问题,保证回测和实盘数据一致性
原代码问题说明
你之前的实现存在两个核心错误:
- 仅通过
request.security拉取了1分钟成交量值,没有将收盘价对比逻辑放入低周期执行,判断逻辑实际是在当前图表高周期运行,不符合需求 - 没有对1分钟维度的正成交量结果做高周期聚合,导致计算值和展示周期不匹配
扩展说明
如果需要统计负成交量,仅需将get_1min_pos_vol()函数内的判断条件修改为close < close[1]即可。
内容的提问来源于stack exchange,提问作者g1p
相关产品推荐
相关产品推荐

