CTP 综合交易平台的完整 Rust 绑定库
upctp 是上期技术 CTP(Comprehensive Transaction Platform,综合交易平台)的完整 Rust 绑定库。它提供了对 CTP 交易和行情 API 的安全、高效 Rust 封装,支持中国期货市场的所有交易功能。
完整覆盖 100% 覆盖 CTP API 的所有功能
零警告 核心库和示例 0 errors, 0 warnings
安全 Rust 所有权系统保证内存安全
异步友好 Arc<dyn Trait> 回调机制
零配置 无需设置 LD_LIBRARY_PATH,.so 自动嵌入
测试通过 34 个测试全部通过
在 Cargo.toml 中添加依赖:
[dependencies]
upctp = "0.10.0"
CTP 动态库已嵌入 crate,无需设置 LD_LIBRARY_PATH:
cargo build # 直接编译,无需配置
cargo run # 直接运行,.so 自动加载
use upctp::ffi::{MdApi, MdSpi, CThostFtdcDepthMarketDataField};
use std::sync::Arc;
struct MyMdSpi;
impl MdSpi for MyMdSpi {
fn on_front_connected(&self) {
println!("行情前置连接成功!");
}
fn on_rtn_depth_market_data(&self, p: Option<&CThostFtdcDepthMarketDataField>) {
if let Some(d) = p {
let id: String = d.InstrumentID.iter()
.take_while(|&&c| c != 0)
.map(|&c| c as u8 as char)
.collect();
println!("[{}] 最新价={} 成交量={}", id, d.LastPrice, d.Volume);
}
}
}
fn main() {
let spi = Arc::new(MyMdSpi);
let mut md_api = MdApi::new("", false, false, false);
md_api.register_spi(spi);
md_api.register_front("tcp://180.168.146.187:10131");
md_api.init();
md_api.join();
}
| 测试项 | 结果 |
|---|---|
| 库编译 | 0 errors, 0 warnings |
| 示例编译 (15个) | 0 errors, 0 warnings |
| 单元测试 (34个) | 34 passed, 0 failed |
| 无需 LD_LIBRARY_PATH | ✅ 自动加载 .so |
| FFI 绑定覆盖 | 100% |