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

如何通过security_lower_tf获取前3日1小时成交量数据而非当日数据

解决日线框架下获取过去三日1小时成交量异动数据的问题

你当前用request.security_lower_tf只能拿到当前日线bar对应的小时数据,因为这个函数是把低时间框架的序列嵌入到当前主图的单个bar里,没法获取历史日线bar对应的小时数据。要实现获取过去三日的1小时成交量异动(和日线逻辑一致),得换个思路:先在1小时图层面计算好每日的成交量异动指标,再把这些每日聚合后的数据拉到日线图里。

以下是修改后的代码,完全匹配你的日线量能异动逻辑,同时能获取过去三日的1小时级别数据:

//@version=5
indicator("Hourly Vol Buzz (Past 3 Days)", overlay=false)

// 1小时时间框架内计算每日成交量异动(和日线逻辑对齐)
f_calculate_hourly_vol_buzz() =>
    // 计算1小时图上的50周期成交量均线
    avg_vol_hour = ta.sma(volume, 50)
    // 汇总当日所有小时的成交量总和
    daily_total_vol = ta.summation(volume, ta.barssince(timeframe.change("D")) + 1)
    // 计算过去50个交易日的每日总成交量均线
    avg_daily_hour_vol = ta.sma(daily_total_vol, 50)
    // 计算相对异动值,和日线公式一致:(当日量/50日平均量)*100 - 100
    rel_vol_hour = daily_total_vol / avg_daily_hour_vol * 100 - 100
    // 只在每日最后一根小时K线输出结果,避免重复数据
    rel_vol_hour := timeframe.change("D") ? na : rel_vol_hour
    rel_vol_hour

// 从1小时图拉取每日的成交量异动数据
hourly_vol_buzz = request.security(syminfo.tickerid, "60", f_calculate_hourly_vol_buzz())

// 用数组保存最近3日的1小时异动数据
var array<float> hourly_vol_buzz_array = array.new_float()
if barstate.isnew
    array.push(hourly_vol_buzz_array, hourly_vol_buzz)
    // 只保留最近3条数据,避免数组过大
    if array.size(hourly_vol_buzz_array) > 3
        array.shift(hourly_vol_buzz_array)

// 提取过去三日的具体数据
past_1d_hour_buzz = array.size(hourly_vol_buzz_array) >= 1 ? array.get(hourly_vol_buzz_array, array.size(hourly_vol_buzz_array)-1) : na
past_2d_hour_buzz = array.size(hourly_vol_buzz_array) >= 2 ? array.get(hourly_vol_buzz_array, array.size(hourly_vol_buzz_array)-2) : na
past_3d_hour_buzz = array.size(hourly_vol_buzz_array) >= 3 ? array.get(hourly_vol_buzz_array, array.size(hourly_vol_buzz_array)-3) : na

// 原日线量能异动代码保留
avgvol = ta.sma(volume, 50)
curvol = volume
relvol = curvol / avgvol * 100 - 100

// 可视化输出
plot(relvol, title="日线量能异动", color=color.blue, linewidth=2)
plot(past_1d_hour_buzz, title="昨日1小时量能异动", color=color.red, linewidth=2)
plot(past_2d_hour_buzz, title="前日1小时量能异动", color=color.orange, linewidth=2)
plot(past_3d_hour_buzz, title="大前日1小时量能异动", color=color.green, linewidth=2)

关键逻辑说明

  1. 低时间框架聚合:在1小时图里先计算每日的总成交量,再按照日线的异动公式算出每日的1小时级别异动值,确保逻辑完全对齐。
  2. 跨时间框架拉取:用request.security把1小时图里的每日异动值拉到日线图,这样日线图的每个bar就对应前一日的1小时异动数据。
  3. 数组保存历史数据:通过数组存储最近3日的异动值,方便直接调用过去三日的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 06:34:55