pub struct TickData {Show 43 fields
pub gateway_name: String,
pub symbol: String,
pub exchange: Exchange,
pub datetime: DtNs,
pub datetime_invalid: bool,
pub trading_day: Option<i32>,
pub action_day: Option<i32>,
pub update_time: String,
pub update_millisec: i64,
pub name: String,
pub volume: f64,
pub turnover: f64,
pub open_interest: f64,
pub last_price: f64,
pub last_volume: f64,
pub limit_up: f64,
pub limit_down: f64,
pub open_price: f64,
pub high_price: f64,
pub low_price: f64,
pub pre_close: f64,
pub pct_change: f64,
pub bid_price_1: f64,
pub bid_price_2: f64,
pub bid_price_3: f64,
pub bid_price_4: f64,
pub bid_price_5: f64,
pub ask_price_1: f64,
pub ask_price_2: f64,
pub ask_price_3: f64,
pub ask_price_4: f64,
pub ask_price_5: f64,
pub bid_volume_1: f64,
pub bid_volume_2: f64,
pub bid_volume_3: f64,
pub bid_volume_4: f64,
pub bid_volume_5: f64,
pub ask_volume_1: f64,
pub ask_volume_2: f64,
pub ask_volume_3: f64,
pub ask_volume_4: f64,
pub ask_volume_5: f64,
pub localtime: Option<DtNs>,
}Expand description
Tick 数据:最后成交、盘口快照、日内统计。
字段与 Python TickData 同名同义(snake_case);缺省值同 Python(0 / “”)。
Fields§
§gateway_name: String上游网关名(BaseData.gateway_name,object.py:31)
symbol: String合约代码
exchange: Exchange交易所
datetime: DtNs时间戳(UTC 纪元纳秒;Python 为本地 naive datetime)
⚠ 只在 Self::datetime_invalid 为假时可信;为真时它是 DtNs 的缺省值
(纪元零点),拿它参与排序/绘图会把这条行情甩到 1970 年。
datetime_invalid: bool时间戳是否已知不可用(0.3.0,边界零丢弃)。
true = 柜台没给时间,或给的时间戳畸形("00000000" / "99:99:99")。
这种行情仍然上岸:量价盘口都是真事实,丢掉的只是一条时间轴。
为什么是「无效」而不是「有效」:这个字段的引入目的是让知道时间
不可用的生产方(目前只有 ek-ctp)主动标记,而不是让所有生产方先失效再
逐个适配。反过来命名(datetime_ok + derive(Default) 给 false)会让
每一个尚未适配的网关(ek-tq 等)的 tick 时间轴静默消失 —— 那正是这份
改造要消灭的那类静默故障,不能自己再造一个。
缺省 false = 「没人说它坏」= 沿今天的行为(时间有效)。消费侧要判就读
Self::datetime_if_ok,不要在别处手判这个布尔位。
trading_day: Option<i32>交易日(缺省 None;Python 缺省空串)
action_day: Option<i32>行动日/自然日(缺省 None;Python 缺省空串)
update_time: String原始 HH:MM:SS 文本(上游原样)
update_millisec: i64毫秒段
name: String合约中文名
volume: f64当日累计成交量
turnover: f64当日累计成交额
open_interest: f64持仓量/流通量
last_price: f64最新价
last_volume: f64本笔成交量
limit_up: f64涨停价
limit_down: f64跌停价
open_price: f64今开
high_price: f64最高
low_price: f64最低
pre_close: f64昨收
pct_change: f64涨跌幅(%)
bid_price_1: f64买一价
bid_price_2: f64买二价
bid_price_3: f64买三价
bid_price_4: f64买四价
bid_price_5: f64买五价
ask_price_1: f64卖一价
ask_price_2: f64卖二价
ask_price_3: f64卖三价
ask_price_4: f64卖四价
ask_price_5: f64卖五价
bid_volume_1: f64买一量
bid_volume_2: f64买二量
bid_volume_3: f64买三量
bid_volume_4: f64买四量
bid_volume_5: f64买五量
ask_volume_1: f64卖一量
ask_volume_2: f64卖二量
ask_volume_3: f64卖三量
ask_volume_4: f64卖四量
ask_volume_5: f64卖五量
localtime: Option<DtNs>本地收包时间(UTC 纪元纳秒;Python 缺省 None)
Implementations§
Source§impl TickData
impl TickData
Sourcepub fn datetime_if_ok(&self) -> Option<DtNs>
pub fn datetime_if_ok(&self) -> Option<DtNs>
唯一推荐的时间戳取值口:已知时间不可用时返回 None。
直接读 self.datetime 会把“时间不可得“当成 1970-01-01,而那个值在排序、
去重、画 K 线时看不出任何异常 —— 静默错比显式缺更危险。
Sourcepub fn en_symbol_into(&self, buf: &mut String)
pub fn en_symbol_into(&self, buf: &mut String)
零分配版本:追加到复用缓冲(逐 tick 热路径;每笔行情少一次堆分配)。
Sourcepub fn reach_limit_up(&self, diff_price: f64) -> bool
pub fn reach_limit_up(&self, diff_price: f64) -> bool
tick 是否触及涨停(object.py:99;diff 为容差,非负向给)。
注意原作怪癖(字节级保留):tick 缺省字段(0.0/0.0)时
bid_price_1(0) + 0 >= limit_up(0) 成立 → 返回 true;
使用方须先落真实价格再作判,或自行先校验 limit_up>0。
Sourcepub fn reach_limit_down(&self, diff_price: f64) -> bool
pub fn reach_limit_down(&self, diff_price: f64) -> bool
tick 是否触及跌停(object.py:105)。
Sourcepub fn reach_limit(&self, diff_price: f64) -> bool
pub fn reach_limit(&self, diff_price: f64) -> bool
触及涨停或跌停(object.py:111)。