2 个不稳定版本
0.9.0 | 2023年11月14日 |
---|---|
0.1.0 | 2023年4月18日 |
#175 在 WebSocket
83KB
1K SLoC
kalshi-rust
Kalshi 交易 API 的 Rust 包装器
这是一个为 Rust 用户编写的 Kalshi 交易 API 的包装器。这个包装器是异步的,通常比开发者提供的官方 Python API 性能更好,如下所示:KalshiDevAPI。有关项目的更多详细信息,请访问 github。
lib.rs
:
一个 HTTPS 和 WebSocket 包装器,允许用户为 Kalshi 事件交易平台 编写交易机器人。
kalshi-rust 是异步的,性能强大,简洁。跳过冗长且令人厌烦的 HTTPS 请求,使用此包装器快速编写 Rust 中的闪电般快速的交易机器人!
截至版本 0.9.0,HTTPS 功能已全部完成,但 WebSocket 支持和高级 API 访问功能尚未完成。如果您想跟进 kalshi-rust 的开发,报告错误或查看示例交易脚本,请随时访问 github!一颗星也将非常感激,我是一个免费为学生开发者编写的,任何认可都非常有帮助!
Kalshi 结构体
Kalshi 结构体是这个 crate 的核心组件。所有身份验证、订单路由、市场请求和仓位快照都通过结构体及其方法处理。
更多详细信息,请参阅 Kalshi。
要快速入门/初学者指南,请跳转 这里。
以演示模式初始化 Kalshi 结构体。
use kalshi::Kalshi;
use kalshi::TradingEnvironment;
let kalshi_instance = Kalshi::new(TradingEnvironment::DemoMode);
快速入门指南
首先,将 Kalshi 结构体作为依赖项列在你的 crate 中。
kalshi = { version = "0.9"}
初始化 Kalshi 结构体并使用您的身份验证详情登录
- 重要:用户的身份验证令牌每三十分钟过期,这意味着您需要每三十分钟调用一次登录函数,以确保您使用有效的令牌保持身份验证。
- 不建议将用户/密码信息以明文形式存储,此处提供了一个从本地环境变量中提取用户详情的实现方式 (点击查看)
use kalshi::Kalshi;
use kalshi::TradingEnvironment;
let username = "[email protected]";
let password = "example_password";
let mut kalshi_instance = Kalshi::new(TradingEnvironment::DemoMode);
kalshi_instance.login(username, password).await?;
登录后,您可以无问题地调用crate中存在的任何方法。以下是一个购买11月13日纽约温度市场的“是”合约的脚本。
let new_york_ticker = "HIGHNY-23NOV13-T51".to_string();
let bought_order = kalshi_instance
.create_order(
kalshi::Action::Buy,
None,
1,
kalshi::Side::Yes,
new_york_ticker,
kalshi::OrderType::Limit,
None,
None,
None,
None,
Some(5)).await.unwrap();
请参阅其他文档的其余部分以了解所有其他方法的详细信息!本crate中包含了kalshi API文档中找到的所有方法。
返回值
当用户使用kalshi struct调用方法时,数据通常以封装服务器返回的json字段的struct的形式返回。struct中的所有数据都是所有者,因此用户可以无问题地访问属性。
示例
获取交易所当前状态
返回一个表示当前是否活跃交易的struct。
use kalshi::Kalshi;
use kalshi::TradingEnvironment;
let kalshi_instance = Kalshi::new(TradingEnvironment::DemoMode);
kalshi_instance.get_exchange_status().await.unwrap();
获取5个其他市场事件
返回一个包含'event' struct和游标的vector。
use kalshi::Kalshi;
use kalshi::TradingEnvironment;
let kalshi_instance = Kalshi::new(TradingEnvironment::DemoMode);
kalshi_instance.get_multiple_events(Some(5), None, None, None, None).await.unwrap();
检查用户余额
返回一个代表用户余额(以分为单位)的i64。
use kalshi::Kalshi;
use kalshi::TradingEnvironment;
let kalshi_instance = Kalshi::new(TradingEnvironment::DemoMode);
kalshi_instance.get_balance();
依赖项
~6–21MB
~289K SLoC