Files
easy_tdx_max/CLAUDE.md
T
GitHubandClaude Opus 4.7 50491f9aae feat!: rename project from xmtdx to easy-tdx
- Package directory: src/xmtdx/ -> src/easy_tdx/
- Import path: from easy_tdx import ...
- pip install easy-tdx
- Add LICENSE (MIT) with upstream attribution (pytdx, xmtdx)
- Add NOTICE with detailed attribution
- Update all examples, tests, scripts, docs
- Bump version to 1.0.0

BREAKING CHANGE: import path changed from `xmtdx` to `easy_tdx`

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21 23:21:21 +08:00

2.1 KiB
Raw Blame History

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Build / Test / Lint

# 单元测试(无需网络,使用 tests/fixtures/ 中的 hex 数据)
python -m pytest tests/unit/ -v

# 集成测试(需要网络,默认跳过)
XMTDX_LIVE=1 python -m pytest tests/integration/ -v

# 类型检查(strict mypy
mypy src/

# lint + format
ruff check src/ tests/
ruff format --check src/ tests/

架构

src/easy_tdx/
├── client.py          # TdxClient / AsyncTdxClient(高层 API
├── transport/
│   ├── sync.py        # TdxConnectionsocket+ ping_host / ping_all
│   └── async_.py      # AsyncTdxConnectionasyncio
├── commands/          # 每条命令:build_request() + parse_response(),无 IO
├── codec/             # price / volume / datetime / frame 编解码
└── models/            # 纯 dataclass,无业务逻辑

commands 层不依赖 transport,可独立单测。修改 codec 或 commands 时不需要网络。

协议编解码注意事项

  • 价格编码:变长有符号整数(类 LEB128),bit8=继续,bit7=符号。差分编码(相邻 tick 存 delta)。
  • 成交量编码4 字节自定义浮点(_decode_volume),字节 3=指数,字节 0-2=精度。不可用于价格字段
  • 握手:连接后必须顺序发送 3 条 setup 命令,响应丢弃。
  • 帧格式:16 字节响应头,body 按需 zlib 解压。
  • 新增编解码逻辑时务必在 tests/fixtures/ 中补充 hex fixture 并编写对应的离线解析测试。

已知限制

  • Market.BJget_security_list() 不能稳定获取(服务器端问题),不要尝试依赖它。
  • limit_up / limit_downSecurityQuote 中默认为 None,涨跌停价应通过 get_price_limits()compute_price_limits() 计算。

代码风格

  • ruff: line-length 100, target py310, rules: E/F/I/UP
  • mypy strict mode
  • 纯标准库,零运行时依赖。新增代码不要引入第三方库。