用户要求更详细地介绍"数据同步"模块。我需要深入了解离线数据同步相关的代码,特别是 write_daily.py 和其他相关文件。让我先读取这些文件。
用户要求更详细地介绍"数据同步"模块。我需要查看更多相关的代码文件,包括 write_ex_daily.py、write_min_bar.py、daily_bar.py 等,来全面了解数据同步的完整机制。
现在我已经收集到了足够的信息来详细介绍"数据同步"模块。我需要从以下几个方面来组织内容:
- 模块整体定位和目标
- 支持的文件格式(.day, .5, .lc1, .lc5 等)
- 核心功能函数详解(编码、追加、查询最后日期、同步)
- 二进制文件格式说明(struct 格式、字节布局)
- 价格/成交量系数体系
- 证券类型自动识别
- 去重机制
- 使用示例
- 与读取模块的配合
让我把这些信息整理成一个详细的文档段落。 数据同步模块的完整文档已更新至 CODE_WIKI.md 的"6. 离线数据模块"章节。以下是该模块的详细介绍。
数据同步模块详解
1. 模块定位
数据同步模块负责 将服务端获取的行情数据写入本地通达信格式的二进制文件,实现"服务端下载 → 本地持久化"的闭环。它支持日线、扩展市场日线、5分钟线、1分钟线/5分钟线(LC格式)四种数据类型的同步写入。
核心文件:
| 文件 | 职责 |
|---|---|
| write_daily.py | A股日线数据写入(.day 文件) |
| write_ex_daily.py | 扩展市场日线写入(.day 文件) |
| write_min_bar.py | 分钟线写入(.5 / .lc1 / .lc5 文件) |
| daily_bar.py | 日线读取与证券类型识别 |
| paths.py | 通达信安装目录检测 |
2. 二进制文件格式
2.1 .day 文件格式(A股日线)
每条记录固定 32 字节,小端序:
| 偏移 | 长度 | 类型 | 字段 | 说明 |
|---|---|---|---|---|
| 0 | 4 | uint32 | date | YYYYMMDD,如 20250115 |
| 4 | 4 | uint32 | open | 开盘价 × 价格系数倒数(A股 ×100) |
| 8 | 4 | uint32 | high | 最高价 × 价格系数倒数 |
| 12 | 4 | uint32 | low | 最低价 × 价格系数倒数 |
| 16 | 4 | uint32 | close | 收盘价 × 价格系数倒数 |
| 20 | 4 | float32 | amount | 成交额(元,直接存储) |
| 24 | 4 | uint32 | vol | 成交量 × 量系数倒数 |
| 28 | 4 | uint32 | reserved | 保留字段,值为 0 |
Struct 格式:`struct.Struct("