Skip to content
wickra-bot edited this page May 25, 2026 · 25 revisions

Wickra

Wickra is a streaming-first technical-indicators library. Every indicator is implemented in Rust as an O(1) state machine that consumes one input at a time, and the same engine is exposed through ergonomic bindings for Python, Node.js, WebAssembly, and Rust itself. The same update call you write inside a live trading loop also drives the historical backtest of that same strategy — there is no second code path that drifts behind the streaming one.

The project ships 196 indicators across nine families — moving averages, momentum oscillators, trend & directional, price oscillators, volatility & bands, bands & channels, trailing stops, volume, and price statistics — plus a small set of supporting types (Candle, Tick, Chain). The Rust core forbids unsafe, so every binding inherits a memory-safe implementation. Install is one command on every supported platform: pip install wickra, cargo add wickra, npm install wickra — no system compilers, no C dependencies, no headers.

Wickra is licensed under the PolyForm Noncommercial 1.0.0 license. Personal projects, research, hobby trading bots, education, non-profits, and government use are all permitted; commercial sale of the software or of services built around it is not. If you want to use Wickra commercially, open an issue on GitHub to discuss a separate license.

Published versions

Registry Package Version
crates.io wickra 0.2.7
crates.io wickra-core 0.2.7
crates.io wickra-data 0.2.7
PyPI wickra 0.2.7
npm wickra 0.2.7
npm wickra-wasm 0.2.7

Release notes and tagged builds: https://github.com/kingchenc/wickra/releases.

Wiki contents

  • Quickstart: Pythonpip install wickra, a batch RSI on a NumPy array, a streaming RSI loop, and the multi-column NaN pattern that MACD and friends share.
  • Quickstart: Rustcargo add wickra, batch and streaming via the Indicator and BatchExt traits, and the Chain combinator.
  • Quickstart: Nodenpm install wickra, basic SMA and MACD calls, and the install surface. Windows x64 was previously blocked by an npm spam filter on wickra-win32-x64-msvc; that was resolved with npm Support, and 0.2.1 is the first release in which npm install wickra works end-to-end on Windows.
  • Quickstart: WASMnpm install wickra-wasm, building with wasm-pack, and running indicators client-side in a browser or bundler.
  • Data Layer — the wickra-data crate: the CSV reader, the tick-to-candle aggregator, the multi-timeframe resampler, and the Binance live feed.
  • Streaming vs Batch — the conceptual difference between Wickra's O(1) update and the recompute-everything loops in batch-only libraries, with the benchmark numbers from the project README.
  • Warmup Periods — a verified table of every indicator's warmup_period(), plus the reasoning behind the off-by-one cases (RSI(14) needs 15 inputs because it needs 14 diffs).
  • Indicator ChainingChain::new(first, second) and .then(third), with a worked EMA(14) → RSI(7) example and the rule for stacked warmups.
  • Cookbook — copy-paste strategy recipes built on streaming indicators (RSI mean reversion, MACD crossover, Bollinger breakout, ADX-gated trend, multi-timeframe, SuperTrend trailing stop).
  • TA-Lib Migration — function-by-function mapping table from TA-Lib's talib.X(...) calls to the equivalent Wickra expressions.
  • FAQ — quick answers to the most common questions about warmup, NaN handling, thread safety, and the streaming-vs-batch contract.

Indicator reference

Start with Indicators-Overview for the full eight-family taxonomy and the shared Indicator trait surface. The per-indicator pages below cover formulas, parameters, warmup behaviour, edge cases, and verified Rust / Python / Node examples. They are grouped by family, mirroring the indicators/<family>/ directory layout.

Moving Averages — smooth the price series to surface direction.

Momentum Oscillators — measure the rate of price change.

Trend & Directional — is there a trend, and which way?

Price Oscillators — difference-of-averages momentum around zero.

Volatility & Bands — dispersion measures and price envelopes.

Trailing Stops — ATR-driven stop-loss trackers.

Volume — price moves weighted or confirmed by traded volume.

Price Statistics — per-bar transforms and rolling regressions.

See also

Wickra Wiki

Home

Getting started

Reference

Guides

Moving Averages

Price Oscillators

Momentum Oscillators

Trend & Directional

Price Oscillators

Volatility & Bands

Bands & Channels

Trailing Stops

Volume

Price Statistics

Clone this wiki locally