overextension_risk
Overextension Risk: overextension score per side from three roles — stretch
overextension_risk
examples/site_showcase.rs// Overextension Risk: overextension score per side from three roles — stretch (EMA/ATR distance, Bollinger z, structure proximity, band breach), exhaustion (RSI, StochRSI, WaveTrend, WT divergence, money flow where real volume exists), reaction (reclaim-fail, WT cross from extreme, wick rejection) — times a volatility factor; regime (EMA stack + ADX) raises the countertrend threshold; value = top score 0..100, secondary = bottom score; extra: role scores, vol_factor, thresholds, regime, adx, money_flow; alerts do_not_chase_up/down (top in uptrend / bottom in downtrend), bear/bull_trend_exhaustion, bear/bull_range_fade (prefix = expected move)
// Defaults of "overextension_risk" (see the indicator reference)
let params = HashMap::from([
("base_threshold".to_string(), 40.0),
("confirm".to_string(), 1.0),
("ema_len".to_string(), 50.0),
("min_gap".to_string(), 8.0),
("structure_len".to_string(), 80.0),
("w_exhaust".to_string(), 35.0),
("w_react".to_string(), 25.0),
("w_stretch".to_string(), 40.0),
]);
let mut indicator = build_checked("overextension_risk", ¶ms)?;
for bar in &bars {
if let Some(output) = indicator.on_bar(bar) {
// output.value, output.extra[...], indicator.alerts()
}
}