下载
登录/ 注册
主页
论坛
视频
热股
可转债
下载
下载

[分享] 通达信本地 vipdoc 数据解析 + 数据新鲜度审计(纯标准库,无依赖、只读)

26-09-29 13:25 205次浏览
易三元
+关注
博主要求身份验证
登录用户ID:
不是 pytdx 那类联网行情接口 —— 这个只做两件事:**读本地文件**、**审计本地数据完整性**。零网络、零第三方依赖(只用标准库)、对 `vipdoc` 只读,附 59 项自测,没装通达信的机器也能跑通。

起因是自己踩了三个坑,都是"不报错但给你错数据"那种:

**1. `.lc1` 的日期字段是位编码,不是 YYYYMMDD**
前 2 字节 uint16:`year = v//2048 + 2004; month = (v%2048)//100; day = (v%2048)%100`(实测 `0xB3A0`=45984 → 2026-09-28)。
写成 `v % 100` 会解出 `2026-09-84` —— **不存在的日期,而且不报错**,一路传下去:覆盖率审计全库 0% 命中、交易日判断把休市日当开市日。

**2. 用文件 mtime 判断"数据更新到哪天"是错的**
盘后批量下载、复制目录、备份恢复都会刷 mtime,但不代表文件里有当天数据。正确口径 = 读**末条记录的日期**。本机实测样本:19,253 个文件、覆盖率 98.7%、249 个缺口(清单里逐个打印末条日期 —— 绝大多数是长期停牌/退市标的,不是"漏抓")。

**3. 交易日判断的"未知"必须是个正当返回值**
周末 + 节假日表,表覆盖不到就返回"未知"(退出码 3)并提示核对交易所公告,而不是默认当交易日。节假日表是从本地指数文件反推的(多个指数文件都缺记录的工作日 = 休市),并且要求至少传 2~3 份做并集:只传 1 份会凭空多出 4 个假休市日(20260617/20260625/20260630/20260701 这 4 天在别的指数文件里有记录)。

**怎么确认它没骗你**:合成样本校准用例要求覆盖率**恰好** 60.0%(10 个文件对 6 个)、四个分组分项不等(66.7/66.7/50/50)—— 凑数或写死常量过不了;把 `.lc1` 当 `.day` 解、非法日期 20260984、空目录,全部必须当场 SANITY_FAIL。

**边界**:非官方,与通达信无关;实测于 Windows 版 V7.72(2026-09);盘后本地数据非实时;`.day`/`.lc1` 不复权(不处理除权);不产生任何买卖信号、不连行情服务器。

```
python tests/run_selftest.py   # 59 项,无需任何数据
python tdx_fmt.py --lc1 /sz/minline/sz000001.lc1 --last 5
python audit_coverage.py --dir --date 20260928
python check_trade_day.py 20260928
```

仓库:**https://github.com/syben112/tdx-local-data-toolkit**

想问下同样是本地数据流的各位:`.lc1` 这类位编码日期、以及"滚动窗口"(一个文件约 160 个交易日后老数据被覆盖)你们的处理方式是什么?我现在是每天转存,感觉有点土。
打开淘股吧APP
0
评论(0)
收藏
展开
热门 最新
提交