examples(python): add a stdlib-only fetch_btcusdt script
Python had no sibling for the Rust `fetch_btcusdt` data-generator — adding it closes the "fetch (data-gen)" cell for Python and lets users without a Rust toolchain regenerate the bundled BTCUSDT datasets. * examples/python/fetch_btcusdt.py — uses only the standard library (urllib.request + json + csv); same pagination strategy as the Rust version (paginate backwards via `endTime`, drop the in-progress bucket, sort and trim to the configured target). Applies the same OHLC validity check the Rust `Candle::new` constructor enforces (finite fields, high >= low/open/close, low <= open/close, volume >= 0) so a malformed kline is skipped rather than written. * Number formatting matches Rust's `f64` Display: shortest round-trip, no trailing `.0` for whole-number floats. Verified by running the script and `git diff`-ing against the checked-in dataset: every row older than the run is byte-identical to Rust's output; the diff only shows the most recent ~24 hours where Binance has produced fresh candles since the original snapshot. examples/README.md gains the new row.
This commit is contained in:
@@ -27,6 +27,7 @@ The Rust examples live in the `wickra-examples` workspace member crate.
|
||||
| `live_trading.py` | Live Binance feed → RSI / MACD / Bollinger → signals. | `python -m examples.python.live_trading --symbol BTCUSDT --interval 1m` |
|
||||
| `multi_timeframe.py` | Resample a 1-minute CSV to coarser timeframes and compare. | `python -m examples.python.multi_timeframe <1m.csv>` |
|
||||
| `parallel_assets.py` | Process many symbols in parallel — the Rust extension releases the GIL during batch computation. | `python -m examples.python.parallel_assets --assets 200 --bars 5000` |
|
||||
| `fetch_btcusdt.py` | Download real BTCUSDT klines from the Binance REST API into `examples/data/` (urllib + stdlib only). | `python -m examples.python.fetch_btcusdt` |
|
||||
|
||||
`live_trading.py` additionally needs `pip install websockets`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user