62ab84c472
Introduce repo-metadata.toml as single source of truth for repo identity (org slug, maintainer email, canonical URLs) and add sync-metadata.yml workflow with a Python audit script that fails CI if any tracked file drifts back to pre-migration values. Bulk-replace across 24 tracked files: - kingchenc/wickra -> wickra-lib/wickra (URL segment) - kingchencp@gmail.com -> wickra.lib@gmail.com (maintainer email) - @kingchenc -> @wickra-lib (CODEOWNERS mention only) Person-name credits are preserved: LICENSE copyright holder, Cargo.toml authors handle, and CHANGELOG historical @kingchenc reference all remain unchanged. Crate / PyPI / npm package names also untouched. Merge this PR only after the kingchenc/wickra -> wickra-lib/wickra org transfer has happened on the GitHub side, otherwise all badges and repository links 404 until the transfer is performed.
2.4 KiB
2.4 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). |
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.