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

如何用Pine Script计算交易日04:00-20:00时段5分钟K线平均成交量

Pine Script 实现指定时段(04:00-20:00)内5分钟K线平均成交量计算

核心思路

要准确定义04:00-20:00的交易时段,需用精确时间戳判断替代单纯的小时函数,同时通过变量持久化累计成交量与K线数量,在每个新交易日触发重置。

完整代码

//@version=5
indicator("04-20时段5分钟K线平均成交量", overlay=false, shorttitle="时段均量")

// 定义当日04:00和20:00的时间戳
sessionStart = timestamp(year, month, dayofmonth, 4, 0)
sessionEnd = timestamp(year, month, dayofmonth, 20, 0)

// 判断当前K线是否在目标时段内
isInTargetSession = time >= sessionStart and time < sessionEnd

// 初始化持久化变量:累计成交量、K线计数
var float totalVolume = 0.0
var int barCounter = 0

// 新交易日触发重置
if ta.change(time("D"))
    totalVolume := 0.0
    barCounter := 0

// 符合时段条件时累加数据
if isInTargetSession
    totalVolume += volume
    barCounter += 1

// 计算平均成交量(避免除以0)
averageVolume = barCounter > 0 ? totalVolume / barCounter : na

// 输出结果
plot(averageVolume, title="平均成交量", color=color.new(color.blue, 0), linewidth=2)
hline(0, "基准线", color=color.gray, linestyle=hline.style_dashed)

关键细节说明

  • 精确时段判断:使用timestamp()生成当日4:00和20:00的时间戳,直接对比当前K线的time值,避免了hour()函数在非1小时周期下的模糊性(比如5分钟K线的hour可能对应开盘/收盘时间)。
  • 变量持久化:var关键字确保totalVolume和barCounter在脚本运行过程中不会被逐K线重置,仅在新交易日(通过ta.change(time("D"))检测日期变化)时清零。
  • 边界处理:通过barCounter > 0判断后再计算平均值,避免出现除以0的错误。

调整建议

如果需要包含20:00整的K线,只需将时段判断条件修改为:

isInTargetSession = time >= sessionStart and time <= sessionEnd

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:48:21