Skip to main content

quantwave_core/
lib.rs

1//! # quantwave-core
2//!
3//! Core technical-analysis engine for [QuantWave](https://lavs9.github.io/quantwave/):
4//! **230** native indicators, Ehlers DSP, price-action detectors, regime features,
5//! and the [`Next<Input>`](traits::Next) streaming trait that powers batch/streaming parity.
6//!
7//! ## Quick start (streaming)
8//!
9//! ```rust
10//! use quantwave_core::indicators::incremental::rsi::RSI;
11//! use quantwave_core::traits::Next;
12//!
13//! let mut rsi = RSI::new(14);
14//! let value = rsi.next(44.5);
15//! ```
16//!
17//! ## Architecture
18//!
19//! - **Indicators** — `indicators` module; each implements `Next` for scalar streaming
20//! - **Batch** — consumed by `quantwave-polars` / `quantwave-plugins` expression plugins
21//! - **Features / regimes** — ML-oriented transforms in `features` and `regimes`
22//!
23//! User guides: <https://lavs9.github.io/quantwave/guides/rust/>
24//! Full API: <https://docs.rs/quantwave-core>
25
26pub mod features;
27pub mod indicators;
28pub mod options_india;
29pub mod portfolio;
30pub mod regimes;
31pub mod streaming;
32pub mod traits;
33pub mod utils;
34
35pub use regimes::analytics::*;
36
37#[cfg(any(test, feature = "test_utils"))]
38pub mod test_utils;
39
40pub use indicators::adaptive_ema::AdaptiveEMA;
41pub use indicators::alma::ALMA;
42pub use indicators::atr_ts::ATRTrailingStop;
43pub use indicators::autotune::AutoTuneFilter;
44pub use indicators::cycle::*;
45pub use indicators::donchian::DonchianChannels;
46pub use indicators::exp_dev_bands::{ExpDevBands, ExpDevBaseline};
47pub use indicators::frac_diff::FracDiff;
48pub use indicators::fractals::BillWilliamsFractals;
49pub use indicators::gap_momentum::GapMomentum;
50pub use indicators::geometric_patterns::{FlagPattern, GeometricPatternScanner, HsPattern};
51pub use indicators::harmonic::{
52    HarmonicConfig, HarmonicKind, HarmonicPattern, HarmonicPatternScanner, harmonic_patterns_batch,
53};
54pub use indicators::harrington_adx::HarringtonADXOscillator;
55pub use indicators::heikin_ashi::HeikinAshi;
56pub use indicators::hma::HMA;
57pub use indicators::ichimoku::IchimokuCloud;
58pub use indicators::kagi::{KagiBuilder, KagiLine, kagi_atr_batch, kagi_batch};
59pub use indicators::keltner::KeltnerChannels;
60pub use indicators::ma_type::{InvalidMaType, MaType};
61pub use indicators::market_structure::{
62    Bias, ExtremeReclaim, ExtremeReclaimState, FlipEvent, MarketStructure, MarketStructureState,
63    PAEvent, PAEventKind, PriceImbalance, PriceImbalanceState, SwingPoint, extract_all_pa_events,
64    extract_pa_events,
65};
66pub use indicators::math::*;
67pub use indicators::momentum::*;
68pub use indicators::obvm::Obvm;
69pub use indicators::overlap::*;
70pub use indicators::pa_confluence::{
71    ConfluenceContext, enrich_pa_event, filter_confluent_events, passes_confluence_filter,
72    regime_to_label, score_pa_event,
73};
74pub use indicators::pattern::*;
75pub use indicators::pivot_points::PivotPoints;
76pub use indicators::point_figure::{
77    PointFigureBuilder, PointFigureColumn, point_figure_atr_batch, point_figure_batch,
78};
79pub use indicators::price_transform::*;
80pub use indicators::range_bars::{
81    RangeBar, RangeBarBuilder, range_bars_atr_batch, range_bars_batch,
82};
83pub use indicators::renko::{RenkoBrick, RenkoBuilder, renko_atr_batch, renko_batch};
84pub use indicators::reverse_ema::ReverseEMA;
85pub use indicators::rodc::RODC;
86pub use indicators::rsmk::RSMK;
87pub use indicators::sdo::SDO;
88pub use indicators::series_norm::{PercentRank, Zscore};
89pub use indicators::session_levels::{
90    OpeningRangeBreakout, OrbBreakout, OrbInput, OrbPhase, OrbState, SessionVwap, SessionVwapBand,
91    SessionVwapInput, SessionVwapState,
92};
93pub use indicators::smc::{
94    Choch, ChochState, FairValueGap, FairValueGapZone, FvgDirection, FvgState, MitigationStatus,
95    OrderBlock, OrderBlockConfig, OrderBlockState, OrderBlockType, OrderBlockZone,
96    OrderBlockZoneMode, StructureBreakDirection, StructureBreakEvent, StructureBreakType,
97    StructureTrend, SwingType, choch_batch, fair_value_gap_batch, order_block_batch,
98};
99pub use indicators::smoothing::{EMA, SMA, WMA};
100pub use indicators::sr_monitor::{
101    LevelSource, SR_INTERACTION_MONITOR_METADATA, SRInteraction, SRInteractionMonitor,
102    SRInteractionType, SRMonitorOutput,
103};
104pub use indicators::statistics::{
105    LinearRegression, StandardDeviation, TaBETA, TaCORREL, TaLINEARREG, TaLINEARREG_ANGLE,
106    TaLINEARREG_INTERCEPT, TaLINEARREG_SLOPE, TaSTDDEV, TaTSF, TaVAR,
107};
108pub use indicators::supertrend::SuperTrend;
109pub use indicators::sve_volatility_bands::SVEVolatilityBands;
110pub use indicators::tema::{TEMA, ZLEMA};
111pub use indicators::tradj_ema::TRAdjEMA;
112pub use indicators::ttm_squeeze::TTMSqueeze;
113pub use indicators::vfi::Vfi;
114pub use indicators::volatility::{AtrSeed, ATR, TaATR, TaNATR, TaTRANGE, TrueRange};
115pub use indicators::volume::*;
116pub use indicators::volume_profile::{
117    BarData, PriceBin, ValueAreaMethod, VolumeAllocationMethod, VolumeProfile, VolumeProfileState,
118};
119pub use indicators::vortex::VortexIndicator;
120pub use indicators::vpn::VPNIndicator;
121pub use indicators::vwap::AnchoredVWAP;
122pub use indicators::wavetrend::WaveTrend;
123pub use streaming::{StreamingReadiness, TrackedNext, track, warmup_from_params};
124pub use traits::{IndicatorConfig, Next, SmoothingAlgorithm};
125pub use options_india::OptionType;
126
127// NOTE: `pub use talib_rs as talib;` was removed — talib-rs is a parity oracle
128// used from `#[cfg(test)]` and `benches/`, never from the shipped library
129// surface. Use `quantwave_core::MaType` instead of `quantwave_core::talib::MaType`.