3be267cb03
A multi-language technical analysis library: 25 indicators across trend,
momentum, volatility, and volume families, every one a state machine with
O(1) per-tick updates. Batch evaluation is provided by a blanket extension
trait over the streaming primitive, so live trading bots and historical
backtests run the same code path.
What ships in this initial drop:
crates/wickra-core - 25 indicators, Indicator/BatchExt/Chain traits,
OHLCV types with validation; 171 unit tests,
property tests, Wilder/Bollinger textbook tests.
crates/wickra - top-level facade + criterion benches for every
indicator at 1K/10K/100K series sizes.
crates/wickra-data - streaming CSV reader, tick-to-candle aggregator,
multi-timeframe resampler, Binance Spot kline
WebSocket adapter behind feature live-binance;
11 unit + 1 doctest.
bindings/python - PyO3 + maturin, NumPy I/O, type stubs (.pyi),
56 pytest tests including streaming==batch
equivalence, Wilder reference values, lifecycle.
bindings/node - napi-rs native module, TypeScript .d.ts
auto-generated, 7 node --test cases.
bindings/wasm - wasm-bindgen ES module for browser/bundler/Node;
interactive HTML demo at examples/index.html.
examples/ - Python and Rust scripts: backtest, live trading,
parallel multi-asset, multi-timeframe, Binance.
benchmarks/ - cross-library comparison against TA-Lib,
pandas-ta, finta, talipp; Wickra wins every
category by 11-1030x (batch) and 17x+ streaming.
.github/workflows/ - CI matrix (Rust + Python + Node + WASM on
Linux/macOS/Windows), release pipeline for
PyPI wheels and npm.
Indicators (25):
Trend SMA EMA WMA DEMA TEMA HMA KAMA
Momentum RSI MACD Stochastic CCI ROC WilliamsR ADX MFI TRIX
AwesomeOscillator Aroon
Volatility BollingerBands ATR Keltner Donchian PSAR
Volume OBV VWAP (cumulative + rolling)
cargo clippy --workspace --all-targets -D warnings is clean. License: Apache-2.0.
31 lines
925 B
JavaScript
31 lines
925 B
JavaScript
/* eslint-disable */
|
|
/* prettier-ignore */
|
|
// This loader is generated by `napi build --platform` at publish time. For
|
|
// editable development just `require` the local debug binary that napi places
|
|
// at the package root.
|
|
|
|
const { join } = require('node:path');
|
|
const { existsSync } = require('node:fs');
|
|
const { platform, arch } = process;
|
|
|
|
function loadNative() {
|
|
// Try precompiled per-platform binary first (published wheels do this).
|
|
const candidates = [
|
|
`./wickra.${platform}-${arch}.node`,
|
|
`./wickra.${platform}-${arch}-musl.node`,
|
|
'./wickra.node',
|
|
];
|
|
for (const c of candidates) {
|
|
const p = join(__dirname, c);
|
|
if (existsSync(p)) {
|
|
return require(p);
|
|
}
|
|
}
|
|
throw new Error(
|
|
`Wickra: no precompiled binary found for ${platform}-${arch}. ` +
|
|
'Build from source with `napi build --release` or install a platform-specific package.'
|
|
);
|
|
}
|
|
|
|
module.exports = loadNative();
|