#connector #bybit #python-3 #websocket #api #fork #pybit-rust

bin+lib bybit_rs

Bybit的HTTP(bybit)和WebSockets API的Python3官方连接器的Rust分支

8个版本

0.1.7 2023年8月29日
0.1.6 2023年8月28日

#2371 in 魔法豆

Download history 2/week @ 2024-06-26 46/week @ 2024-07-03 1/week @ 2024-07-10 11/week @ 2024-07-17 2/week @ 2024-07-24

62 个月下载量

MIT许可证

140KB
2.5K SLoC

pybit Python库在Rust中的分支

为Bybit交易所第五版爱好者及创作者

Bybit的HTTP和WebSockets API的官方Python3连接器。

目录

关于

简单来说,bybit-rs(Bybit + Rust)是Bybit HTTP和WebSocket API的Python(pybit库)官方轻量级一站式模块的分支。最初由Verata Veritatis创建,现在由Omambia DauglousDennis Mwangi维护——然而,你仍然欢迎贡献!

在设计时考虑到了以下愿景

我本人从未是自动生成的连接器的粉丝,这些连接器使用了一个你不想要的模块的混乱(抱歉,bravado),我希望用很少的外部资源构建自己的Python3专用连接器。连接器的目标是提供一个易于使用且性能高的模块,它有一个活跃的问题和讨论板,可以持续改进。

开发

bybit-rs正在积极开发中,新的Bybit API更改应该会很快出现在bybit-rs上。 pybit使用reqwestwebsocket作为其方法,以及其他内置模块。任何人都可以分支/分支存储库并添加自己的升级。如果你认为你对模块做出了实质性的改进,请提交一个pull请求,我们将乐意查看。

安装

bybit 需要Python 3.9.1或更高版本。模块可以通过手动安装或使用 pip 通过 PyPI 安装。

cargo add bybit-rs

用法

您可以这样检索特定市场

use std::{
    collections::{BTreeMap, HashMap},
    sync::Arc,
};

use bybit::{
    asset::{self, Asset},
    http_manager::{HttpManager, Manager},
    market::{self, Market},
    trade::{self, Trade},
};

创建一个HTTP会话并通过WebSocket连接到主网的Inverse

let http_api_key =""
let http_api_secret =""

let testnet = ""

let manager = Arc::new(HttpManager::new(http_api_key, http_api_secret, testnet));

获取市场K线数据

let mut query: HashMap<String, String> = HashMap::new();
query.insert("category".to_string(), "inverse".to_string());
query.insert("symbol".to_string(), "BTCUSD".to_string());
query.insert("interval".to_string(), "60".to_string());
query.insert("start".to_string(), "1670601600000".to_string());
query.insert("end".to_string(), "1670608800000".to_string());

// market object
let market: market::MarketHTTP = market::MarketHTTP::new(manager.clone());

match market.get_kline(query).await {
    Ok(result) => println!("{:?}", result),
    Err(e) => println!("{:?}", e),
}

下订单

let mut query: HashMap<String, String> = HashMap::new();
query.insert("category".to_owned(), "linear".to_owned());
query.insert("symbol".to_owned(), "BTCUSDT".to_owned());
query.insert("orderType".to_owned(), "Limit".to_owned());
query.insert("qty".to_owned(), "0.06".to_owned());
query.insert("price".to_owned(), "25000".to_owned());
query.insert("side".to_owned(), "Buy".to_owned());

let trade: trade::TradeHTTP = trade::TradeHTTP::new(manager.clone());

match trade.place_order(query).await {
    Ok(result) => println!("{:?}", result),
    Err(e) => println!("{:?}", e),
}

获取单个订单

let mut query: HashMap<String, String> = HashMap::new();
query.insert("category".to_owned(), "linear".to_owned());
query.insert("limit".to_owned(), "1".to_owned());
query.insert("symbol".to_owned(), "BTCUSDT".to_owned());
query.insert("openOnly".to_owned(), "0".to_owned());

match trade.get_open_orders(query).await {
    Ok(result) => println!("{:?}", result),
    Err(e) => println!("{:?}", e),
}

取消单个订单

let mut query: HashMap<String, String> = HashMap::new();
query.insert("category".to_owned(), "linear".to_owned());
query.insert(
    "orderId".to_owned(),
    "3380b972-a334-4d00-87e9-3423fa27602f".to_owned(),
);
query.insert("symbol".to_owned(), "BTCUSDT".to_owned());
query.insert("settleCoin".to_owned(), "USDT".to_owned());

match trade.cancel_order(query).await {
    Ok(result) => println!("{:?}", result),
    Err(e) => println!("{:?}", e),
}
```

### Cancel All Orders

```rust
let mut query: HashMap<String, String> = HashMap::new();
query.insert("category".to_owned(), "linear".to_owned());
query.insert("symbol".to_owned(), "".to_owned());
query.insert("settleCoin".to_owned(), "USDT".to_owned());

match trade.cancel_all_orders(query).await {
    Ok(result) => println!("{:?}", result),
    Err(e) => println!("{:?}", e),
}

查看以下示例Rust文件或端点列表,以获取更多关于可用端点和方法的详细信息。在 libary Manager 方法上的使用示例可以在 示例文件夹 中找到。

联系

您可以在 Ngeni Labs 支持电报群 中寻求支持。

致谢

感谢这些pybit库的优秀贡献者 官方社区库 以及 NGENI LABs github 团队对您的技术支持

捐赠

如果您觉得这个库很有用,请捐赠给

USDT

1. TRC20 TVGdWAZ3MetiRyUhkR4CjR7YFi99TQvZ2L
2. ERC20: 0x43bFd041eB6F6ccdC247B4162EB7D056B4bF97BA

BTC: bc1q8mcktjuwh9ufy7tcz4ep7u5uhef3z2m8qdnurs ETH:0x43bFd041eB6F6ccdC247B4162EB7D056B4bF97BA

依赖关系

~16–30MB
~572K SLoC