10 个版本

0.2.2 2020 年 3 月 18 日
0.2.1 2020 年 2 月 12 日
0.2.0 2020 年 1 月 31 日
0.1.7 2019 年 6 月 16 日
0.1.1 2018 年 10 月 28 日

#98#cryptocurrency

每月 35 次下载

MIT/Apache

140KB
3K SLoC

bitmex-rs Crates.io 构建状态 MIT 许可

BitMEX (非官方)的 Rust 客户端,支持异步/等待!

文档

注意事项

请在使用之前运行测试,因为 BitMEX 经常在不更改其 Swagger API 定义的情况下引入破坏性更改。

此外,Swagger 定义似乎与 BitMEX 的实际 API 不一致。由于 bitmex-rs 从 swagger.json 自动生成代码,您可能会遇到一些 API 故障。请随时提交问题!

使用方法

将以下内容添加到您的 Cargo.toml 中

[dependencies]
bitmex = "0.2"

基本用法

// This will give you a BitMEX instance, which the only purpose is to create connection.
let bm = bitmex::BitMEX::with_credential(&std::env::var("BITMEX_KEY")?, &std::env::var("BITMEX_SECRET")?);

// All the requests to BitMEX server afterwards will go through HTTP Restful API.

// The request models reside in "bitmex::models" module, with the
// naming convention of "Method+camelCase(endpoint)+Request", e.g. "GET /trade/bucketed" would be
// "bitmex::models::GetTradeBucketedRequest" in bitmex-rs.
let req = bitmex::models::GetTradeBucketedRequest {
    bin_size: Some(bitmex::models::BinSize::D1),
    ..Default::default()
};

// Request to BitMEX server is made by giving "BitMEX::request" the request object.
// The return type of "BitMEX::request" is a future of the response so that you can await on it.
let resp = bm.request(req).await?;
println!("Bucketed trades: {:?}", resp);  

// A websocket is created by "BitMEX::websocket".
let mut ws = bm.websocket().await?;

// The websocket is a duplex channel which means you can send "bitmex::websocket::Command" to BitMEX and 
// receive "bitmex::websocket::Message" from BitMEX using it.
let expires = (Utc::now() + Duration::seconds(30)).timestamp();
ws.send(Command::authenticate(&bm, expires).unwrap()).await?;

// In order to get the ws messages, just poll the ws stream.
while let Some(message) = ws.next().await {
    println!("Subscription message received {:?}", message);
}

更多示例位于 examples 和 tests 文件夹中。

实现状态

目前所有 API 功能都已实现,包括 WebSocket!

依赖关系

~20–33MB
~644K SLoC