Skip to main content

Crate wickra_core

Crate wickra_core 

Source
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::batch is a blanket implementation that simply replays update over 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 via Chain.
  • No unsafe. The crate forbids unsafe_code in 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::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::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::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::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::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::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.
Tick
A single trade tick.

Enums§

Error
Errors that can occur when constructing or operating on an indicator.

Traits§

BatchExt
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>.