102 lines
2.8 KiB
Markdown
102 lines
2.8 KiB
Markdown
# 分型强度显示修复总结
|
|
|
|
## 问题描述
|
|
用户反映图表上没有显示分型强度信息。
|
|
|
|
## 问题诊断
|
|
1. **后端数据传递问题**: 虽然计算了分型强度,但在返回给前端的JSON数据中遗漏了强度相关字段
|
|
2. **JSON序列化问题**: NumPy的`bool_`类型无法被JSON序列化
|
|
|
|
## 修复内容
|
|
|
|
### 1. 后端数据修复 (web/app.py)
|
|
- **主周期分型信息**: 在`klc_fx_info`中添加了遗漏的强度字段
|
|
- **小周期分型信息**: 在`element_klc_fx_info`中添加了遗漏的强度字段
|
|
|
|
**修复前**:
|
|
```python
|
|
'klc_fx_info': [{
|
|
'time': format_time_safely(point['time'], client_tz),
|
|
'price': point['price'],
|
|
'fx_type': point['fx_type'],
|
|
'is_bottom': point['is_bottom']
|
|
} for point in analysis_result['klc_fx_info']]
|
|
```
|
|
|
|
**修复后**:
|
|
```python
|
|
'klc_fx_info': [{
|
|
'time': format_time_safely(point['time'], client_tz),
|
|
'price': float(point['price']),
|
|
'fx_type': point['fx_type'],
|
|
'is_bottom': bool(point['is_bottom']),
|
|
'fx_strength': float(point['fx_strength']), # 分型强度分数
|
|
'fx_strength_level': str(point['fx_strength_level']), # 分型强度等级
|
|
'is_strong_fx': bool(point['is_strong_fx']) # 是否为强分型
|
|
} for point in analysis_result['klc_fx_info']]
|
|
```
|
|
|
|
### 2. 数据类型转换
|
|
- 将`numpy.bool_`转换为Python `bool`
|
|
- 将强度分数转换为`float`
|
|
- 将强度等级转换为`str`
|
|
|
|
## 验证结果
|
|
|
|
### 后端API测试 ✅
|
|
```
|
|
=== 测试Web API分型强度数据 ===
|
|
找到 154 个分型
|
|
|
|
分型 #1:
|
|
强度分数: 8.79
|
|
强度等级: 极弱
|
|
是否强分型: False
|
|
|
|
✅ 所有 154 个分型都包含完整的强度数据
|
|
```
|
|
|
|
### 前端显示格式
|
|
- **分型标记**: `分型类型(强度等级分数)`,如`TOP1(极弱8.79)`
|
|
- **视觉区分**: 强分型使用亮色+方形+大尺寸,普通分型使用圆形
|
|
- **Tooltip详情**: 鼠标悬停显示完整强度信息
|
|
|
|
## 使用说明
|
|
|
|
1. **启动服务**:
|
|
```bash
|
|
cd user_data/Chan/web
|
|
python app.py
|
|
```
|
|
|
|
2. **访问界面**: http://localhost:8123
|
|
|
|
3. **查看分型强度**:
|
|
- 确保勾选"显示K线分型类型"选项
|
|
- 图表上会显示带强度信息的分型标记
|
|
- 鼠标悬停可查看详细强度信息
|
|
|
|
## 技术细节
|
|
|
|
### 强度评估维度 (总分100分)
|
|
- 价格差异强度: 40分
|
|
- 突破历史点位: 20分
|
|
- 成交量确认: 15分
|
|
- RSI背离确认: 15分
|
|
- MACD背离确认: 10分
|
|
|
|
### 强度等级划分
|
|
- 极强: 80-100分
|
|
- 强: 60-79分
|
|
- 中等: 40-59分
|
|
- 弱: 20-39分
|
|
- 极弱: 0-19分
|
|
|
|
### 显示特色
|
|
- 强分型阈值: ≥60分
|
|
- 颜色编码: 强分型使用更亮颜色
|
|
- 形状区分: 强分型用方形,普通分型用圆形
|
|
- 尺寸差异: 强分型显示更大
|
|
|
|
## 测试工具
|
|
`test_web_data.py` - 验证API返回的分型强度数据完整性 |