diff --git a/CHANGELOG.md b/CHANGELOG.md index e2cb4e5..46a8308 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ 本文件记录 easy-tdx 的版本变更。格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/)。 +## [1.20.7] — 2026-08-19 + +两项用户反馈修复 + 前端依赖安全升级:**Web `/bars` 的 MIN_1 时间被归一化为 00:00:00**(Issue #49)与**参数寻优选出快慢倒挂的"最优参数"**(Issue #39)。 + +### 修复 + +- **`/bars` MIN_1 误判为日线**(`src/easy_tdx/web/routers/bars.py`,Issue #49)—— `KlineCategory` 枚举值不按周期长短排序(`MIN_1=7`、`MIN_3=8` 均大于 `DAY=4`),MAC 路径用 `int(cat) >= int(KlineCategory.DAY)` 判定"日线及以上"会把 1 分钟线误判为日线,`_normalize_mac_df` 因此将 `datetime` 截断为 `00:00:00` 并把列名改为 `date`。改为 `_is_daily_plus()` 查表判定(复用 `_df._CATEGORY_MINUTES`,与回退 TdxClient 路径同一判定源),保证两条路径 `date`/`datetime` 语义一致。新增表驱动单测 + 端点级回归测试(假 MAC 客户端,无网络依赖)。 +- **策略参数寻优选出语义倒挂组合**(`src/easy_tdx/backtest/strategies/`、`optimizer.py`,Issue #39)—— 寻优网格的笛卡尔积包含 `{"fast":30,"slow":20}` 这类倒挂组合,倒挂的双均线交叉本质是反向策略,回测成绩可能反而突出从而被选为"最优参数"展示。`ParametrizedStrategy` 新增 `param_constraints` 跨参数语义约束(要求 a