kingchenc
d362ae26a3
feat(data): expose CandleReader (CSV) natively in all 10 languages ( #311 )
...
Add the data-layer CSV candle reader to every binding so loading OHLCV
candles from a CSV no longer needs a per-language CSV/dataframe dependency.
- C ABI: wickra_candle_reader_new(bytes, len) / _count / _read / _free over
an opaque CandleReader handle (parse the whole buffer up front, then drain).
- Native: Node/WASM CandleReader.read() -> Candle[], Python read() -> list[tuple].
- C-ABI languages: Go Read() []Candle, C# Candle[] Read(), Java Candle[] read(),
R read() S3 generic (n x 6 matrix); C / C++ call the C ABI directly.
- Cross-language golden testdata/golden/data_csv*.csv pins the parsed candles
bit-for-bit across every binding.
Verified locally across Rust (test+clippy+fmt), Node, WASM, Python, C#, Go,
Java, R, and the C/C++ cmake parity suite.
2026-06-16 00:10:58 +02:00
..
2026-06-15 04:48:51 +02:00
2026-06-11 15:22:29 +02:00
2026-06-11 15:22:29 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-11 15:22:29 +02:00
2026-06-15 21:24:33 +02:00
2026-06-15 21:24:33 +02:00
2026-06-16 00:10:58 +02:00
2026-06-16 00:10:58 +02:00
2026-06-15 22:36:16 +02:00
2026-06-15 21:24:33 +02:00
2026-06-11 15:22:29 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-11 15:22:29 +02:00
2026-06-15 04:48:51 +02:00
2026-06-11 15:22:29 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 17:19:24 +02:00
2026-06-15 04:48:51 +02:00
2026-06-15 04:48:51 +02:00
2026-06-11 15:22:29 +02:00
2026-06-15 04:48:51 +02:00
2026-06-11 15:22:29 +02:00
2026-06-15 04:48:51 +02:00