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

处理request.security_lower_tf获取1分钟K线数组时的缺失值问题

问题描述

在高时间框架图表(如5分钟)处理更低时间框架(如1分钟)K线时,使用request.security_lower_tf(syminfo.tickerid, '1', close)理论上应返回对应高时间框架单根K线内所有低时间框架K线的数组(比如5分钟对应5个1分钟K线值),但实际中即使高流动性标的也会出现低时间框架K线缺失的情况,导致数组大小不固定(比如部分5分钟K线仅对应3-4个1分钟K线)。

以下代码可复现该问题(在XLK标的5分钟图表上绘制对应1分钟K线数量):

indicator("No of 1 min bars")

array_1min_close  = request.security_lower_tf(syminfo.tickerid, '1', close)   // 获取所有1分钟收盘价
num_1min_bars     = array.size(array_1min_close)                             // 获取数组大小,即1分钟K线总数

plot(num_1min_bars, title="# of 1 min bars", color=color.yellow)              // 绘制1分钟K线数量

这种缺失会引发两个问题:

  • 数组大小不统一,调用预期索引(如5元素数组的索引3、4)时常报错;
  • 数组内低时间框架K线的位置偏移,缺失的K线不会用na填充,后续K线会前移占据缺失位置,导致无法准确调用对应顺序的子K线。

需要实现:

  • 生成固定大小的数组,缺失的低时间框架K线在对应位置用na填充;
  • 适配所有大于1分钟的时间框架,比如5分钟图表始终返回5元素数组,30分钟图表始终返回30元素数组。
解决方案

核心思路

通过计算当前高时间框架K线的时间范围,遍历该范围内所有预期的低时间框架K线时间点,逐个获取对应收盘价,缺失则填充na,从而生成固定大小的标准数组。

适配任意时间框架的实现代码

indicator("Fixed Size Lower TF Bars", overlay=false)

// 定义低时间框架(这里用1分钟,可按需修改)
lower_tf = "1"
// 计算高时间框架与低时间框架的倍数(如5分钟/1分钟=5)
tf_multiplier = timeframe.multiplier / tonumber(lower_tf)

// 获取当前高时间框架K线的起始和结束时间
current_bar_start = time
current_bar_end = time + timeframe.multiplier * 60 * 1000

// 初始化固定大小的数组
fixed_size_array = array.new_float(size=tf_multiplier, initial_value=na)

// 遍历每个预期的低时间框架K线时间点
for i = 0 to tf_multiplier - 1
    // 计算当前低时间框架K线的起始时间
    lower_tf_bar_start = current_bar_start + i * tonumber(lower_tf) * 60 * 1000
    // 获取该时间点对应的低时间框架收盘价
    lower_tf_close = request.security(syminfo.tickerid, lower_tf, close, lookahead=barmerge.lookahead_on, gaps=barmerge.gaps_on)
    // 将值存入数组对应位置
    array.set(fixed_size_array, i, lower_tf_close)

// 示例:绘制数组内的第3个1分钟K线值(索引2)
plot(array.get(fixed_size_array, 2), title="3rd 1min Close", color=color.blue)
// 绘制数组大小(验证是否固定)
plot(array.size(fixed_size_array), title="Fixed Array Size", color=color.red)

代码说明

  • 固定数组大小:通过timeframe.multiplier / tonumber(lower_tf)计算高/低时间框架的倍数,以此确定数组的固定大小;
  • 时间匹配填充:遍历每个预期的低时间框架K线起始时间,用request.security精准获取对应时间的收盘价,若该时间点无K线则自动返回na,存入数组对应索引位置;
  • 适配任意时间框架:只需修改lower_tf变量(如改为"5"即可在30分钟图表上生成6元素数组),无需调整核心逻辑;
  • 参数设置:lookahead=barmerge.lookahead_on和gaps=barmerge.gaps_on确保能正确获取对应时间点的数据,即使存在K线缺失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:12:51