9309bf9d60
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.
65 lines
3.3 KiB
Markdown
65 lines
3.3 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
# 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](https://docs.wickra.org/Quickstart-WASM) — module-load
|
|
flow, `wasm-pack` targets, and the streaming API.
|
|
- [examples/README.md](../README.md) — cross-language index, including
|
|
the Rust, Python and Node siblings of every demo above.
|