#exchange #cryptocurrency #api #user-defined

ecbt

支持用户定义网络的性能高加密货币交易API

3个版本

0.1.9 2022年5月9日
0.1.8 2022年4月27日
0.1.0 2022年4月26日

#35 in #user-defined

BSD-2-Clause

225KB
6K SLoC

ecbt(交易所连接基础工具)

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

支持用户定义网络的性能高加密货币交易API。

  • 基于Rust,默认内存安全。
  • 支持Websocket和用户定义网络。
  • 易于添加对其他交易所的支持。

许可证

BSD 2-Clause许可证

用法

Cargo.toml 中添加依赖项

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

HTTP

use std::borrow::Borrow;

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

#[tokio::main]
async fn main() {
    let ecbt = Ecbt::http::<Binance>(BinanceParameters::sandbox())
        .await
        .unwrap();
    let request = GetPriceTickerRequest {
        market_pair: MarketPair(Currency::ETH, Currency::USDT),
    };
    let s = ecbt.get_price_ticker(request.borrow()).await.unwrap();
    println!("{:?}", s);
}

WebSocket

use ecbt::{
    prelude::{
        market_pair::{Currency, MarketPair},
        websocket::{EcbtWebSocketMessage, Subscription, WebSocketResponse},
        ExchangeStream,
    },
    Ecbt,
};
use ecbt_binance::{BinanceParameters, BinanceWebsocket};

#[tokio::main]
async fn main() {
    let ecbt = Ecbt::ws::<BinanceWebsocket>(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));
}

贡献

由于有很多交易所,如果ecbt尚未实现,您可能需要自行实现。

联系我们

联系或加入我们 @oss-jtyd

进行中

  • [完成] 项目框架
  • [完成] Binance支持
  • [待办] Nash支持
  • [待办] Huobi支持
  • [待办] Coinbase支持
  • [待办] Apifiny支持
  • [待办] Okex支持

依赖项

~13–29MB
~469K SLoC