---
source_url: https://docs.dolphindb.cn/zh/funcs/z/zigzag.html
fetched_at: 2026-05-19T09:44:26Z
category: funcs
title: zigzag
sha1: b2dd82b76c58ce22c43a6f3525c8be760cae6e3a
---

# zigzag

## 语法

`zigzag(HL, [change=10], [percent=true], [retrace=false],
[lastExtreme=true])`

## 详情

`zigzag` 主要用于过滤掉 *HL* 中较小波动的值，只有满足条件的极值点会被输出。

## 参数

**HL** 数值向量或者包含两列的数值矩阵。

**change** 极值波动的最小阈值。

**percent** 布尔值，表示 *change* 是否是一个百分数。

**retrace** 是一个布尔值，默认为 false。

- true：*change* 当前值相对于前一次波动的回撤。
- false：*change* 当前值相对于两端极值点间的变化。

注：

当 *percent*=false 时， *retrace* 的 true 值将不生效。

**lastExtreme** 布尔值，表示有多个连续且值相同的极值点时，是否输出最后一个极值点，默认为 true。

## 返回值

若 *HL* 是向量，返回一个与 *HL* 长度相同的向量；若 *HL* 是矩阵，返回与
*HL* 行数相同的向量。

## 例子

```dolphindb
t = table(1.1 2.3 4.45 3.67 4.9 as `low, 1.3 2.8 4.9 3.73 6.28 as `high)
HL = matrix(t[`low], t[`high])
zz = zigzag(HL, change=10, percent=true, retrace=false, lastExtreme=true)
zz;
```

| 0 | 1 | 2 | 3 | 4 |
| --- | --- | --- | --- | --- |
| 1.2 |  | 4.45 | 3.73 | 4.9 |

```dolphindb
HL = 1.2 3 3.1 14 14.5 14.7 25.0 17.8 19 10
zz = zigzag(HL, change=10, percent=true, retrace=false, lastExtreme=true)
zz;
```

| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1.2 |  |  |  |  |  | 25 |  |  | 10 |
