Files
crypto-atr-signal/V1.1_FIX_REPORT.md
T
2026-06-22 22:52:21 +02:00

2.2 KiB

Crypto ATR Signal v1.1 修复报告

修复日期:2026-06-22

当前页面版本:v1.1.0

问题概述

首页信号列表原本会展示 signals 表中的历史信号,而不是只展示当前最新已收盘 4H K 线的信号。

这会导致一个问题:

历史 K 线中 ATR 倍数更高的信号,可能排在当前最新 K 线信号前面。

因此用户在首页看到的并不完全是“当前最新一根 4H K 线”的信号。

问题原因

原首页查询逻辑直接读取 signals 表:

SELECT symbol, direction, multiple, range, atr14, open_time, created_at
FROM signals
ORDER BY CAST(multiple AS REAL) DESC, open_time DESC, symbol ASC
LIMIT 300

该查询没有限制:

WHERE open_time = 最新已收盘K线

所以历史信号会被一起展示。

修复方案

首页先从 klines 表中读取当前数据库里的最新 K 线时间:

SELECT MAX(open_time) AS open_time FROM klines

然后只查询该 open_time 对应的信号:

SELECT symbol, direction, multiple, range, atr14, open_time, created_at
FROM signals
WHERE open_time = ?
ORDER BY CAST(multiple AS REAL) DESC, open_time DESC, symbol ASC
LIMIT 300

ATR 倍数正序 / 倒序排序仍然保留,但排序范围只限于当前最新已收盘 K 线的信号。

修复结果

修复后:

首页 = 当前最新已收盘 K 线信号
历史信号 = 继续保留在数据库中,但不混入首页

当前本地验证结果:

数据库历史信号总数:68
最新 K 线信号数:26
首页当前信号:26

影响范围

影响文件:

webapp.py

不影响:

scanner.py 扫描逻辑
ATR 计算逻辑
缺口补抓逻辑
SQLite 数据结构
历史信号保存
实体占比过滤开关
数据清理逻辑

当前状态

已完成:

  • 首页只展示最新已收盘 K 线信号。
  • 历史信号继续保留,默认保留 SIGNAL_RETENTION_DAYS=90 天。
  • ATR 倍数排序继续可用。
  • 本地服务已重启验证。

后续建议

后续如果需要查看历史信号,建议单独增加:

/history

或页面切换:

当前信号 / 历史信号

这样首页保持清爽,历史查询也有独立入口。