equal_level_liquidity
Equal-Level Liquidity: equal-high/low levels clustered within eq_tolerance_atr ATR, pruned by age and dista…
equal_level_liquidity
examples/site_showcase.rs// Equal-Level Liquidity: equal-high/low levels clustered within eq_tolerance_atr ATR, pruned by age and distance, ranked by touches, freshness and distance (primary/secondary per side); sweep vs. breakout, stop hunt (rejection candle + volume spike), reclaim within reclaim_bars with a 0..100 score; value = bias; extra: primary/secondary_bsl/ssl (+_score, primary _touches), bsl_count, ssl_count, recent_bull/bear_score, volume_ratio, bear/bull_reclaim_score; alerts bear_bsl_sweep, bull_ssl_sweep, bull_bsl_breakout, bear_ssl_breakout, bear_bsl/bull_ssl_stop_hunt, bear/bull_reclaim, bear/bull_premium_reclaim (prefix = expected move), primary_bsl/ssl_near
// Defaults of "equal_level_liquidity" (see the indicator reference)
let params = HashMap::from([
("alert_distance_atr".to_string(), 1.0),
("eq_tolerance_atr".to_string(), 0.12),
("max_age".to_string(), 400.0),
("max_distance_atr".to_string(), 8.0),
("min_touches".to_string(), 2.0),
("min_volume_ratio".to_string(), 1.2),
("pivot_len".to_string(), 8.0),
("reclaim_bars".to_string(), 3.0),
]);
let mut indicator = build_checked("equal_level_liquidity", ¶ms)?;
for bar in &bars {
if let Some(output) = indicator.on_bar(bar) {
// output.value, output.extra[...], indicator.alerts()
}
}