Expand description
wickra-core: streaming-first technical indicators.
The core engine of Wickra. Every indicator is implemented as a state machine
that consumes inputs one at a time via Indicator::update in constant time.
Batch evaluation is provided as a blanket extension trait so the same code
path serves both online (tick-by-tick) and offline (historical) workloads.
§Design
- Streaming-first. State is held by the indicator instance, so a new value only re-computes deltas, not the whole series.
- Batch is free.
BatchExt::batchis a blanket implementation that simply replaysupdateover a slice. Writing one implementation gives both APIs. - Composable. Indicators implement
Indicator<Input = f64, Output = f64>wherever they conceptually take a price, so they can be chained viaChain. - No
unsafe. The crate forbidsunsafe_codein the workspace lints.
§Quick start
use wickra_core::{BatchExt, Indicator, Sma};
// Streaming:
let mut sma = Sma::new(3).unwrap();
assert_eq!(sma.update(1.0), None);
assert_eq!(sma.update(2.0), None);
assert_eq!(sma.update(3.0), Some(2.0));
// Batch (replays `update` internally):
let mut sma = Sma::new(3).unwrap();
let out = sma.batch(&[1.0, 2.0, 3.0, 4.0]);
assert_eq!(out, vec![None, None, Some(2.0), Some(3.0)]);Re-exports§
pub use indicators::AccelerationBands;pub use indicators::AccelerationBandsOutput;pub use indicators::AcceleratorOscillator;pub use indicators::AdOscillator;pub use indicators::AdaptiveCycle;pub use indicators::Adl;pub use indicators::Adx;pub use indicators::AdxOutput;pub use indicators::Adxr;pub use indicators::Alligator;pub use indicators::AlligatorOutput;pub use indicators::Alma;pub use indicators::Alpha;pub use indicators::AnchoredVwap;pub use indicators::Apo;pub use indicators::Aroon;pub use indicators::AroonOscillator;pub use indicators::AroonOutput;pub use indicators::Atr;pub use indicators::AtrBands;pub use indicators::AtrBandsOutput;pub use indicators::AtrTrailingStop;pub use indicators::Autocorrelation;pub use indicators::AverageDrawdown;pub use indicators::AwesomeOscillator;pub use indicators::AwesomeOscillatorHistogram;pub use indicators::BalanceOfPower;pub use indicators::Beta;pub use indicators::BollingerBands;pub use indicators::BollingerBandwidth;pub use indicators::BollingerOutput;pub use indicators::CalmarRatio;pub use indicators::Camarilla;pub use indicators::CamarillaPivotsOutput;pub use indicators::Cci;pub use indicators::CenterOfGravity;pub use indicators::Cfo;pub use indicators::ChaikinMoneyFlow;pub use indicators::ChaikinOscillator;pub use indicators::ChaikinVolatility;pub use indicators::ChandeKrollStop;pub use indicators::ChandeKrollStopOutput;pub use indicators::ChandelierExit;pub use indicators::ChandelierExitOutput;pub use indicators::ChoppinessIndex;pub use indicators::ClassicPivots;pub use indicators::ClassicPivotsOutput;pub use indicators::Cmo;pub use indicators::CoefficientOfVariation;pub use indicators::Cointegration;pub use indicators::CointegrationOutput;pub use indicators::ConditionalValueAtRisk;pub use indicators::ConnorsRsi;pub use indicators::Coppock;pub use indicators::CumulativeVolumeDelta;pub use indicators::CyberneticCycle;pub use indicators::Decycler;pub use indicators::DecyclerOscillator;pub use indicators::Dema;pub use indicators::DemandIndex;pub use indicators::DemarkPivots;pub use indicators::DemarkPivotsOutput;pub use indicators::DetrendedStdDev;pub use indicators::Doji;pub use indicators::Donchian;pub use indicators::DonchianOutput;pub use indicators::DonchianStop;pub use indicators::DonchianStopOutput;pub use indicators::DoubleBollinger;pub use indicators::DoubleBollingerOutput;pub use indicators::Dpo;pub use indicators::DrawdownDuration;pub use indicators::EaseOfMovement;pub use indicators::EhlersStochastic;pub use indicators::ElderImpulse;pub use indicators::Ema;pub use indicators::EmpiricalModeDecomposition;pub use indicators::Engulfing;pub use indicators::Evwma;pub use indicators::Fama;pub use indicators::FibonacciPivots;pub use indicators::FibonacciPivotsOutput;pub use indicators::FisherTransform;pub use indicators::ForceIndex;pub use indicators::FractalChaosBands;pub use indicators::FractalChaosBandsOutput;pub use indicators::Frama;pub use indicators::GainLossRatio;pub use indicators::GarmanKlassVolatility;pub use indicators::Hammer;pub use indicators::HangingMan;pub use indicators::Harami;pub use indicators::HeikinAshi;pub use indicators::HeikinAshiOutput;pub use indicators::HiLoActivator;pub use indicators::HilbertDominantCycle;pub use indicators::HistoricalVolatility;pub use indicators::Hma;pub use indicators::HurstChannel;pub use indicators::HurstChannelOutput;pub use indicators::HurstExponent;pub use indicators::Ichimoku;pub use indicators::IchimokuOutput;pub use indicators::Inertia;pub use indicators::InformationRatio;pub use indicators::InitialBalance;pub use indicators::InitialBalanceOutput;pub use indicators::InstantaneousTrendline;pub use indicators::InverseFisherTransform;pub use indicators::InvertedHammer;pub use indicators::Jma;pub use indicators::Kama;pub use indicators::KellyCriterion;pub use indicators::Keltner;pub use indicators::KeltnerOutput;pub use indicators::Kst;pub use indicators::KstOutput;pub use indicators::Kurtosis;pub use indicators::Kvo;pub use indicators::LaguerreRsi;pub use indicators::LeadLagCrossCorrelation;pub use indicators::LeadLagCrossCorrelationOutput;pub use indicators::LinRegAngle;pub use indicators::LinRegChannel;pub use indicators::LinRegChannelOutput;pub use indicators::LinRegSlope;pub use indicators::LinearRegression;pub use indicators::MaEnvelope;pub use indicators::MaEnvelopeOutput;pub use indicators::MacdIndicator;pub use indicators::MacdOutput;pub use indicators::Mama;pub use indicators::MamaOutput;pub use indicators::MarketFacilitationIndex;pub use indicators::Marubozu;pub use indicators::MassIndex;pub use indicators::MaxDrawdown;pub use indicators::McGinleyDynamic;pub use indicators::MedianAbsoluteDeviation;pub use indicators::MedianPrice;pub use indicators::Mfi;pub use indicators::Microprice;pub use indicators::Mom;pub use indicators::MorningEveningStar;pub use indicators::Natr;pub use indicators::Nvi;pub use indicators::Obv;pub use indicators::OmegaRatio;pub use indicators::OpeningRange;pub use indicators::OpeningRangeOutput;pub use indicators::OrderBookImbalanceFull;pub use indicators::OrderBookImbalanceTop1;pub use indicators::OrderBookImbalanceTopN;pub use indicators::PainIndex;pub use indicators::PairSpreadZScore;pub use indicators::PairwiseBeta;pub use indicators::ParkinsonVolatility;pub use indicators::PearsonCorrelation;pub use indicators::PercentB;pub use indicators::PercentageTrailingStop;pub use indicators::Pgo;pub use indicators::PiercingDarkCloud;pub use indicators::Pmo;pub use indicators::Ppo;pub use indicators::ProfitFactor;pub use indicators::Psar;pub use indicators::Pvi;pub use indicators::QuotedSpread;pub use indicators::RSquared;pub use indicators::RecoveryFactor;pub use indicators::RelativeStrengthAB;pub use indicators::RelativeStrengthOutput;pub use indicators::RenkoTrailingStop;pub use indicators::Roc;pub use indicators::RogersSatchellVolatility;pub use indicators::RollingVwap;pub use indicators::RoofingFilter;pub use indicators::Rsi;pub use indicators::Rvi;pub use indicators::RviVolatility;pub use indicators::Rwi;pub use indicators::RwiOutput;pub use indicators::SharpeRatio;pub use indicators::ShootingStar;pub use indicators::SignedVolume;pub use indicators::SineWave;pub use indicators::Skewness;pub use indicators::Sma;pub use indicators::Smi;pub use indicators::Smma;pub use indicators::SortinoRatio;pub use indicators::SpearmanCorrelation;pub use indicators::SpinningTop;pub use indicators::StandardError;pub use indicators::StandardErrorBands;pub use indicators::StandardErrorBandsOutput;pub use indicators::StarcBands;pub use indicators::StarcBandsOutput;pub use indicators::Stc;pub use indicators::StdDev;pub use indicators::StepTrailingStop;pub use indicators::StochRsi;pub use indicators::Stochastic;pub use indicators::StochasticOutput;pub use indicators::SuperSmoother;pub use indicators::SuperTrend;pub use indicators::SuperTrendOutput;pub use indicators::TdCombo;pub use indicators::TdCountdown;pub use indicators::TdDeMarker;pub use indicators::TdDifferential;pub use indicators::TdLines;pub use indicators::TdLinesOutput;pub use indicators::TdOpen;pub use indicators::TdPressure;pub use indicators::TdRangeProjection;pub use indicators::TdRangeProjectionOutput;pub use indicators::TdRei;pub use indicators::TdRiskLevel;pub use indicators::TdRiskLevelOutput;pub use indicators::TdSequential;pub use indicators::TdSequentialOutput;pub use indicators::TdSetup;pub use indicators::Tema;pub use indicators::ThreeInside;pub use indicators::ThreeOutside;pub use indicators::ThreeSoldiersOrCrows;pub use indicators::Tii;pub use indicators::TradeImbalance;pub use indicators::TreynorRatio;pub use indicators::Trima;pub use indicators::Trix;pub use indicators::TrueRange;pub use indicators::Tsi;pub use indicators::Tsv;pub use indicators::TtmSqueeze;pub use indicators::TtmSqueezeOutput;pub use indicators::Tweezer;pub use indicators::TypicalPrice;pub use indicators::UlcerIndex;pub use indicators::UltimateOscillator;pub use indicators::ValueArea;pub use indicators::ValueAreaOutput;pub use indicators::ValueAtRisk;pub use indicators::Variance;pub use indicators::VerticalHorizontalFilter;pub use indicators::Vidya;pub use indicators::VoltyStop;pub use indicators::VolumeOscillator;pub use indicators::VolumePriceTrend;pub use indicators::Vortex;pub use indicators::VortexOutput;pub use indicators::Vwap;pub use indicators::VwapStdDevBands;pub use indicators::VwapStdDevBandsOutput;pub use indicators::Vwma;pub use indicators::Vzo;pub use indicators::WaveTrend;pub use indicators::WaveTrendOutput;pub use indicators::WeightedClose;pub use indicators::WilliamsFractals;pub use indicators::WilliamsFractalsOutput;pub use indicators::WilliamsR;pub use indicators::Wma;pub use indicators::WoodiePivots;pub use indicators::WoodiePivotsOutput;pub use indicators::YangZhangVolatility;pub use indicators::YoyoExit;pub use indicators::ZScore;pub use indicators::ZeroLagMacd;pub use indicators::ZeroLagMacdOutput;pub use indicators::ZigZag;pub use indicators::ZigZagOutput;pub use indicators::Zlema;pub use indicators::FAMILIES;pub use indicators::T3;
Modules§
- indicators
- Built-in indicators. Every indicator implements
crate::Indicator.
Structs§
- Candle
- A single OHLCV bar.
- Chain
- Chain two indicators so the output of the first becomes the input of the second.
- Level
- A single order-book price level: a resting quantity at a price.
- Order
Book - An order-book depth snapshot.
- Tick
- A single trade tick.
- Trade
- A single executed trade with an aggressor side.
- Trade
Quote - A trade paired with the mid-price prevailing at execution.
Enums§
- Error
- Errors that can occur when constructing or operating on an indicator.
- Side
- The aggressor side of a trade: the side that crossed the spread.
Traits§
- Batch
Ext - Blanket extension that adds batch evaluation to every
Indicator. - Indicator
- A streaming technical indicator.
Type Aliases§
- Result
- Convenience alias for
Result<T, wickra_core::Error>.