#crypto #ftx #rest #exchange #channel #connection #interface

ftx_async

FTX加密交易所的Websocket和REST API的非官方异步Rust库。Websocket接口通过在MPSC通道上发布消息并在后台管理身份验证、重连和心跳来完全抽象FTX的连接。

4个版本

0.0.4 2022年11月8日
0.0.3 2022年11月7日
0.0.2 2022年11月6日
0.0.1 2022年11月6日

#1082 in 加密

Apache-2.0

49KB
1K SLoC

ftx-async

FTX加密交易所的非官方异步Websocket和REST客户端的Rust实现

ci

2022年6月11日 - *** 警告 *** 此代码库为alpha版本,尽管它现在可以作为crate提供。

示例

使用FTX Websocket的基本tick监听器。确保在Cargo.toml中包含tokio和ftx-async
[dependencies]
tokio = {version = "*"}
ftx_async = {version = "*"}

然后,在main.rs中

use ftx_async::ws::{UpdateMessage, WebsocketManager};
use tokio::signal;

#[tokio::main]
async fn main() {
    let api_key = ""; // Set a valid FTX API key!
    let api_secret = ""; // Set a valid FTX secret key!

    let ftx = WebsocketManager::new(api_key, api_secret, "BTC-PERP").await;

    let mut listener = ftx.get_order_channel();
    ftx.subscribe_channel_ticker(true).await;

    let mut terminated = false;
    while !terminated {
        tokio::select! {
            Ok(msg) = listener.recv() => {
                if let UpdateMessage::Ticker {market, bid, ask, bid_size : _, ask_size : _, last_trade : _}= msg {
                    print!("\r{market}: Bid: {:.0}     -     Ask: {:.0}", bid.unwrap(), ask.unwrap());
                }
            }

            _ = signal::ctrl_c() => {
                terminated = true;
            }
        }
    }
}

运行集成测试

该crate的集成测试使用环境变量查找凭据,以建立与FTX交易所的连接。应在FTX上创建一个只读密钥,并将其详细信息设置为在运行测试的机器上的'FTX_API_KEY'和'FTX_SECRET'环境变量。

依赖关系

~10–23MB
~345K SLoC