Expand description
§Keltner Channels
middle = EMA(ema_period) of close
atr = Wilder ATR(atr_period) of high/low/close
upper = middle + atr_mult * atr
lower = middle − atr_mult * atrDefault pack: EMA 20, ATR 10, mult 2 (KeltnerParams::standard).
§Word problem
Compare Bollinger(20, 2) and Keltner(20, 10, 2) on the same closes. Which uses volatility of closes only, and which uses true range of the bar?
Bollinger → close stdev. Keltner → Wilder ATR (high/low/close). Teaching tables for both
show warm-up n/a until their respective windows fill.
§Quant pattern
use finance_solution::stocks::ta::{KeltnerParams, ValidatedKeltner, KeltnerState};
const KC: KeltnerParams = KeltnerParams::standard();
let eng = ValidatedKeltner::new(KC).unwrap();
let s = eng.compute(&high, &low, &close).unwrap();
let mut live = KeltnerState::new(KC).unwrap();
let _ = live.push_bars(&high, &low, &close).unwrap();
assert_eq!(s.middle.len(), n);§Sample solution table
period close middle upper lower atr
------ ------ ------ ------ ------ ------
9 100.90 n/a n/a n/a n/a
19 101.90 101.20 103.00 99.40 0.9000Structs§
- Keltner
Params - Keltner parameter pack (Wilder ATR).
- Keltner
Series - Keltner
Solution - Validated
Keltner - Validated Keltner config.
Functions§
- keltner
- keltner_
solution - Examples