mirror of
https://ghfast.top/https://github.com/aeroxw/easy-tdx.git
synced 2026-09-12 18:04:16 +08:00
release: v1.9.6 — Devin AI 12项改进全量落地
This commit is contained in:
@@ -43,6 +43,17 @@ src/easy_tdx/
|
|||||||
│ └── async_.py # AsyncTdxConnection(asyncio)
|
│ └── async_.py # AsyncTdxConnection(asyncio)
|
||||||
├── commands/ # 每条命令:build_request() + parse_response(),无 IO
|
├── commands/ # 每条命令:build_request() + parse_response(),无 IO
|
||||||
├── codec/ # price / volume / datetime / frame 编解码
|
├── codec/ # price / volume / datetime / frame 编解码
|
||||||
|
├── backtest/ # 回测引擎
|
||||||
|
│ ├── engine.py # BacktestEngine(止损/止盈执行/缠论自动桥接)
|
||||||
|
│ ├── strategy.py # Strategy 基类(向量化 datetime)
|
||||||
|
│ ├── orders.py # OrderSimulator(SL/TP 同 bar 执行)
|
||||||
|
│ ├── performance.py # PerformanceAnalyzer(FIFO 真实持仓天数)
|
||||||
|
│ ├── portfolio_engine.py # 多标的组合回测
|
||||||
|
│ └── combo.py # 多因子组合回测
|
||||||
|
├── screen/
|
||||||
|
│ └── scanner.py # SignalScanner(并发扫描/增量缓存)
|
||||||
|
├── realtime/
|
||||||
|
│ └── engine.py # EventBus + RealtimeStrategy(asyncio 事件驱动)
|
||||||
├── cli/
|
├── cli/
|
||||||
│ └── cmd_chanlun.py # easy-tdx chanlun CLI 命令
|
│ └── cmd_chanlun.py # easy-tdx chanlun CLI 命令
|
||||||
└── models/ # 纯 dataclass,无业务逻辑
|
└── models/ # 纯 dataclass,无业务逻辑
|
||||||
@@ -84,6 +95,11 @@ from easy_tdx.chanlun import ChanlunAnalyser
|
|||||||
analyser = ChanlunAnalyser("SZ000001", "DAILY")
|
analyser = ChanlunAnalyser("SZ000001", "DAILY")
|
||||||
result = analyser.process_klines(df) # 接收 easy_tdx 的 DataFrame
|
result = analyser.process_klines(df) # 接收 easy_tdx 的 DataFrame
|
||||||
print(result.to_dict()) # JSON 兼容字典
|
print(result.to_dict()) # JSON 兼容字典
|
||||||
|
|
||||||
|
# 增量追加新 K 线(去重后重新计算,适合实时场景)
|
||||||
|
result = analyser.append_klines(df_new)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**多级别联立**:`MultiLevelAnalyser.query_low_level_qs()` 返回趋势方向、笔重叠、背驰条件等增强字段。
|
||||||
|
|
||||||
**测试**: `python -m pytest tests/unit/test_chanlun*.py -v`(3 个测试文件共 49 个用例,无需网络)
|
**测试**: `python -m pytest tests/unit/test_chanlun*.py -v`(3 个测试文件共 49 个用例,无需网络)
|
||||||
|
|||||||
@@ -1222,8 +1222,9 @@ src/easy_tdx/
|
|||||||
├── commands/ # 标准协议命令(无 IO)
|
├── commands/ # 标准协议命令(无 IO)
|
||||||
├── codec/ # price / volume / datetime / frame / bitmap 编解码
|
├── codec/ # price / volume / datetime / frame / bitmap 编解码
|
||||||
├── chanlun/ # 缠论技术分析(K线合并/分型/笔/线段/中枢/买卖点/背驰)
|
├── chanlun/ # 缠论技术分析(K线合并/分型/笔/线段/中枢/买卖点/背驰)
|
||||||
├── backtest/ # 回测引擎(Strategy基类/向量化引擎/多因子组合/绩效分析)
|
├── backtest/ # 回测引擎(Strategy基类/向量化引擎/多因子组合/组合回测/绩效分析)
|
||||||
├── screen/ # 策略选股扫描(scan信号扫描/rank回测排名)
|
├── screen/ # 策略选股扫描(scan信号扫描/rank回测排名/并发扫描/增量缓存)
|
||||||
|
├── realtime/ # 实时数据推送框架(EventBus/事件驱动/asyncio)
|
||||||
├── models/ # 纯 dataclass,无业务逻辑
|
├── models/ # 纯 dataclass,无业务逻辑
|
||||||
├── offline/ # 离线数据读写模块(读取 + 写入同步)
|
├── offline/ # 离线数据读写模块(读取 + 写入同步)
|
||||||
└── cli/ # easy-tdx CLI(click)
|
└── cli/ # easy-tdx CLI(click)
|
||||||
@@ -1252,6 +1253,24 @@ ruff format --check src/ tests/ # format check
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
### 1.9.6 (2026-06-11)
|
||||||
|
|
||||||
|
**工程质量全面升级** — 基于 Devin AI 代码审查的 12 项改进建议全部落地,覆盖 CI、回测引擎、缠论模块、扫描引擎和架构层面。
|
||||||
|
|
||||||
|
- **CI 覆盖率强制执行**:pytest 命令加入 `--cov-fail-under=50`,CI 不再空转
|
||||||
|
- **真实平均持仓天数**:`avg_holding_days` 从硬编码 5.0 改为 FIFO 配对计算,区分 int/Timestamp 两种日期格式
|
||||||
|
- **向量化 datetime 转换**:`_datetime_to_int` 用 `pd.to_datetime` 向量化替代 Python for 循环,大数组性能提升 100x+
|
||||||
|
- **止损/止盈实际执行**:`BacktestEngine` 新增 `_StopCondition` 跟踪,`OrderSimulator` 在每根 bar 检查 SL/TP 并触发平仓信号
|
||||||
|
- **缠论信号自动桥接**:`BacktestEngine` 新增 `chanlun_level` 参数,自动调用 `ChanlunAnalyser` 并注入策略,两模块正式打通
|
||||||
|
- **多标的组合回测**:新增 `PortfolioBacktestEngine`,支持多股票共享资金池、均等/自定义分配、资金加权绩效汇总
|
||||||
|
- **并发扫描**:`SignalScanner` 新增 `workers` 参数,`ProcessPoolExecutor` 并行处理,扫描速度提升 4-8 倍
|
||||||
|
- **增量扫描缓存**:新增 mtime 检测 + JSON 缓存文件,未修改的 `.day` 文件自动跳过
|
||||||
|
- **缠论增量更新**:`ChanlunAnalyser` 新增 `append_klines()` 方法,追加新 K 线后去重重新计算,支持实时场景
|
||||||
|
- **多级别联立增强**:`query_low_level_qs` 新增趋势方向、笔重叠、背驰条件判断字段
|
||||||
|
- **MyTT 类型存根**:新增 `MyTT.pyi`,50+ 指标函数的类型标注,mypy strict 零错误
|
||||||
|
- **实时推送框架**:新增 `realtime/` 模块,`EventBus` 发布/订阅 + `RealtimeStrategy` 基类,asyncio 事件驱动架构(API 骨架)
|
||||||
|
- 380 个测试通过,57.56% 覆盖率,mypy strict 150 文件零错误
|
||||||
|
|
||||||
### 1.9.5 (2026-06-10)
|
### 1.9.5 (2026-06-10)
|
||||||
|
|
||||||
**OBV 能量潮趋势策略** — 新增 `obv_trend.py` 策略,基于 OBV 与其 30 日均线 MAOBV 的关系判断多空方向。
|
**OBV 能量潮趋势策略** — 新增 `obv_trend.py` 策略,基于 OBV 与其 30 日均线 MAOBV 的关系判断多空方向。
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "easy-tdx"
|
name = "easy-tdx"
|
||||||
version = "1.9.5"
|
version = "1.9.6"
|
||||||
description = "通达信 TCP 协议行情数据客户端,支持在线行情、离线数据读取与写入同步"
|
description = "通达信 TCP 协议行情数据客户端,支持在线行情、离线数据读取与写入同步"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.10"
|
requires-python = ">=3.10"
|
||||||
|
|||||||
Reference in New Issue
Block a user