Expand description
§Donchian channels
upper[i] = max(high[i-N+1 ..= i])
lower[i] = min(low [i-N+1 ..= i])
middle[i] = (upper + lower) / 2Classic breakout envelope (Turtle-style). Warm-up: first N-1 bars are None.
§Trading perspective
| Event | Habit |
|---|---|
| Close > upper | Upside breakout screen |
| Close < lower | Downside breakout screen |
| Channel width | Range expansion / compression |
§Engineering
DonchianParams → donchian / DonchianState → donchian_solution.
§Word problem
Highs 11,12,13,14 and lows 9,10,11,12 with N=3. Upper on last bar?
Expect: 14 (max of last three highs 12,13,14).
use finance_solution::stocks::ta::{donchian, DonchianParams};
let h = [11.0, 12.0, 13.0, 14.0];
let l = [9.0, 10.0, 11.0, 12.0];
let s = donchian(&h, &l, DonchianParams::new(3)).unwrap();
assert!((s.upper[3].unwrap() - 14.0).abs() < 1e-12);
assert!((s.lower[3].unwrap() - 10.0).abs() < 1e-12); // min(lows 10,11,12)Structs§
- Donchian
BarOutput - Donchian
Params - Donchian lookback.
- Donchian
Series - Donchian
Solution - Donchian
State - Incremental Donchian.
- Validated
Donchian