ek-ctp 0.1.0

CTP gateway for the enkeep ek ecosystem: MD/TD session drivers mapping CTP wire rows onto ek-data objects over the ek-event bus (pure-logic core; native SDK bridging lands behind the `native` feature).
Documentation

ek-ctp

CTP 期货行情/交易网关(Rust 移植版,enkeep_trade 生态)。

对 enkeep_ctp(vnpy 的 ctp_gateway 移植层)行为逐字移植;0.1.0 为纯逻辑层, native 桥(链接 vendored SDK 二进制)在 0.2.0 交付。

结构

模块 职责
wire CTP 官方字段的最小狗集合(仅 DepthMarketData/InstrumentField/OrderField/TradeField/仓位/资金/插撤单输入)
map CTP 码值 ↔ ek-data 类型(状态/方向/开平/单型/交易所/时间戳/价格修整)
driver 行情/交易两条纯状态机(MdDriver::step/TdDriver::step),零线程零时钟
plugin CtpPlugin:ek-core 宿主插件。出门 9 线值:eTick/eContract/eOrder/eTrade/ePosition/eAccount/ePositionDone/eContractFinish/eLog;进门 eTimer 与 eReq.<gw> 三服务

快速用法

纯逻辑驱动层(不带任何网络库,可直接驱动 mock 做测试):

use ek_ctp::{TdConfig, TdDriver, TdEvent, TdOut, contracts_empty};

let mut td = TdDriver::new("ctp", TdConfig::default(), contracts_empty());
for out in td.step(TdEvent::FrontConnected) {
    // 命令面(TdOut::ReqXxx)交给传输层;数据面(TdOut::Order 等)上总线
}

总线级(同 ek-oms):

let cfg = ek_ctp::CtpConfig { gateway_name: "ctp".into(), ..Default::default() };
host.add_plugin(ek_ctp::CtpPlugin::new(cfg))?;   // 默认构建无传输;动作被吸收

native(0.2.0 计划)

SDK 已同源供应商化:四份 ThostFtdc*.h 头文件 + SE 二进制(dll/so) 存于 native/sdk/,来源 enkeep_ctp 自带的一套(头与 bin 同源配对, crates.io 发布面已 exclude)。 native feature 将以 extern "C" FFI + 手写 shim + 手写 build.rs 接入(零第三方 crate,详见 DESIGN.md)。

生态依赖(expected)

  • ek-core 0.3.0(宿主/服务)
  • ek-data 0.2.2(数据类型)
  • ek-event 0.1.0(总线形态)