The documentation now lives in the wickra-lib/wickra-docs VitePress repo and
will deploy to docs.wickra.org. Rewrite every tracked, user-facing wiki link
in the main repo to the new canonical site:
- docs/README.md, CONTRIBUTING.md, PULL_REQUEST_TEMPLATE.md
- bindings/{node,python,wasm}/README.md, examples/wasm/README.md
- repo-metadata.toml: wiki_url/wiki_git -> docs_url/docs_git
Page paths map 1:1 to VitePress clean URLs (e.g. /wiki/Quickstart-Rust.md ->
docs.wickra.org/Quickstart-Rust). The sync-about.yml wiki-sync step is left
untouched on purpose: it stays until the docs site is live (tracked as P8.3).
The GitHub wiki itself is not deleted yet for the same reason.
3.3 KiB
Wickra WASM examples
Browser demos for the wickra-wasm WebAssembly binding. Every demo loads
the module the same way (init() then construct indicators) so the
patterns transfer one-to-one to your own page.
Build
The WASM module ships as a wasm-pack --target web bundle. Build it
once from the repository root:
wasm-pack build bindings/wasm --target web --release --features panic-hook
This drops bindings/wasm/pkg/ with the .wasm binary, the JS loader
and TypeScript types. Every demo here imports the loader via
../../bindings/wasm/pkg/wickra_wasm.js.
Serve
ES-module workers and fetch() over CSV both need a real HTTP origin,
not file://. Any static server from the repository root works:
# Python:
python -m http.server 8000
# Or Node:
npx http-server -p 8000
Then open the demo you want at http://localhost:8000/examples/wasm/<file>.
Demos
| File | What it does |
|---|---|
index.html |
The original showcase: streams a synthetic price series through six indicators and draws a live <canvas> chart with SMA, EMA, RSI, MACD, BollingerBands and ATR cards. |
backtest.html |
Backtest: fetches an OHLCV CSV (default the bundled BTCUSDT daily dataset), streams every candle through a basket of eight indicators, prints a summary table. Mirrors examples/python/backtest.py. |
live_trading.html |
Browser-native WebSocket to Binance kline streams; runs RSI / MACD / Bollinger on the incoming closes and flags BUY/SELL candidates when the three agree. Mirrors examples/python/live_trading.py. |
multi_timeframe.html |
Fetches a 1-minute CSV, rolls it up in-page to 5m / 15m / 1h / 4h / 1d buckets and prints RSI / MACD-histogram / ADX per timeframe. Mirrors examples/python/multi_timeframe.py. |
parallel_assets.html |
Synthetic (assets, bars) panel, serial baseline on the main thread vs. a pool of module Workers each loading its own copy of the WASM module. Mirrors examples/python/parallel_assets.py. |
parallel_worker.js |
Module worker used by parallel_assets.html (not loaded directly). |
strategy_rsi_mean_reversion.html |
RSI(14) mean-reversion (long < 30, exit > 70), 0.1% fees, summary table. Mirrors examples/python/strategy_rsi_mean_reversion.py. |
strategy_macd_adx.html |
MACD(12,26,9) crossover gated by ADX(14) > 20, summary table. Mirrors examples/python/strategy_macd_adx.py. |
strategy_bollinger_squeeze.html |
Bollinger-squeeze breakout with a 2×ATR(14) stop, summary table. Mirrors examples/python/strategy_bollinger_squeeze.py. |
Performance
The in-browser benchmark is parallel_assets.html: it times a serial main-thread
baseline against a pool of module Workers and reports the speedup. For raw
single-thread throughput numbers see the sibling benchmarks — Rust criterion
(crates/wickra/benches/), Python (bindings/python/benchmarks/compare_libraries.py)
and Node (bindings/node/benchmarks/throughput.js, npm run bench). The WASM
engine is the same Rust core compiled to wasm32, so its relative ordering of
indicators tracks those.
See also
- Quickstart: WASM — module-load
flow,
wasm-packtargets, and the streaming API. - examples/README.md — cross-language index, including the Rust, Python and Node siblings of every demo above.