🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

聚宽平台1分钟周期下,9:35的BRAR指标数值包含昨天尾盘数据吗?

joinquant | 发布时间: 2026/5/29
以下内容由 EasyQuant 生成。

问题描述

求教,你们自带的BRAR指标数值

求教,你们自带的BRAR指标数值在‘1m’周期下,9:35分的BR与AR 的数值包含昨天尾盘的成交量吗?

解决方案

核心解答

是的,包含。

在 JoinQuant(聚宽)平台以及绝大多数行情软件中,当您在 '1m'(1分钟)周期 下计算技术指标时,指标公式中的参数 $N$ 代表的是 $N$ 个分钟周期(Bar),而不是天数。

如果您在 9:35 分获取 BRAR 指标,此时当天只产生了 5 根 1分钟 K线(9:31, 9:32, 9:33, 9:34, 9:35)。而 BRAR 指标的默认参数通常是 $N=26$。为了凑齐 26 个周期的数据进行计算,系统会自动向前追溯,因此必然会包含昨天尾盘的 21 根 1分钟 K线的数据


原理解析

1. BRAR 指标公式(以分钟周期为例)

在日线级别,AR 和 BR 的公式如下:

  • AR (人气指标) = $N$ 周期内(最高价 - 开盘价)之和 / $N$ 周期内(开盘价 - 最低价)之和 * 100
  • BR (意愿指标) = $N$ 周期内(最高价 - 上一周期收盘价)之和 / $N$ 周期内(上一周期收盘价 - 最低价)之和 * 100

当切换到 '1m' 周期时,公式中的“开盘价”、“最高价”、“最低价”、“收盘价”均指代 1分钟K线 的价格,而 $N$ 则是指 $N$ 根 1分钟K线

2. 跨日拼接逻辑

聚宽的底层数据获取函数(如 get_barshistory)在获取分钟数据时,是连续向后追溯的。例如:

# 获取 9:35 分往前推 26 根 1分钟 K线
bars = get_bars('000001.XSHE', count=26, unit='1m', end_dt='2023-10-10 09:35:00')

返回的 bars 列表中,最后 5 条是当天的 9:31~9:35,而前面的 21 条则是前一个交易日 14:40~15:00 的数据。内置的指标计算库正是基于这种连续的 K 线序列进行计算的。


如何自行验证或计算?

如果您希望完全掌控计算逻辑,或者希望只使用当天的数据(即不跨日),您可以自己通过 get_bars 获取数据并计算:

import numpy as np

def calc_custom_ar(security, end_dt, n=26):
    # 获取 n 根 1分钟 K线
    bars = get_bars(security, count=n, unit='1m', fields=['open', 'high', 'low'], end_dt=end_dt, df=True)
    
    # 计算 AR
    up_sum = (bars['high'] - bars['open']).sum()
    down_sum = (bars['open'] - bars['low']).sum()
    
    if down_sum == 0:
        return np.nan
    return (up_sum / down_sum) * 100

# 示例:在 9:35 分计算,默认会包含昨天尾盘数据
ar_value = calc_custom_ar('000001.XSHE', '2023-10-10 09:35:00', n=26)
print("9:35的AR值:", ar_value)

总结:只要指标参数 $N$ 大于当天已开盘的分钟数,分钟级技术指标的计算就一定会跨日包含前一交易日的数据。这是量化回测和技术分析中的标准处理方式。