Skip to content

Releases

v0.5.0 — 换手率支持:股本/上市日期/真实名称入库

Choose a tag to compare

@xbfighting xbfighting released this 08 Jul 10:27

亮点

换手率一个 JOIN 搞定(closes #1):

SELECT d.date, d.volume / s.ltag AS turnover_pct
FROM daily_data d JOIN stock_info s ON RIGHT(s.code, 6) = d.code
WHERE d.code = '000001' ORDER BY d.date DESC LIMIT 20;

volume(手)与 ltag(流通A股,万股)的单位差恰好抵消,结果直接是百分数。

新功能

  • 股本/上市日期入库(464d239,#46,closes #1 #45):stock_info 新增 zgb 总股本 / ltag 流通A股(万股)/ capital_date 股本更新日 / list_date 上市日期,来自通达信本地 base.dbf,随盘后下载自动更新;list_date 可直接用于次新股过滤
  • stock_info.name 真实股票名称(b68f447,#43,closes #42):来自本地 infoharbor_ex.code,含退市名,ST/退市过滤可直接用库内名称;文件缺失/被锁回退占位符

修复与加固

  • SMB 挂载下运行中的通达信锁定文件导致同步中断——名称读取降级不中断(3a70f04,#44)
  • blocks 四条板块链统一"缺失/不可读/格式异常"单链降级,不吞其他链结果(464d239)
  • stock-list 改为单事务快照替换:可重复运行刷新股本/名称,失败整体回滚保留旧快照

升级说明

  • 老库执行一次 scripts/migrate_stock_info_capital.sql(ALTER ×4),然后 tdx2db stock-list --db-only 填充
  • 股本为当前快照口径:股本变动点之前的历史换手率会失真,精确历史需自行结合 gbbq(详见 README FAQ)

v0.4.0 — 板块同步:行业/概念/指数/地区自动入库

Choose a tag to compare

@xbfighting xbfighting released this 07 Jul 09:27

亮点

`tdx2db sync` 现在自动同步板块-个股关系——行业(881 研究行业三级)、概念、指数(含中证500/1000 等跨市场指数成分)、地区、风格,全部来自通达信本地板块文件,随盘后数据下载自动更新。不再需要从通达信软件手工导出板块 CSV。

-- 全部二级行业(板块分析的常用口径)
SELECT DISTINCT block_name FROM block_stock_relation
WHERE block_type = '行业' AND block_level = 2;

新功能

  • blocks 命令(240dd6f,#40 #41,closes #39):四条本地文件数据链(infoharbor_block.dat / tdxhy.cfg×tdxzs3.cfg / spblock.dat / base.dbf),全量快照式写入 block_stock_relation(block_type + block_level + 可空 block_code);单事务替换,失败自动回滚保留旧快照;sync 自动包含,status 纳入统计
  • Windows CI 矩阵 + 二进制解析回归测试(1eac346/280a699,#35 #38,closes #34):ubuntu+windows × 3 版本 Python;.day/.lc5 合成与真实文件切片双料 fixture
  • 文档(cd64147,#37,closes #36):README 定位与同类项目对比表;AGENTS.md 消费端复权指南

升级说明

  • 老用户执行一次 scripts/migrate_block_relation.sql(该表此前从未有写入路径),或对已建新表的库补 ALTER TABLE block_stock_relation ADD COLUMN block_level INTEGER
  • 板块名以 tdxzs.cfg 官方全名为准,与通达信软件导出 CSV 偶有变体,跨口径对齐用 block_code

数据验证:136,143 条关系与实际使用的导出 CSV 全量比对(行业 127/127、地区 32/32、概念 269/270、指数调仓后新名单),八项质量检查全绿。

v0.3.1 — 发布 PyPI:pip install tdx2db

Choose a tag to compare

@xbfighting xbfighting released this 06 Jul 06:34

亮点

tdx2db 现已发布到 PyPI:https://pypi.org/project/tdx2db/

pip install tdx2db              # 默认支持 SQLite,零配置开箱即用
pip install 'tdx2db[postgres]'  # PostgreSQL
pip install 'tdx2db[mysql]'     # MySQL
pip install 'tdx2db[all]'       # 全部驱动

安装后直接使用 tdx2db sync,无需 clone 仓库。本 release 涵盖 v0.3.0 + v0.3.1 全部变更(v0.3.0 存在 .env 读取缺陷,请直接使用 0.3.1)。

新功能

  • pip install tdx2db + tdx2db 命令行入口(3803608,#27):包目录 src/ 改名 tdx2db/,pyproject 迁移 PEP 621;数据库驱动改为可选依赖(extras),默认安装仅 SQLite,缺驱动时报错附带安装命令;python main.py 老用法保持兼容
  • tdx2db status 命令(42b40b7,#29):只读查看每表行数/覆盖股票数/日期范围,支持 --json;不需要 TDX_PATH;衍生分钟表覆盖缺口自动告警
  • Windows 路径自动探测(08c459e,#33):TDX_PATH 未配置时探测 C/D/E 盘常见安装目录(new_tdx/zd_zsone/tdx/new_jyplug),显式配置永远优先
  • AI agent 支持(a2de4c0,#31):新增 AGENTS.md(schema/典型查询/陷阱清单)与 Claude Code skill tdx2db-query

Bug 修复

  • SQLite 下第二次增量同步全部失败(MAX(date) 返回 TEXT 导致 latest + timedelta 崩溃),storage 层统一归一化为 datetime(3803608)
  • 分钟线衍生表(15/30/60)缺口无法通过增量重跑自愈——增量起点从只查 minute5 改为按表分别计算(42b40b7,closes #11)
  • v0.3.1:pip 安装场景下工作目录的 .env 被静默忽略(load_dotenv 默认从 site-packages 向上查找),改为从当前工作目录向上查找(a2de4c0 / bd5956c)

升级说明

  • 老用户(clone 运行)无需迁移,python main.py sync 用法不变
  • 开发环境安装方式改为 pip install -e '.[all]'

v0.2.0 — 数据正确性修复 + 开源基础设施

Choose a tag to compare

@xbfighting xbfighting released this 03 Jul 10:38

首个正式 release。强烈建议所有老用户升级并重导数据,见下方数据完整性说明。

⚠️ 数据完整性:v0.2.0 之前导入的数据不完整

旧版本存在两个静默数据缺失 bug,如果你在此之前建库,建议升级后重跑:

python main.py stock-list --db-only   # 重新同步股票列表(补科创板 688 / 创业板 301)
python main.py sync                   # 增量补齐缺失历史(幂等,不会产生重复)
  • 科创板 688 / 创业板 301 段被静默排除(#9):股票列表正则 bug,约 1070 只股票从未入库
  • 新股全历史被静默过滤(#10、#12/#13):全表 MAX(date) 增量检测导致库里没有的股票被跳过;daily --auto-start 同类残留入口已在 #13 修复(改逐股票精确增量)
  • SQLite/MySQL 增量写入完全失效(#16/#17):pd.Timestamp 绑定错误导致数据实际写不进去,感谢 @jaden1q84 在 #6 的方案

防呆与安全

  • 唯一约束内建进表模型,新用户零手动步骤;老库迁移脚本含 MySQL 版并附自检 SQL(#17)
  • 数据库连接失败给中文可行动指引;DB_PORT 配错给明确错误(#19)
  • storage 公开 API 表名/列名白名单补全;Actions 最小权限;移除 --db-password 参数;URL.create 拼接(#19)

易用性

  • --market 可省略(从 code 自动推断);修复漏写时静默全市场同步(#25)
  • 日志降噪 ~3 万行 → 一条进度条 + 汇总行;失败率 >1% 退出码非 0,cron 可监控(#25)
  • --start-date 连字符命名(旧拼写兼容);LOG_LEVEL / DB_BATCH_SIZE 配置真正生效(#25)
  • README 重排(表结构文档 / code 格式差异警告 / FAQ);新增 CONTRIBUTING 与 bug 模板(#23)

开源基础设施

  • 补 MIT LICENSE 文件(此前 README 声明 MIT 但无文件)
  • 提交 poetry.lock;Python 版本口径统一 >=3.9;移除 pyproject 中的镜像硬编码(#21)
  • 测试套件从零到 35 个用例,CI 三矩阵(3.9/3.10/3.11)首次全绿(#15)

Full Changelog: https://github.com/xbfighting/tdx2db/commits/v0.2.0