8个版本
0.1.7 | 2023年8月29日 |
---|---|
0.1.6 | 2023年8月28日 |
#2371 in 魔法豆
62 个月下载量
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 Dauglous和Dennis Mwangi维护——然而,你仍然欢迎贡献!
在设计时考虑到了以下愿景
我本人从未是自动生成的连接器的粉丝,这些连接器使用了一个你不想要的模块的混乱(抱歉,
bravado
),我希望用很少的外部资源构建自己的Python3专用连接器。连接器的目标是提供一个易于使用且性能高的模块,它有一个活跃的问题和讨论板,可以持续改进。
开发
bybit-rs
正在积极开发中,新的Bybit API更改应该会很快出现在bybit-rs
上。 pybit
使用reqwest
和websocket
作为其方法,以及其他内置模块。任何人都可以分支/分支存储库并添加自己的升级。如果你认为你对模块做出了实质性的改进,请提交一个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