#websocket #api-bindings #client #documentation

nightly v_exchanges

Implementations of HTTP/HTTPS/WebSocket API methods for some crypto exchanges, using crypto-botters framework

9 releases (5 breaking)

0.6.0 Feb 2, 2025
0.5.1 Feb 2, 2025
0.5.0 Jan 26, 2025
0.4.0 Jan 18, 2025
0.1.1 Jan 1, 2025

#655 in Asynchronous

Download history 206/week @ 2024-12-31 198/week @ 2025-01-07 266/week @ 2025-01-14 111/week @ 2025-01-21 213/week @ 2025-01-28 56/week @ 2025-02-04 4/week @ 2025-02-11

404 downloads per month
Used in rm_engine

MIT license

99KB
2.5K SLoC

v_exchanges

Minimum Supported Rust Version crates.io docs.rs Lines Of Code
ci errors ci warnings

Trying to make a unified library for all crypto exchange interactions, instead of redefining the response structs again and again.

Installation

		nix build

Usage

Example evocations of crate's methods are exposed in [./examples], with their [[example]] references defined [./v_exchanges/Cargo.toml]. To run:

cargo run -p v_exchanges --example binance_market

Roadmap

  • full binance integration
    • Copy over crypto-botters
    • For binance, copy over the struct definitions from binance-rs
    • distribute the current infrastructure to defined boundaries (add _adapters, keep generic-api-client for now (mb rename to _api_generics later)). Get responses with it.
    • go into src/binance/ on ::, implement klines methods with defined xxxResponse structs, have it just cover the websocket and rest for klines. Print both in main.
      • define core types
      • improve error tracing. If the response fails to deserialize, want to know why. Look up how discretionary_engine does it. Want to print the actual response (+ utils functions to concat when too long (add later)), then the target type.
    • now implement Exchange for them (same place for now). Call methods.
    • now implement Exchange for bybit.
  • full bybit integration
  • polish http interactions in using this API in other projects
  • method to execute all known requests in test mode[^1], on successfull responses, persist the returned json objects to use in test later.
  • use in btc_line to get Websocket interactions nice and good
  • make fitted for the final stage of full integration into discretionary_engine (requires trade execution/followup methods suite), which would signify production-readiness of this crate.

[^1] where allowed, otherwise use min position size or just skip problematic endpoints

Relevant projects and documentations

  • crypto-botters, from where I stole the entire generic-api-client (as v_exchanges_api_generics).
  • binance-rs, which provided a cheat-sheet for so many binance interactions and best-practices on testing.

Binance main docs: https://developers.binance.com/docs Binance spot docs: https://github.com/binance/binance-spot-api-docs?tab=readme-ov-file


This repository follows my best practices and Tiger Style (except "proper capitalization for acronyms": (VsrState, not VSRState) and formatting).

License

Licensed under Blue Oak 1.0.0
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.

Dependencies

~7–19MB
~251K SLoC