Skip to content

Releases: openbot-coder/pytdxdata

v0.6.2 — 修复美股分钟 K 线时间戳时区错位

Choose a tag to compare

@openbot-coder openbot-coder released this 13 Oct 08:29

修复:美股分钟级 K 线的 datetime 时区错位

通达信 EX 通道返回的美股分钟线时间戳把两个时区拼进了同一个五元组:日期分量是美东交易日(协议 zipday),时分分量却是北京时间(tminutes)。直拼出的 datetime 会把同一交易日的下午半场排到上午半场之前 —— 单日 390 根不仅首末颠倒,而且全部落在同一个北京自然日里。

观测项 修复前 修复后
单日 390 根的日期分布 全部落在 10-12(hour 0~23 混在一起) 10-12 的 21:3123:59(149 根)+ 10-13 的 00:0004:00(241 根)
时间轴 上午半场被排到下午半场之前 严格单调递增
count=30 是否取到真正最新的 30 根 否(拿到上一交易日的 23:30~23:59) 是(当日收盘段 03:31~04:00)
首根 open / 末根 close 对日线 对不上 逐位相同(10-06 ~ 10-12 五个交易日实测)

现在 SecurityBar.datetime 统一为北京时间,A股 / 港股 / 期货零行为变化。新增两个只读属性:

  • trading_date — 归属交易日 YYYY-MM-DD。美股一个交易日横跨两个北京自然日,按交易日聚合(分钟线合成日线、日内统计)必须用它,不能用 datetime.date()
  • is_us — 是否美股(EX 通道 US_STOCK)

归一化在 SecurityBar.__post_init__ 中实现,因此 EX 的两条 K 线命令路径(_bars_ex 的 0x23FF 与日期区间二分所依赖的 MAC 0x122E)自动共用同一口径。

安装

pip install -U pytdxdata==0.6.2

验证

  • 新增 9 项针对性回归测试,全量 191 passed
  • 用安装的 wheel(非源码树)实测 usAAPL 分钟线:10-06 ~ 10-12 五个完整交易日各 390 根、严格单调、首根 open 与末根 close 对日线逐位相同、成交量差 ≤ 1
  • 港股 hk00700 / A股 sh600000 无回归

兼容性与注意

  • 本版只修 K 线。EX 分时(get_minutes)对美股返回的 MinuteBar.hour 仍是未取模的连续分钟数(实测可达 27,即次日 03:xx),留待下一版(见 Issue #1 讨论)
  • 分钟线缓存 TTL 为 60 秒,升级后旧缓存最多残留 1 分钟即自然失效,无需手动清理;日线不受本缺陷影响

完整变更见 CHANGELOG。