zigzag
forge.ta.zigzag(high: ArrayLike,low: ArrayLike,close: ArrayLike,depth: int = 12,backstep: int = 3,atr_period: int = 14,atr_mult: float = 1.0) -> dict[str, np.ndarray]Swing highs and lows, written only once a reversal confirms them.
Parameters
| Name | Type | Default |
|---|---|---|
| high | ArrayLike | |
| low | ArrayLike | |
| close | ArrayLike | |
| depth | int | 12 |
| backstep | int | 3 |
| atr_period | int | 14 |
| atr_mult | float | 1.0 |
up and down hold the swing price on the bar that confirmed it, offset the number of
bars back to the swing, pivot the last confirmed swing price carried forward and
direction +1 after a confirmed low and -1 after a confirmed high. A reversal confirms a
swing once it is at least atr_mult average true ranges (Wilder's) from it. The swing still
pending at the end is never written, so no value is ever revised.
forge.ta.ZigZag(**inputs: Any) -> NoneSwing highs and lows, each shown only once a reversal has confirmed it.
Inputs
| Name | Type | Default | Range |
|---|---|---|---|
| depth | int | 12 | 2 to 200 |
| backstep | int | 3 | 0 to 100 |
| atr_period | int | 14 | 1 to 500 |
| atr_mult | float | 1 | 0.1 to 10 |
A bar is a low (high) candidate when its low (high) is the lowest (highest) of the last depth bars. A candidate is final after backstep more bars, once weaker candidates of the same kind within backstep bars are cleared.
One swing is pending at a time. A stronger candidate of the same kind replaces it. An opposite candidate at least atr_mult average true ranges away confirms it.
The confirmed swing is written on the confirming bar: up or down holds its price and offset the bars back to it. pivot is the last confirmed price, direction is 1 after a low and -1 after a high. The swing pending at the end is never written.