1 个不稳定版本
0.1.0 | 2022 年 6 月 9 日 |
---|
#2 在 #tws
每月 89 次下载
745KB
15K SLoC
IB-TWSAPI
本项目最初是 Brett Miller 编写的 IBKR-API-Rust 包的分支
备注
- 并非所有 TWS 消息都已完全测试其正确性,因此该软件包最高只能视为 alpha 级质量
- 请将任何特定、明显的错误发送给我或提交 PR 进行审查
与原始包的更改
- 此实现不需要泛型来创建和使用自定义包装器
- 只需要实例化一个对象,而不是两个
- 删除了 EClient 和 Wrapper 对象周围的 ArcMutex 习语
- 使用基于通道的事件调度器,而不是基于调用的调度器
- 迁移到使用 rust_decimal 包,而不是 BigDecimal
说明
- 将 example_wrapper.rs 复制到您的项目中,重命名,并根据需要重新实现功能。
- 使用您自己的实现编写应用程序。
原始包描述
Interactive Broker 交易 API 的 Rust 版本(API_Version=9.76.01)的移植
请在此处查看最新的 IB Tws Api 文档: http://interactivebrokers.github.io/tws-api/introduction.html.
文档中包含有关配置 Trader WorkStation 和 IB Gateway 以启用 API 访问的信息。
有关此库的使用,请参阅 示例实现。
客户端将使用的的主要结构和特性有 EClient ,这是一个负责连接到 TWS 或 IB Gateway 并发送请求的结构体,以及 Wrapper ,这是一个客户端将实现的特征,用于声明当应用程序从 TWS/IB Gateway 接收消息时被调用的回调函数。
示例
以下示例中,当样本应用程序连接时,TWS 将发送下一个有效的订单 ID。这将导致 Wrapper 回调方法 next_valid_id 被调用,进而启动向 TWS 发送测试请求(请参阅 TestWrapper 中的 start_requests 方法,该方法由 next_valid_id 调用)。
use log::*;
use std::thread;
use std::time::Duration;
use ibtwsapi::core::errors::*;
use ibtwsapi::examples::example_wrapper::ExampleWrapper;
pub fn main() -> Result<(), IBKRApiLibError> {
match log4rs::init_file("./log_config.yml", Default::default()) {
Ok(_) => (),
Err(e) => {
println!("Error: {}", e.to_string());
return Err(IBKRApiLibError::ApiError(TwsApiReportableError::new(
-1,
"-1".to_string(),
"Failed to create logger!!".to_string(),
)))
}
};
let mut app = ExampleWrapper::new();
info!("getting connection...");
//use port 7497 for TWS or 4002 for IB Gateway, depending on the port you have set
app.client.connect("127.0.0.1", 4002, 0)?;
loop {
match app.process_event() {
Ok(_) => continue,
Err(e) =>
{
error!("{}", e.to_string());
break ();
},
};
}
thread::sleep(Duration::new(2, 0));
Ok(())
}
待办事项
- 执行性能分析并收集性能数据
- 运行 rust-clippy 检查器
免责声明
本软件由版权所有者和贡献者提供“原样”并且不提供任何明示或暗示的保证,包括但不限于适销性和特定用途适用性的暗示保证。在任何情况下,版权所有者或贡献者均不对任何直接、间接、偶然、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论这些损害是由于何种原因引起的,以及基于何种责任理论,包括合同、严格责任或侵权(包括疏忽或不计后果)。
依赖项
~8MB
~139K SLoC