technical-patterns-lab/docs/2026-01-27_HTML查看器功能.md
褚宏光 22582851a1 Enhance converging triangle detection with new features and documentation updates
- Introduced an interactive HTML stock viewer for visualizing strength scores and filtering stocks based on user-defined thresholds.
- Added `--all-stocks` parameter to generate charts for all 108 stocks, including those not meeting convergence criteria.
- Implemented a new scoring system for breakout strength, incorporating fitting adherence to improve accuracy.
- Updated multiple documentation files, including usage instructions and feature overviews, to reflect recent enhancements.
- Improved error handling and file naming conventions to ensure compatibility across platforms.
2026-01-27 16:17:28 +08:00

302 lines
8.0 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# HTML股票查看器功能说明
> 创建时间2026-01-27
> 版本v1.0
> 相关PR/IssueHTML可视化查看器
## 功能概述
新增交互式HTML股票查看器提供可视化的强度分筛选和查看功能。支持显示所有108只股票或仅显示满足条件的股票。
## 核心特性
### 1. 两种显示模式
#### 默认模式
```powershell
python scripts/generate_stock_viewer.py
```
- 仅显示满足收敛三角形条件的股票14只
- 适合日常快速选股
- 聚焦于有潜力的标的
#### 全股票模式(推荐)
```powershell
python scripts/generate_stock_viewer.py --all-stocks
```
- 显示所有108只股票
- 有形态:显示完整的强度分和指标
- 无形态强度分为0显示基础K线图
- 适合全面研究和对比分析
### 2. 交互式筛选
**强度分滑块**
- 拖动范围0.00 ~ 1.00
- 实时过滤股票列表
- 动态更新统计信息
**示例**
- 滑块 = 0.00显示全部108只股票
- 滑块 = 0.30:显示强度分 ≥ 0.3 的股票(中等以上)
- 滑块 = 0.50:显示强度分 ≥ 0.5 的股票(强势股)
### 3. 实时统计
顶部面板显示:
- **总股票数**数据集中的总股票数108
- **显示股票数**:当前滑块筛选后的股票数
- **平均强度分**:当前显示股票的平均强度分
### 4. 股票卡片
每张卡片包含:
- **头部**:股票名称、代码(紫色渐变背景)
- **指标**
- 突破方向(↑向上 / ↓向下 / -无)
- 宽度比(收敛程度)
- 触碰次数(上沿/下沿)
- 放量确认(是/否)
- **强度分**:大号显示,颜色分级
- 🟢 绿色(≥ 0.5):强势突破
- 🟡 黄色0.3 ~ 0.5):中等强度
- ⚪ 灰色(< 0.3微弱/无形态
- **图表**K线图和三角形趋势线点击可放大
### 5. 图表查看
- 点击图表全屏查看细节
- 点击背景/按ESC关闭全屏
- 高清显示原始分辨率
## 技术实现
### 数据内嵌方案
**问题**浏览器安全限制CORS阻止直接读取本地CSV文件
**解决方案**
1. Python脚本读取 `all_results.csv`
2. 将数据转换为JSON格式
3. 内嵌到HTML的 `<script>` 标签中
4. JavaScript直接使用内嵌数据
**优势**
- 无需启动Web服务器
- 可直接双击HTML打开
- 数据和页面完全独立
- 支持离线使用
### 文件结构
```
outputs/converging_triangles/
├── stock_viewer.html # HTML查看器包含内嵌数据
├── QUICK_START.md # 快速开始指南
├── README_viewer.md # 详细使用说明
├── all_results.csv # 原始数据(生成时读取)
└── charts/ # 图表图片
├── 20260120_SH600000_浦发银行.png
├── 20260120_SH603900_莱绅通灵.png
└── ...
```
## 使用流程
### 方式1一键流水线推荐
```powershell
# 生成所有数据 + HTML查看器
python scripts/pipeline_converging_triangle.py --all-stocks
# 打开查看器
start outputs/converging_triangles/stock_viewer.html
```
### 方式2单独生成HTML
```powershell
# 显示所有108只股票
python scripts/generate_stock_viewer.py --all-stocks
# 只显示满足条件的股票
python scripts/generate_stock_viewer.py
# 指定日期
python scripts/generate_stock_viewer.py --date 20260120 --all-stocks
# 打开查看器
start outputs/converging_triangles/stock_viewer.html
```
## 代码实现
### 新增脚本
**`scripts/generate_stock_viewer.py`**
- `data/close.pkl` 读取所有108只股票列表
- `all_results.csv` 读取强度分数据
- 合并数据有强度分的保留真实值无强度分的设为0
- 生成HTML将数据内嵌为JavaScript变量
- 支持 `--all-stocks` `--date` 参数
### Pipeline集成
**`scripts/pipeline_converging_triangle.py`**
- 在步骤4自动调用 `generate_stock_viewer.py`
- 传递 `--all-stocks` `--date` 参数
- 可通过 `--skip-viewer` 跳过HTML生成
### HTML模板
**核心代码结构**
```javascript
// 内嵌数据
const allStocks = [
{
"code": "SH600000",
"name": "浦发银行",
"strength": 0.0,
"hasTriangle": false,
// ...更多字段
},
// ...更多股票
];
// 滑块事件
thresholdSlider.addEventListener('input', (e) => {
currentThreshold = parseFloat(e.target.value);
renderStocks(); // 重新渲染
});
// 渲染函数
function renderStocks() {
// 过滤
const filtered = allStocks.filter(s => s.strength >= currentThreshold);
// 排序(强度分从高到低)
filtered.sort((a, b) => b.strength - a.strength);
// 生成HTML卡片
// ...
}
```
## 设计亮点
### 1. 视觉设计
- 🎨 紫色渐变主题优雅现代
- 📱 响应式布局自适应屏幕
- 卡片悬停效果视觉反馈
- 🎯 颜色分级系统快速识别
### 2. 交互体验
- 实时过滤无延迟
- 📊 动态统计即时更新
- 🔍 图表放大细节查看
- 键盘支持ESC关闭
### 3. 性能优化
- 🚀 数据内嵌避免网络请求
- 💾 图片懒加载按需加载
- 🎬 GPU加速动画流畅体验
- 📦 单文件部署便于分发
## 典型场景
### 场景1快速筛选强势股
1. 打开HTML查看器
2. 拖动滑块到0.5
3. 只显示强度分0.5的股票
4. 点击图表查看细节
### 场景2全面浏览
1. 滑块保持在0.00
2. 浏览全部108只股票
3. 按强度分从高到低排序
4. 对比有/无形态的差异
### 场景3渐进式分析
1. 先看0.5的强势股0只
2. 降到0.41只
3. 降到0.34只
4. 观察不同强度级别的形态特征
### 场景4每日更新
```powershell
# 每天收盘后
python scripts/pipeline_converging_triangle.py --all-stocks
# 刷新浏览器
F5
```
## 文档体系
- **快速指南**`outputs/converging_triangles/QUICK_START.md`
- 最简使用方法
- 基础命令示例
- 两种显示模式说明
- **详细文档**`outputs/converging_triangles/README_viewer.md`
- 完整功能说明
- 使用场景详解
- 常见问题解答
- 浏览器兼容性
- **功能特性**`docs/all-stocks-feature.md`
- `--all-stocks` 参数说明
- 图表生成行为
- 典型使用场景
- **本文档**`docs/2026-01-27_HTML查看器功能.md`
- 功能概述和设计思路
- 技术实现细节
- 代码结构说明
## 后续改进方向
### 短期v1.1
- [ ] 添加更多筛选条件突破方向宽度比等
- [ ] 支持排序切换按代码名称强度分
- [ ] 添加搜索功能按代码或名称
- [ ] 支持导出筛选结果CSV/JSON
### 中期v1.2
- [ ] 多日期数据对比时间轴滑块
- [ ] 历史强度分趋势图
- [ ] 板块/行业分类筛选
- [ ] 自定义颜色阈值
### 长期v2.0
- [ ] 后端API支持实时数据
- [ ] 用户偏好保存LocalStorage
- [ ] 收藏夹功能
- [ ] 批量对比分析工具
## 相关文件
### 核心脚本
- `scripts/generate_stock_viewer.py` - HTML生成脚本
- `scripts/pipeline_converging_triangle.py` - 集成流水线
### 文档
- `outputs/converging_triangles/QUICK_START.md` - 快速指南
- `outputs/converging_triangles/README_viewer.md` - 详细文档
- `docs/all-stocks-feature.md` - 全股票功能说明
- `USAGE.md` - 完整使用说明
### 输出
- `outputs/converging_triangles/stock_viewer.html` - HTML查看器
- `outputs/converging_triangles/charts/` - 图表图片目录
## 总结
HTML股票查看器提供了
1. **可视化界面**直观的股票浏览体验
2. **交互式筛选**实时调整强度分阈值
3. **全面覆盖**支持显示所有108只股票
4. **离线可用**数据内嵌无需服务器
5. **响应式设计**适配各种设备
6. **一键生成**集成到流水线中
这大大提升了数据分析和选股的效率让用户可以更直观地理解和使用收敛三角形检测系统