docs: 开启 ECR-004 威科夫硬化与 VP 减负(Draft)

跟进 ECR-003 Review Findings;待 Approve 后实现。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-06 18:35:25 +08:00
co-authored by Cursor
parent 081a57a90e
commit ac6be80278
11 changed files with 194 additions and 8 deletions
+2 -1
View File
@@ -20,7 +20,8 @@
- IDEA-002 / `9f1e736`:主站内存泄漏 dispose、首屏单次 analyze、ChanMACD 复用、chan_tv 体验 - IDEA-002 / `9f1e736`:主站内存泄漏 dispose、首屏单次 analyze、ChanMACD 复用、chan_tv 体验
- ECR-002 Reviewed:拆 `web/services/runtime/`、加深 analyze 契约 - ECR-002 Reviewed:拆 `web/services/runtime/`、加深 analyze 契约
- ECR-003 Reviewed:主站威科夫叠层(`chanlun/analysis/wyckoff/` + `include_wyckoff` - ECR-003 Reviewed:主站威科夫叠层(`chanlun/analysis/wyckoff/` + `include_wyckoff``081a57a`
- ECR-004 DraftTR 评分硬化 + VP 少系列 + 阶段/门闩/单测(IDEA-005
## 硬约束提醒 ## 硬约束提醒
+4
View File
@@ -2,6 +2,10 @@
## Unreleased — 2026-08-06 ## Unreleased — 2026-08-06
### ECR-004L2Draft
- 计划:威科夫 TR 评分硬化、主站 VP 绘图减负、阶段/门闩/单测(见 `docs/ECR/ECR-004-wyckoff-harden.md`
### ECR-003L2Reviewed ### ECR-003L2Reviewed
- 新增 `chanlun/analysis/wyckoff/`:交易区间、阶段 AE、Spring/SOS/LPS/UTAD 等事件、区间 VPPOC/VAH/VAL)、量能确认 - 新增 `chanlun/analysis/wyckoff/`:交易区间、阶段 AE、Spring/SOS/LPS/UTAD 等事件、区间 VPPOC/VAH/VAL)、量能确认
+62
View File
@@ -0,0 +1,62 @@
# ECR-004
**Title:** 威科夫区间评分硬化与主站 VP 绘图减负
**Status:** Draft(待 Human/Architect Approve 后编码)
**Date:** 2026-08-06
**Change Level:** L2
## Change
跟进 ECR-003 CODE_REVIEW Findings:改进交易区间选取启发式、阶段最小长度、收紧单测;主站 VP/叠层降低 Lightweight series 数量;`include_wyckoff` 与主周期分析同门闩。
## Motivation
003 已 Approve 合入;质量与内存项不得回塞已审变更,须独立可审闭环。
## Scope
### Allowed
- `chanlun/analysis/wyckoff/range.py` / `events.py`(阶段)启发式与单测
- `web/static/js/app/chart_tv.js` 威科夫 VP/填充绘制路径
- `web/api/analyze.py``elements_only` 时不跑威科夫;可选调低默认 `vp_bins` 上限
- ESS 文档与契约测试补充断言(不删既有 `wyckoff` 键)
### Forbidden
- 改笔/段/中枢/买卖点语义
- `config/` / `strategies/`
- `/chan_tv`
- 新数据源 / 订单流
## Risk
| Risk | Mitigation |
|------|------------|
| TR 结果相对 003 漂移 | 合成夹具锁定高低与起点;文档标明启发式迭代 |
| 前端 VP 观感变化 | 保留 POC/VAH/VAL;密度可用更少线表示 |
| 回归 | 扩展 `tests/test_wyckoff.py` + 既有契约套件 |
## Acceptance Criteria
- [ ] 合成箱体夹具:`trading_range` 高低接近箱体边界,起点不落入明显前置趋势段
- [ ] 开启 VP 时主图新增 series 数显著低于「每 bin 一条」(目标:填充+VP ≤ ~15 或等价合并策略)
- [ ] 阶段输出满足最小跨度或合并退化段;文档说明规则
- [ ] `elements_only=true` 即使 `include_wyckoff=1` 也不返回 `wyckoff`(或明确文档例外——实现选前者)
- [ ] golden 缠论基线不变;相关 pytest 绿
- [ ] TEST/IMPL/CHANGELOG/TRACEABILITY + CODE_REVIEW
## Rollback
`git revert`UI 关威科夫即可无图面影响。
## Risk Review
- `docs/RISK_REVIEW/ECR-004.md` — N/A(展示/启发式,非 Live 策略)
## Linked
- IDEA: `docs/IDEA/IDEA-005-wyckoff-harden.md`
- 上游: `docs/CODE_REVIEW/ECR-003.md` Findings 15
- PRODUCT_SPEC / ENGINEERING_SPEC: 同目录 ECR-004-*
- TRACEABILITY: Yes
@@ -0,0 +1,45 @@
# ENGINEERING_SPEC — ECR-004
**Status:** Draft
**Date:** 2026-08-06
## Range scoring
替换「仅取最长合格窗口」:
1. 仍在 `lookback` + `tail_reserve` 框架内扫描候选段(步长可保留)。
2. 对每段计算分数,例如:
- `touch_score` = near_hi + near_lo(触边上沿/下沿次数)
- `width_penalty` = width / ATR(过宽扣分)
- `recency_bonus` = 段终点靠近 core 末
- 可选:段内 close 在 [low,high] 比例
3. 取分数最高且满足既有硬门槛(near_hi/lo≥2、inside≥0.75 等)的段。
4. 单测:`_box_df` 断言 `low∈[38,42]``high∈[58,62]`,且 `start` 不早于箱体起始(允许小容差)。
## Phases
- 为 A–E 设最小 bar 数(如 ≥3);不足则与相邻段合并或跳过空标签。
- 避免 D/E 完全同起止仍输出两条重复色带。
## API gate
```text
if include_wyckoff and not elements_only:
result["wyckoff"] = analyze_wyckoff(...)
```
## Frontend VP
任选其一(ENG 实现时定一种并写进 IMPL):
- **A**:只画 volume>0 的 bin,且最多 N 条(按 volume 取 Top-N),POC/VAH/VAL 仍全画
- **B**:用少量水平线 + 透明度映射,或单 series 多段(若 Lightweight 版本支持)
- **C**:服务端默认 `vp_bins` 上限降到 24,前端再 Top-N
区间填充线可从 6 降到 3。
## Tests
- 扩展 `tests/test_wyckoff.py`
- 契约:`elements_only=true&include_wyckoff=1``wyckoff`
- 不改 golden 缠论 JSON
+31
View File
@@ -0,0 +1,31 @@
# Idea: 威科夫区间评分与主站 VP 绘图优化
**Date:** 2026-08-06
**Status:** Accepted → ECR-004
**Source:** `docs/CODE_REVIEW/ECR-003.md` Findings Important #1/#2 + Medium #3#5
## Problem
ECR-003 已上线主站威科夫叠层,但:
1. 交易区间检测优先「最长窗口」,易吞并箱体前趋势,起点偏早。
2. VP 默认按 bin 逐条 `addLineSeries`,自动刷新全量重建时系列过多,有内存压力。
3. 阶段 C–E 在事件扎堆时易重叠退化;单测断言偏松;`elements_only` 仍可能跑威科夫。
## Why now
CODE_REVIEW Approve 非阻断项;关门后应单独 ECR 跟进,避免塞回已审 003。
## Proposed direction
- TR:触边密度/宽度评分选最优段,收紧合成夹具断言
- VP:少系列绘制(非零 bin 合并或降 bins 上限)
- 阶段最小长度;analyze 门闩与主周期一致;收紧单测
## Out of scope
- 缠论算法、`strategies/`/`config/``/chan_tv` Study、Live 信号
## Linked
- [x] ECR-004
@@ -0,0 +1,20 @@
# PRODUCT_SPEC — ECR-004
**Status:** Draft
**Date:** 2026-08-06
## Goal
主站威科夫叠层在「可解释」前提下更稳:交易区间更贴近真实震荡箱;VP 打开时不拖垮图表刷新。
## User-visible
1. 勾选威科夫后,区间框起点/高低更合理(少把前置单边趋势框进去)。
2. 开启 VP 时图面仍有 POC/VAH/VAL 与量能密度感,但刷新更轻。
3. 阶段标签不再大量重叠在同一根 K 上(可合并短段)。
## Non-goals
- 改变缠论笔段中枢
- 自动交易建议 / Live
- chan_tv Study
+1 -1
View File
@@ -34,7 +34,7 @@ Trading System(缠论分析引擎 + 可视化 Web;Freqtrade 策略目录独
## Active anchors ## Active anchors
- ECR: ECR-002 / ECR-003 Reviewed(主站威科夫) - ECR: ECR-004 Draft(威科夫硬化);ECR-002/003 Reviewed
- EXP: N/A - EXP: N/A
- TRACEABILITY: `docs/TRACEABILITY.md` - TRACEABILITY: `docs/TRACEABILITY.md`
- Memory: `docs/AGENT_MEMORY.md` - Memory: `docs/AGENT_MEMORY.md`
+6
View File
@@ -0,0 +1,6 @@
# RISK_REVIEW — ECR-004
**Status:** N/A
**Date:** 2026-08-06
展示用威科夫启发式与绘图优化,不改 Freqtrade 策略或 Live 下单。TR 输出相对 ECR-003 可能漂移,由单测与 UI 开关缓解。
+8 -6
View File
@@ -1,8 +1,8 @@
# STATE # STATE
**owner:** idle **owner:** architect
**active_ecr:** none **active_ecr:** ECR-004
**phase:** idle **phase:** draft_spec(待 Approve 后实现)
**system_version:** v1.0.0 **system_version:** v1.0.0
**strategy_version:** unchanged **strategy_version:** unchanged
**updated:** 2026-08-06 **updated:** 2026-08-06
@@ -14,9 +14,11 @@
| ECR-001 | L3 | Released `v1.0.0` | | | ECR-001 | L3 | Released `v1.0.0` | |
| IDEA-002 | L1 | Done | `9f1e736` | | IDEA-002 | L1 | Done | `9f1e736` |
| ECR-002 | L3 | Done (Reviewed) | runtime 包拆分 | | ECR-002 | L3 | Done (Reviewed) | runtime 包拆分 |
| ECR-003 | L2 | Done (Reviewed) | 主站威科夫;待本提交合入 | | ECR-003 | L2 | Done (Reviewed) | `081a57a` 主站威科夫 |
| ECR-004 | L2 | Draft | 威科夫硬化 / VP 减负;见 IDEA-005 |
## Notes ## Notes
- ECR-003 CODE_REVIEW**Approve**Findings 另开 ECR-004 - ECR-003 已合入Findings ECR-004
- 未请求新 system tag(仍 Unreleased 文档累计) - ECR-004 待 Human/Architect **Approve** 后再编码
- 未请求新 system tag
+7
View File
@@ -0,0 +1,7 @@
task_id: ECR-004
title: 威科夫区间评分硬化与主站 VP 绘图减负
status: draft
change_level: L2
ecr: docs/ECR/ECR-004-wyckoff-harden.md
idea: docs/IDEA/IDEA-005-wyckoff-harden.md
notes: Follow-up to ECR-003 CODE_REVIEW Findings 1-5. Await Approve then implement.
+8
View File
@@ -36,3 +36,11 @@
| ECR-003 | analyze 按需 `include_wyckoff` | ENG-003 | `web/api/analyze.py` | `test_analyze_http_wyckoff_opt_in` | | ECR-003 | analyze 按需 `include_wyckoff` | ENG-003 | `web/api/analyze.py` | `test_analyze_http_wyckoff_opt_in` |
| ECR-003 | 主站 Lightweight 叠层 | PRODUCT-003 | `index.html` `chart_tv.js` `chart_view.js` | 人工 + 开关接线 | | ECR-003 | 主站 Lightweight 叠层 | PRODUCT-003 | `index.html` `chart_tv.js` `chart_view.js` | 人工 + 开关接线 |
| ECR-003 | 契约可选键文档 | ENG-003 | `analyze_contract_keys.json` | golden keys file 断言 | | ECR-003 | 契约可选键文档 | ENG-003 | `analyze_contract_keys.json` | golden keys file 断言 |
## ECR-004Draft
| ECR | Requirement | Spec | Code | Test |
|-----|-------------|------|------|------|
| ECR-004 | TR 评分选最优段 | ENG-004 | TBD `wyckoff/range.py` | 收紧 `test_wyckoff` |
| ECR-004 | VP/填充少 series | ENG-004 | TBD `chart_tv.js` | 人工 / 约定上限 |
| ECR-004 | 阶段最小长度 + elements_only 门闩 | ENG-004 | TBD events + analyze | 契约补充 |