1 个不稳定版本
0.1.0 | 2021 年 1 月 29 日 |
---|
159 在 金融
每月 25 次下载
1MB
17K SLoC
IBKR-API-Rust
Rust 编写的 Interactive Broker 交易 API 的移植 (API_Version=9.76.01)
请在此处查看最新的 IB Tws Api 文档: http://interactivebrokers.github.io/tws-api/introduction.html.
该文档包含有关配置 Trader WorkStation 和 IB Gateway 以启用 API 访问的信息。
请参阅 src/examples/test_helpers/manual_tests.rs 中的示例实现,以了解该库的使用。
客户端将使用的的主要结构和特质是 EClient ,这是一个负责连接到 TWS 或 IB Gateway 并发送请求的结构,以及 Wrapper ,这是一个客户端将实现并声明回调函数的特质,当应用程序从 TWS/IB Gateway 收到消息时,这些函数将被调用。
示例
在下面的示例中,当示例应用程序连接时,TWS 将发送下一个有效的订单 ID。这会导致 Wrapper 回调方法 next_valid_id 被调用,这将开始向 TWS 发送测试请求(请参阅 TestWrapper 中的 start_requests 方法,该方法由 next_valid_id 调用)。
use twsapi::core::errors::IBKRApiLibError;
use twsapi::core::client::EClient;
use std::time::Duration;
use twsapi::examples::test_helpers::TestWrapper;
use std::sync::{Arc, Mutex};
use std::thread;
fn main() -> Result<(), IBKRApiLibError> {
let wrapper = Arc::new(Mutex::new(TestWrapper::new()));
let app = Arc::new(Mutex::new(EClient::new(wrapper.clone())));
println!("getting connection...");
wrapper.lock().expect("Wrapper mutex was poisoned").client = Option::from(app.clone());
app.lock()
.expect("EClient mutex was poisoned")
.connect("127.0.0.1", 4002, 0)?;
thread::sleep(Duration::new(18600, 0));
Ok(())
}
待办事项
- 扩展文档 - 完成
- 编写自动化测试 - 进行中
- 在 TestWrapper 中编写一个异步函数,以检查回调是否已填充 next_valid_id
- 发布到 crates.io
如果您发现错误或希望提出建议,请通过 [email protected] 或提交拉取请求与我联系。
免责声明
本软件由版权所有者和贡献者提供,“现状”和“按原样”提供,并不承担任何明示或暗示的保证,包括但不限于对适销性和针对特定目的的适用性的暗示保证。在任何情况下,版权所有者或贡献者均不对任何直接、间接、偶然、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论这些损害是由于何种原因造成的,无论是否已告知此类损害的可能性,无论这些损害是在合同、严格责任或侵权(包括过失或不计过失)的法律理论中产生的。
依赖项
~8MB
~138K SLoC