Skip to main content

indicators/
lib.rs

1//! # indicators — Technical Indicators + Market Regime Detection
2
3// ── Core types & traits ───────────────────────────────────────────────────────
4pub mod descriptor;
5pub mod error;
6pub mod functions;
7pub mod indicator;
8pub mod indicator_config;
9pub mod registry;
10pub mod types;
11
12// ── Indicator categories ──────────────────────────────────────────────────────
13pub mod momentum;
14pub mod trend;
15pub mod volatility;
16pub mod volume;
17
18// ── Signal pipeline ───────────────────────────────────────────────────────────
19pub mod signal;
20
21// ── Regime detection ─────────────────────────────────────────────────────────
22pub mod regime;
23
24// ── Re-exports: core ─────────────────────────────────────────────────────────
25pub use functions::{
26    ATR, BollingerBandsValue, EMA, IncrementalAtr, IncrementalBollinger, IncrementalEma,
27    IncrementalMacd, IncrementalRsi, IndicatorCalculator, RSI, StrategyIndicators,
28};
29pub use functions::{atr, ema, macd, rsi, sma, true_range};
30// ── Re-exports: indicator metadata (chart-page auto-discovery) ───────────────
31pub use descriptor::{IndicatorCategory, IndicatorDescriptor, ParamKind, ParamSpec, catalog};
32pub use indicator::{Indicator, IndicatorOutput, PriceColumn};
33pub use indicator_config::{IndicatorConfig, SignalEngineConfig};
34// IndexMap backs IndicatorOutput::into_inner(); re-exported so callers don't
35// need a direct `indexmap` dependency in their Cargo.toml.
36pub use indexmap::IndexMap;
37pub use registry::IndicatorRegistry;
38pub use types::{
39    Candle, MarketRegime, RecommendedStrategy, RegimeConfidence, RegimeConfig, TrendDirection,
40};
41
42// ── Re-exports: momentum ─────────────────────────────────────────────────────
43pub use momentum::{Rsi, Stochastic, StochasticRsi};
44
45// ── Re-exports: signal pipeline ──────────────────────────────────────────────
46pub use signal::CVDTracker;
47pub use signal::ConfluenceEngine;
48pub use signal::Indicators;
49pub use signal::LiquidityProfile;
50pub use signal::MarketStructure;
51pub use signal::{MarketRegimeTracker, PercentileTracker, VolatilityPercentile};
52pub use signal::{SignalComponents, SignalStreak, compute_signal};
53// Indicator wrappers for the signal pipeline
54pub use signal::EngineIndicator;
55pub use signal::SignalIndicator;
56pub use signal::{ConfluenceIndicator, ConfluenceParams};
57pub use signal::{CvdIndicator, CvdParams};
58pub use signal::{LiquidityIndicator, LiquidityParams};
59pub use signal::{StructureIndicator, StructureParams};
60pub use signal::{VolumeRegime, VolumeRegimeParams};
61
62// ── Re-exports: regime detection ─────────────────────────────────────────────
63pub use regime::RegimeDetector;
64/// Internal Bollinger Bands used by the regime detector (incremental, not batch).
65/// For the batch `Indicator` impl see [`volatility::BollingerBands`].
66pub use regime::{ADX, BollingerBands, BollingerBandsValues};
67// NB: the top-level `RSI` is now the uniform `functions::RSI` (value() -> f64,
68// like EMA/ATR); the regime primitive stays available as `regime::RSI`.
69pub use regime::{
70    ActiveStrategy, AssetSummary, DetectionMethod, EnhancedRouter, EnhancedRouterConfig,
71    RoutedSignal,
72};
73pub use regime::{EnsembleConfig, EnsembleRegimeDetector, EnsembleResult, EnsembleStatus};
74pub use regime::{HMMConfig, HMMRegimeDetector};
75// Indicator wrappers for regime detection
76pub use regime::DetectorIndicator;
77pub use regime::EnsembleIndicator;
78pub use regime::HmmIndicator;
79pub use regime::RouterIndicator;
80pub use regime::{
81    AdxIndicator, AtrPrimIndicator, BbPrimIndicator, EmaPrimIndicator, RsiPrimIndicator,
82};