---
source_url: https://docs.dolphindb.cn/zh/funcs/v/volumeBar.html
fetched_at: 2026-05-19T09:43:44Z
category: funcs
title: volumeBar
sha1: 2e14d5ce2000fb76d4d34e9d754c4632e1fa1545
---

# volumeBar

## 语法

`volumeBar(X, interval, [label='seq'])`

## 详情

对 *X* 进行累加，并根据指定的阈值进行分组，返回数据所属分组的组号。分组规则为：

依次累加 *X* 中的元素

- 若阈值为正数，则从第一个元素开始累加，直到累加和大于等于阈值，将这些元素划分为一组。然后从下一个元素重新开始累加，并分组，以此类推。最后剩余的累加和小于阈值的元素划分为一组。
- 若阈值为负数，则从第一个元素开始累加，直到累加和小于等于阈值，将这些元素划分为一组。然后从下一个元素重新开始累加，并分组，以此类推。最后剩余的累加和大于阈值的元素划分为一组。

*interval* 确定了累加分组的阈值，可以是一个定值也可以是一个百分比：

- 当 *interval* ∈ (0, 1) 时， 表示一个百分比，阈值为 sum(X) \*
  interval。注意，系统会将阈值转换为与 *X* 相同的类型再进行比较。例如，*X* 是整型，则累加和将与
  floor(sum(X) \* interval)进行比较。
- 否则，*interval* 表示一个定值，即阈值为 *interval*。

## 参数

**X** 是数值型向量。

**interval** 非零的数值，表示一个定值或百分比。

**label** 为标记分组的方法，有以下三种类型：

- 'seq'：默认值，表示按 0, 1, 2, 3… 的顺序标记组号。
- 'left'：当前分组第一个元素前所有元素的累加和作为组号。第1个分组的组号为 0。
- 'right'：*X* 从第一个元素开始累加到当前分组中最后一个元素的值作为组号。

## 返回值

INT/LONG 类型向量。

## 例子

```dolphindb
X =  1 3 4 2 2 1 1 1 1 6 8
volumeBar(X, 4)
```

输出返回：[0,0,1,2,2,3,3,3,3,4,5]

```dolphindb
volumeBar(X, 4, 'left')
```

输出返回：[0,0,4,8,8,12,12,12,12,16,22]

```dolphindb
volumeBar(X, 4, 'right')
```

输出返回：[4,4,8,12,12,16,16,16,16,22,30]

```dolphindb
volumeBar(X, 0.3)
```

输出返回：[0,0,0,0,1,1,1,1,1,1,2]

```dolphindb
X = -6 2 -4 -5 -1 3 -2 -1
volumeBar(X, -2)
```

输出返回：[0,1,1,2,3,3,3,3]

```dolphindb
volumeBar(X, -2, 'left')
```

输出返回：[0,-6,-6,-8,-13,-13,-13,-13]

```dolphindb
volumeBar(X, -2, 'right')
```

输出返回：[-6,-8,-8,-13,-14,-14,-14,-14]

应用 `volumeBar` 函数生成等量 K 线。

```dolphindb
time = [09:30:00, 09:32:15, 09:35:00, 09:37:30, 09:40:00, 09:45:00, 09:47:30, 09:50:00, 09:55:00, 10:00:00]
price = [100.0, 100.1, 100.05, 99.9, 100.2, 100.15, 100.1, 100.05, 100.0, 99.95]
volume = [200, 800, 250, 300, 1200, 250, 180, 400, 600, 350]
t = table(time, price, volume)

select 
    first(time) as barStartTime,
    first(price) as open,
    max(price) as high,
    min(price) as low,
    last(price) as close,
    sum(volume) as totalVolume
from t 
group by volumeBar(tradeVolume, 1500) as volumeBarNo
```

| volumeBarNo | barStartTime | open | high | low | close | totalVolume |
| --- | --- | --- | --- | --- | --- | --- |
| 0 | 09:30:00 | 100 | 100.1 | 99.9 | 99.9 | 1,550 |
| 1 | 09:40:00 | 100.2 | 100.2 | 100.1 | 100.1 | 1,630 |
| 2 | 09:50:00 | 100.05 | 100.05 | 99.95 | 99.95 | 1,350 |
