upctp

CTP 综合交易平台的完整 Rust 绑定库

v0.10.0 Rust 1.70+ Linux x86_64 MIT License 0 errors 0 warnings

概述

upctp 是上期技术 CTP(Comprehensive Transaction Platform,综合交易平台)的完整 Rust 绑定库。它提供了对 CTP 交易和行情 API 的安全、高效 Rust 封装,支持中国期货市场的所有交易功能。

838 数据类型
502 数据结构体
280 错误码
152 API 方法
177 回调函数
15 示例代码

特性

完整覆盖 100% 覆盖 CTP API 的所有功能
零警告 核心库和示例 0 errors, 0 warnings
安全 Rust 所有权系统保证内存安全
异步友好 Arc<dyn Trait> 回调机制
零配置 无需设置 LD_LIBRARY_PATH,.so 自动嵌入
测试通过 34 个测试全部通过

快速开始

1. 安装

Cargo.toml 中添加依赖:

[dependencies]
upctp = "0.10.0"

2. 无需额外配置

CTP 动态库已嵌入 crate,无需设置 LD_LIBRARY_PATH

cargo build    # 直接编译,无需配置
cargo run      # 直接运行,.so 自动加载

3. 行情示例

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%