Files
Chan/DISPLAY_FIX_SUMMARY.md
T
2025-05-23 21:19:50 +08:00

2.8 KiB

分型强度显示修复总结

问题描述

用户反映图表上没有显示分型强度信息。

问题诊断

  1. 后端数据传递问题: 虽然计算了分型强度,但在返回给前端的JSON数据中遗漏了强度相关字段
  2. JSON序列化问题: NumPy的bool_类型无法被JSON序列化

修复内容

1. 后端数据修复 (web/app.py)

  • 主周期分型信息: 在klc_fx_info中添加了遗漏的强度字段
  • 小周期分型信息: 在element_klc_fx_info中添加了遗漏的强度字段

修复前:

'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']]

修复后:

'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. 启动服务:

    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返回的分型强度数据完整性