ek-data 0.2.3

Trading data contracts for the enkeep ek ecosystem: venue enums, zero-dep epoch-nanosecond time, decimal-exact price rounding, vt-symbol convention, bus event dictionary, tick/bar/order/trade/position/account/contract objects and request objects (Python enkeep_trade trader/object.py + constant.py, faithfully ported).
Documentation

ek-data

enkeep ek 生态的交易数据契约 crate:交易所/方向/状态等类型枚举、 零依赖纪元纳秒时间面、十进制精确的价格取整、vt_symbol 标识约定、 总线事件字典,以及 tick/bar/order/trade/position/account/contract 与四个请求对象。

由 Python 原稿 enkeep_trade/trader/constant.py + trader/object.py 逐字段逐方法移植(对照表见 DESIGN.md 与 crate 文档)。

快速开始

[dependencies]
ek-data = "0.2"
# 需要 JSON 收发时:
# ek-data = { version = "0.2", features = ["serde"] }
use ek_data::{floor_to, round_to, vt_symbol, Exchange, OrderData, Status, TickData};

// 标识约定:CFFEX.IF2506(交易所线值沿 Python .value,CBOT→CBT/EUREX→EUX)
assert_eq!(vt_symbol("IF2506", Exchange::CFFEX), "CFFEX.IF2506");

// 价格对齐最小变动价位:十进制精确(朴素 f64 会把 floor(0.3/0.1) 算成 0.2)
assert_eq!(floor_to(0.3, 0.1), 0.3);
assert_eq!(round_to(2.5, 1.0), 2.0); // half-even,同 Python round(Decimal)

// 订单与派生态
let mut order = OrderData { gateway_name: "xt".into(), orderid: "1".into(), ..Default::default() };
assert_eq!(order.en_orderid(), "xt.1");
assert!(order.is_active()); // SUBMITTING/NOTTRADED/PARTTRADED
order.status = Status::ALLTRADED;
assert!(!order.is_active());

// 时间:零依赖,i64 纪元纳秒(可表达 1677-09-21 .. 2262-04-11)
let t = ek_data::parse_civil("2024-12-25 09:30:01.5").unwrap();
assert_eq!(ek_data::format_civil(t), "2024-12-25 09:30:01.500000000");

// 逐 tick 热路径:复用缓冲,零分配拼 en_symbol
let tick = TickData { symbol: "IF2506".into(), exchange: Exchange::CFFEX, ..Default::default() };
let mut buf = String::with_capacity(32);
tick.en_symbol_into(&mut buf);
assert_eq!(buf, "CFFEX.IF2506");

设计要点

  • 零依赖底线:default 路径无任何依赖;serde 是 optional feature(default off)。
  • 一个结构体一个文件:改一个字段只动一个文件。
  • 派生 ID 方法化:en_symbol/en_orderid/en_positionid/available 即时计算,不存冗余状态。
  • 枚举线值:英文令牌为标准线值,FromStr 额外容忍 Python 时代中文旧值(「多」「开」…)。
  • 价格工具是十进制精确的:round_to/floor_to/ceil_to/get_digits 对齐 Python Decimal 语义。

Feature

feature 作用
(默认) 纯 std,无依赖
serde 结构体/枚举 JSON 序列化(字段名即 Python 字段名)

许可

MIT