ecbt(Exchange Connect Base Tool)

CI status CI status License Crates.io Minimum rustc version Join at Slack

High performance cryptocurrency trading API with support for user defined networking.

License

BSD 2-Clause License

Usage

Add dependencies in Cargo.toml:

toml [dependencies] ecbt = "0.1" ecbt-exchange = "0.1" ecbt-binance = "0.1" tokio = { version = "1", features = ["full"] }

HTTP

```rust use std::borrow::Borrow;

use ecbt::{ prelude::{ marketpair::{Currency, MarketPair}, GetPriceTickerRequest, }, Ecbt, }; use ecbtbinance::{Binance, BinanceParameters}; use ecbt_exchange::ExchangeMarketData;

[tokio::main]

async fn main() { let ecbt = Ecbt::http::(BinanceParameters::sandbox()) .await .unwrap(); let request = GetPriceTickerRequest { marketpair: MarketPair(Currency::ETH, Currency::USDT), }; let s = ecbt.getprice_ticker(request.borrow()).await.unwrap(); println!("{:?}", s); } ```

WebSocket

```rust use ecbt::{ prelude::{ marketpair::{Currency, MarketPair}, websocket::{EcbtWebSocketMessage, Subscription, WebSocketResponse}, ExchangeStream, }, Ecbt, }; use ecbtbinance::{BinanceParameters, BinanceWebsocket};

[tokio::main]

async fn main() { let ecbt = Ecbt::ws::(BinanceParameters::sandbox()) .await .unwrap(); let market = MarketPair(Currency::ETH, Currency::BTC);

ecbt.subscribe(Subscription::OrderBookUpdates(market), move |m| {
    let r = m.as_ref();

    if let Ok(WebSocketResponse::Generic(EcbtWebSocketMessage::OrderBook(order_book))) = r {
        println!("{:?}", order_book)
    } else if let Err(err) = r {
        println!("{:#?}", err);
    }
})
.await
.expect("Failed to subscribe to orderbook on Binance");

std::thread::sleep(std::time::Duration::from_millis(5000));

} ```

Contributions

Because there are many exchanges, if ecbt has not been implemented, you may need to implement it yourself.

Contact Us

Contact or join us @oss-jtyd.

WIP