fix: 批量修复76只自选rr_ratio改回candidates.rr(scanner定)——strategy_lifecycle重锚定覆盖的错值

This commit is contained in:
xxm
2026-08-18 13:32:15 +08:00
parent 0ca4e4b69f
commit a65a351f32
8 changed files with 2355 additions and 33 deletions
+173
View File
@@ -1,3 +1,38 @@
## 2026-08-18 08:26 news_collector_full 并发版静默丢数据(8/15起全市场新闻零入库,已提单+补采)
**发现了什么:** 盘前全市场新闻采集 batch5 报"501/502 ok, fail=0, 新增 0 条",但实测东财 search-api 同参数返回今日新闻(000001/300750/002594 has_today=True)。数据库 stock_news 按 created_at08-13=4189, 08-14=1253, 08-15=0, 08-16=0, 08-17=0(全市场部分)08-18=0。根因:`news_collector_full.py`commit ff6bfe4f08-14 11:31 部署并发版,deploy 与 profile 硬链接同 inode 41281)——`sqlite3.connect()` 默认 check_same_thread=True`cur` 在主线程创建,ThreadPoolExecutor(3) worker 线程调 `cur.execute()` 必抛 ProgrammingError,被内层 `except Exception: pass` 吞掉 → n 恒 0、fail 不增、ok 照加 → 日志全绿但数据全丢。已用 /tmp/thread_test.py 复现(RESULT: [('throw','ProgrammingError',...)])。注意 pool_news_collector.py(串行)不受影响,08-17 池子 366 条正常入库。
**修改了什么(自愈 + 提单,未改 MoFin 代码):** ① 提单 t_1942eabbassignee=xiaoxiao/小小莫,已通知 coregroup):建议最小修复 = sqlite3.connect(check_same_thread=False)+threading.Lock 包写库,或"抓取并发+主线程串行写"。② 自愈:内联脚本 /tmp/news_backfill.pyfetch 3线程并发 + 主线程单连接串行写,只存近3天,INSERT OR IGNORE 幂等)后台全量补采 4015 只;实测 200 只新增 189 条,写库路径验证有效。
**效果预期:** 补采完成后 08-15~08-18 全市场新闻缺口闭合,p_oversold news3 因子恢复。正式修复落地前,盘后 16:40-16:55 4 批 cron 仍会 0 新增(静默丢数据),属已知状态。
**经验:** 「ok 高 + fail=0 + 新增=0」≠ 正常——先看 DB 的 created_at 分布和 MAX(date) 是否推进,再实测数据源 API,不要被脚本自报的完成指纹骗过。并发版改 sqlite 必须处理线程归属(check_same_thread=False + lock 或每线程独立连接)或直接串行写。
## 2026-08-17 10:35 b_td1_v3_scanner 09:30 traceback(小小莫当日已修复 + 补跑验证)
**发现了什么:** 09:30 温区策略调度器执行 b_td1_v3_scanner.py 时 stderr 出现 Traceback(调度器只截 200 字符,根因需复现)。对照 git 时间线定位:09:33 commit `057fdd23`(小小莫)正是修「scanner all_stocks 纯code解包bug——b_td1_v3/s2_panic_v2 实盘扫描不再崩」,即 09:30 运行时用的是修复前版本(`for code, name in all_stocks` 对纯 code 列表解包 → ValueError),09:30 轮次 0 候选入库。09:50 commit `1163d0cc` 又修 mcap_quantilestock_daily.amount 为 None 全返回 0.3 被池条件挡掉 → 0 候选根因,改 stock_fundamentals.mcap_total)。当前工作区 = git HEAD = 修复后版本(deploy 与 profile 硬链接同 inode 42036diff IDENTICAL)。
**修改了什么(自愈,非 MoFin 代码):** 手动补跑 `python3 b_td1_v3_scanner.py`(修复后版本),扫描 4013 只完成,命中 5 只并写入 candidatessector=b_td1_v310:33:28):300668(score57)/300836(57)/688089(57)/002514(47)/002856(47)。stock_fundamentals 数据可用(6154 行,07:52 更新)。下一轮调度 10:30 起会用修复版自动跑。
**经验:** ① 调度器 strategy_executor.run_scanner 不检查 returncode、stderr 只截 200 字符,scanner 崩溃时调度日志显示「✓ 完成」+ 截断 traceback,掩盖真因——查错时先看 git log 当日 commit(修复往往已经提交)。② 9:30 扫描崩 → 该轮候选缺失 → 手动补跑即可恢复当日数据,无需等下一轮。③ deploy_guard 07:30 曾回滚 b_td1_v3_scanner.py 未入库改动(当日多次 commit 已入库,回滚后与 HEAD 一致,无残留)。
## 2026-08-14 17:00 market_regime.py 路径解析导致 cron 连库失败(自愈 + 提单)
**发现了什么:** cron 任务 `market_thermometer_daily`(市场测温-每日)16:50 运行失败:
`sqlite3.OperationalError: unable to open database file`market_regime.py:119 compute_regime)。
根因:market_regime.py L38-44 用 `__file__` 相对推导 `_MOFIN_ROOT = _SCRIPT_DIR.parent.parent`
cron 从 profile scripts 目录调用(`__file__ = ~/.hermes/profiles/position-analyst/scripts/market_regime.py`)时
`_MOFIN_ROOT` 被算成 `~/.hermes` → DB_PATH=`~/.hermes/data/mofin.db`(不存在)→ 打不开。
MoFin/deploy/profile-scripts 下同 inode 正本(inode 41228)路径解析正确,实测正常。
**修改了什么(自愈,非 MoFin 代码):**
- 新增文件: `~/.hermes/profiles/position-analyst/scripts/market_regime_runner.sh`
包装器 `exec python3 /home/hmo/MoFin/deploy/profile-scripts/market_regime.py "$@"`,让 `__file__` 解析为 MoFin 路径。
- cron `market_thermometer_daily` script 字段: `market_regime.py``market_regime_runner.sh``hermes cron edit`jobs.json 已更新)。
- 已提单 t_70d95de2assignee=xiaoxiao/小小莫):持久修复建议 market_regime.py 改用绝对路径 `/home/hmo/MoFin/data`(与 mofin_db.py 一致),并排查其余含 `parent.parent/data` 模式的脚本(advice_reconciliation / collect_evaluation_data / market_insight / market_watch / mofin_collect / stock_sector_enrich / strategy_evaluator / strategy_feedback / strategy_lifecycle / trend_detector)。
**效果预期:** 包装器实测输出 `[market_regime] 2026-08-14 → trend_up (above_ma20=True adx=22.95 slope=0.283 roc=2.473)`;下次 cron08-17 16:50)不再报错。持久修复落地后包装器可保留(无害)或 cron 改回原 script 名。
## 2026-07-19 20:58 XMPP bot on_disconnect 递归重连修复
**发现了什么:** zhiwei XMPP bot 从 20:53:57 开始反复输出 "XMPP 断开" × 27次,最后 "重连失败: maximum recursion depth exceeded"。slixmpp 的 `reconnect()` 在连接失败时会再次触发 disconnect 事件,而 `on_disconnect` 无条件调用 `reconnect()`,形成无限递归。
@@ -331,3 +366,141 @@ cron prompt for 系统健康检查-开盘前 (job_id: 37c02f4d7df9)
1. KOSPI熔断+日韩暴跌传导至A股科技股,但上证/恒指未破位=非系统性+板块冲击。判断A股的不可一概而论。
2. 比亚迪、腾讯在科技暴跌日逆势上涨,说明个股基本面>板块情绪。不能简单用"科技股暴跌"标签覆盖所有科技持仓。
3. 自愈执行器重复报警的根本原因是state文件expired后未及时更新,导致管道认为这是未处理的新问题。修复措施:更新state文件。
## 2026-08-14 11:51 宏观风险HIGH 第十三实例(TODO#274)— OpenAI/美联储鹰鸽 误报
**发现了什么:**
11:31 采集器写入 ID=1891 原始 HIGH3条信号:OpenAI IPO前年化营收400亿美元 / 美联储内部鹰鸽对峙升级 / 华尔街大行分歧难消),11:45 盘中自检创建 TODO#274。11:51 收到执行器推送处理。
**处置证据链:**
- ID=1891 3条信号逐条复核均为已知误报向量:①OpenAI营收=正面AI叙事(同8/11 medium先例,无下跌链路降info)②美联储鹰鸽/大行分歧=利率预期分歧类(同8/14 ID=1889→1890 先例判INFO
- state level=none expired=true11:45 consumer 过期),divergence none bias=opportunity
- 市场实况(Tencent 直连):上证3918.65/-0.21% 深成14300.46/+0.08% 恒指25164.70/-0.91%,无系统性下跌
- 当日 unassessed 97条清扫:风险词 SQL 命中6条 → 3 medium36167航母调动/36188美债/36200关税反制,真实传导链)+ 3 info + 91 bulk infounassessed 清零(433 info/23 medium
- 修正覆盖 ID=1892 已写入 signal_newsTODO#274 SELECT 验证 status='completed'
**LLM评估cron连续第二日 provider 失败(确认同根因):**
agent.log 显示 cron_7c23d51dd69f 今日 08:30:36 正常触发(cron_7c23d51dd69f_20260814_083036),但反复 `Stream stale for 180s — no chunks received` + `RemoteProtocolError (incomplete chunked read)`provider=opencode.ai/zen/go/v1 (deepseek-v4-flash)。与 8/13、8/14 第十二实例完全同型。输出目录无当日宏观评估 .md。**判别:不是调度器缺失,是 provider 流式连接层连续两日不稳定。** 已用 agent 手动闭环兜底(ID=1892),连续多日失败需评估 provider 健康/备源(可考虑提单给小小莫)。
**萃取知识:**
1. OpenAI 营收类正面 AI 叙事新闻命中 HIGH_PATTERNS 是持续误报源(8/14 已两次出现:ID=1888/1891
2. 美联储鹰鸽/利率预期分歧类新闻(无实质政策变化)统一判 INFO,与 CME 利率调查类同型
3. 参考文档复用要点第8条再次验证:TODO note 含「调用知微失败」= 执行器重试变体;知识日志 ≠ DB 落库,必须先 SELECT 再 UPDATE 并验证
4. 脚本内 f-string 含百分号+%d 混合格式化会 TypeError 导致 commit 前中断——批量 SQL 脚本先单独测格式化,或用 .format()/f-string 内嵌变量
## 2026-08-14 17:20 策略失效预警-每周 首次正式运行(strategy_alert_weekly
**发现了什么:**
strategy_alert.py 每周五 17:00 三振出局预警首次正式运行(cron 创建于 8/13,首跑 8/14)。结果与 8/13 决策文档实测一致:v_weak 红牌确认(滚动90日胜率 22.8% < 30%698笔,盈亏比 1.70 尚可但胜率崩溃)→ weight=0 淘汰观察;v_oversold 数据不足无法评估(strategy_research 近90日窗口内 <5 笔)→ weight 保持 1.0。
**修改了什么:**
无代码改动。strategy_alerts.json 已写入(SSOT 两份脚本一致)。仅记录解读要点。
**萃取知识:**
1. 失效预警数据源 = strategy_research(滚动90日回测窗口),与 strategy_router 的 strategy_regime_perf(按温区聚合)是两套口径——v_weak 在 regime_perf 里 trend_down 胜率 47.5%2750笔)看着正常,但滚动90日 22.8%(698笔)暴露近期崩溃。报告/解读时以滚动90日为准(更贴近当下)。
2. v_oversold 近90日无交易 = 结构性牛市信号枯竭的正常表现(其最近回测交易 7/9),不是数据故障;router 里它仍 activetrend_down 60.4%胜率、106笔)。
3. 机制确认:红牌只降权观察(weight=0 保留),不删除策略;胜率回升至 40%+ 自动恢复。符合「三振出局不是IC掉到负就删」原则。
## 2026-08-17 08:35 宏观早盘扫描-周一(macro-risk-scanner 08:30 slot
**发现了什么:**
周一早盘 08:30 slot 承接整个周末的采集器累积:清扫范围(上界=8/14 12:41 综合评估 ID=1893 之后)共 42 批次 1564 条 unassessed 新闻 + 24 条未消费采集器信号(20 HIGH + 4 MEDIUM)。
**修改了什么:**
1. 批量修正 24 条采集器信号 → 5 MEDIUM + 19 INFO(未处理 HIGH=0)。核心判定:美联储 9 月维持利率不变概率 66.9-67.5% = P11 常规概率数据(非鹰派紧缩渠道,区别于 8/5 的加息概率>50% 场景);伊朗/胡塞/以色列地缘延续无新升级维度(伊美谅解备忘录+伊央行行长访伊+伊拉克原油出口创海峡封锁新高=降级锚);三川智慧华为/P4、OpenAI 高层震荡(公司级,P25 类但未上市无直接暴露)、阿富汗资产、巴西法官制裁均为误报/无关;厄尔尼诺+粮食危机=长期慢变量监控渠道(2027 时间尺度)。
2. raw_news 全量三遍法清扫:info 优先 744 + medium 134 + bulk 686 = 1564 条,42 批次全部 unassessed=0,宽范围验证(-3 day0 漏网,medium 后置抽查 0 误标。
3. INSERT 综合评估 ID=1920(宏观-WATCH_MEDIUM,置信度 75%)。consumer 09:05 首轮消费后 state 保持 medium 且内容更新为综合评估。
**萃取知识:**
1. 周末(8/15-8/16)采集器继续运行产信号——即使休市也保持 30 分钟一轮,周一早盘必然面对 20+ 条未处理信号,批量修正必须按「同主题保留首条 MEDIUM、重复并入 INFO」压缩信号总线,否则 consumer 聚合时 13 条 MEDIUM 噪声堆积。
2. 美联储概率数据连续多日出现在采集器 HIGH 池(8/15 67.5%、8/17 66.9%)——「维持利率不变概率」是 P11 常规数据,只有「加息概率>50%+鹰派官员表态+美债收益率狂飙」组合才算真实紧缩渠道(8/5 先例),本次无该组合。
3. 周末美股结构分化(博通-6.7% vs 闪迪+7%/Lumentum+8.6%)说明 AI 板块内部轮动而非系统性下跌——VIX 年内低位是重要锚定信号,避免被单只个股暴跌标题误导。
## 2026-08-17 11:15 strategy_executor 11:00 轮超时(b_td1_v3_scanner 孤儿化)
**发现了什么:**
strategy_executor_30min 11:00 轮脚本 600s 超时被杀(cron 错误报告触发本次会话)。b_td1_v3_scanner.py 子进程未随父进程死亡,孤儿化继续运行 11 分钟(28% CPU),直至手动 kill。09:28/09:30 的崩溃(all_stocks 解包 bug)小小莫已修(057fdd23/1163d0cc),但修复版暴露运行时预算不匹配:全市场 4013 只**串行** fetch_tx_klines 实测 215ms/只 → 全量扫描 13-14 分钟 > executor 每扫描器 600s 超时 = cron harness 600s 总预算。10:33 补跑成功仅因直跑无超时;10:38 轮报告预判「下一轮自动 OK」不成立。同轮 mr_scanner/s2_panic_v2 排在 b_td1 之后均未执行(当前因 ADX/RSI 门控跳过,无功能损失)。
**修改了什么:**
1. 手动 kill 孤儿进程 PID 3351899(无 DB 写入,无数据丢失)。
2. kanban 提单 t_b27ad65f(指派 xiaoxiao):主修 b_td1_v3_scanner 并发化(ThreadPoolExecutor 16 线程,14min→~1.5min);辅修 strategy_executor.run_scanner 检查 returncode + 超时降为 480s 防孤儿 + 完整 stderr 落盘。
3. 确认 b_td1_v3 今日候选 5 只在库(10:33:28 写入,已富化),当前无损失。
**萃取知识:**
1. subprocess.run(timeout) 只保护子进程被**自己**清理;若外层 harness 先于内层超时杀父进程,子进程必然孤儿化。调度器每子任务超时必须 < 外层总预算(600s),且孤儿要能被 kill。
2. 全市场串行网络抓取是定时器杀手的标准形态:4013 只 × 215ms = 14min,任何 600s 预算必爆。凡全市场扫描器必须并发化或走日K库,不能裸串行。
3. 「崩溃修复」与「运行时预算」是两个独立故障层:09:33 修了解包崩溃,11:00 才暴露扫描时长超预算——修复后必须用真实全量跑验证耗时,不能只验证不崩。
## 2026-08-17 14:38 14:30 轮双扫描器写库 database is locked(整点并发锁竞争)
**发现了什么:**
14:30 整点并发窗口(20+ job 同时启动)下,温区调度器内两个扫描器同时在**写库阶段**崩溃:
- b_td1_v3_scanner.py:222 `sqlite3.OperationalError: database is locked`rc=114:31:25,扫描已完成命中5只)
- accumulation_scanner.py:233 同款 `database is locked`job 2d18076b1fa6rc=114:31:22,扫描已完成发现273只特征)
两者都是扫描**完成**后写 candidates 表时撞锁,不是扫描逻辑问题(新版本地预筛 28s 内跑完,性能达标)。根因是 DB 并发写竞争:MoFin/data/mofin.db 是 WAL 模式但 busy_timeout 未设,各脚本 conn 参数不一(accumulation_scanner.py:211/72 裸 connect 无 timeoutb_td1_v3_scanner.py:217 timeout=10 仍不够;candidate_filter/promote_candidates 用 timeout=30 相对安全)。14:30:56-14:33:37 窗口 20+ job 并发启动(candidate_filter/promote_candidates/market_collect/accumulation/b_td1/宏观/自检…),WAL 写-写互斥 + busy 等待到期 → OperationalError。
**修改了什么:**
1. 14:38 手动补跑 b_td1_v3_scanner → 002395 落库 ✓(candidates 表 b_td1_v3 现有 15 条)
2. 14:38 手动补跑 accumulation_scanner → 688798/688708/688697 reason 更新 ✓(ON CONFLICT 不刷 created_at,时间戳保留首次入库)
3. kanban 提单 t_a44b6e16(指派 xiaoxiao):两个 scanner 写库 conn 统一加 timeout=30(或 PRAGMA busy_timeout=30000+ 简单重试包装,参考 macro_signal_consumer.py 的 db_update 重试助手。属代码层修改,MoFin git 写权限已撤销,需小小莫落地。
**萃取知识:**
1. **整点/半点是 SQLite 写锁事故高发窗口**14:00/14:30/15:00 等 20+ job 同时启动,多 job 写同一张 candidates 表):凡写 MoFin/data/mofin.db 的扫描器,conn 必须显式 timeout=30+(或 DB 级 busy_timeout 持久化),裸 connect(默认 5s)在并发窗口必挂。WAL 模式只解决读写并发,写-写仍互斥。
2. **「扫描完成但写库崩」的指纹**scanner stdout 有完整扫描进度+命中列表,但无「✅ 新增 N 只候选」行,且 cron last_status=error 带 OperationalError: database is locked——此时重跑一次即可恢复(幂等 UPSERT),不必等下一轮调度。
3. ON CONFLICT DO UPDATE 不更新 created_at 列:补跑后同一 code 的 created_at 保留首次入库时间,判断「是否补跑成功」要看 reason 是否更新,不能只看 created_at 新鲜度。
## 2026-08-17 15:15 15:00 轮 b_td1_v3_scanner 写库 database is locked(整点锁竞争复发)
**发现了什么:**
15:00:59 温区调度轮 b_td1_v3_scanner.py 再次崩在写库阶段:`sqlite3.OperationalError: database is locked`line 96 conn.execute INSERT INTO candidatesrc=115:01:09)。与 14:30 轮(陷阱31/whole-hour-write-lock-crash-20260817.md)同指纹:扫描已完成(SQL扫描命中 1 只 score降序前5)→ 缺「✅ 新增」收尾行。mr_scanner/s2_panic_v2 正常(ADX/RSI 门控跳过,非故障)。**与 14:30 轮不同的是锁窗口更长**:15:07 手动补跑仍失败(锁未释放),15:13 起 sqlite3 BEGIN IMMEDIATE 写测试连续 3 次通过,锁实际持续约 12 分钟(15:01~15:13)——比 14:30 轮(几分钟)更长,说明收盘后仍有长写事务持有者(pool_news_collector PID 3644847、price_monitor PID 3654869 均持有 mofin.db 句柄;lsof 未见 wal/shm 独立写者)。
**修改了什么(自愈,非 MoFin 代码):**
1. 确认工单 t_a44b6e16(统一 conn timeout=30 + 写库重试)仍在途(ready, assignee=xiaoxiao),不重复建单。
2. 15:13 锁释放后手动补跑 b_td1_v3_scanner → `✅ 新增 1 只 b_td1_v3 候选`002395(价12.35 score=60 dist_lo20=8.33% bias60=-21.75% rsi=36.36)。reason 已更新(created_at 保留 14:34:28 首次入库,符合陷阱31验证规则)。
3. b_td1_v3 候选现 15 只在库,当日数据完整。
**萃取知识:**
1. 整点锁竞争复发是预期内(工单落地前每轮调度都可能再撞);但**锁窗口可达 10+ 分钟**,补跑失败≠补跑无效,应先验证写锁(sqlite3 BEGIN IMMEDIATE 测试)再重试补跑,锁释放后 30s 内可完成恢复。
2. 补跑失败的场景下不必 panic:扫描器是幂等 UPSERT,锁释放后重跑即可,无需等下一轮调度。
3. 持久修复(timeout=30/重试包装)已在 t_a44b6e16 工单在途,本条目与 14:38 条目合并为同一根因的两个复发实例。
## 2026-08-18 自愈执行器8个STRATEGY_STALE重评TODO全部失败:fix_action硬编码旧路径 scripts/per_stock_reassess.py
**发现了什么:**
自愈执行器升级 TODO #279 [STRATEGY_STALE] 阿里健康(00241) 需重评,fix_action=`cd /home/hmo/MoFin && python3 scripts/per_stock_reassess.py 00241`,失败输出 `python3: can't open file '/home/hmo/MoFin/scripts/per_stock_reassess.py': No such file or directory`。共 8 个 STRATEGY_STALE TODO (#279-286: 阿里健康/金蝶国际/小米/理想/苏农银行/传音/道通/联影) 全部使用重构前的旧路径 scripts/,执行器全部失败升级。根因:2026-07-20 重构后 per_stock_reassess.py 从 scripts/ 移到 deploy/profile-scripts/,但生成 TODO fix_action 的代码 strategy-staleness-check.py:213 仍硬编码旧路径 `f"cd /home/hmo/MoFin && python3 scripts/per_stock_reassess.py {code}"`profile-scripts 与 git 仓库硬链接同 inode 41335skill 记载的 2026-07-27 修复未持久,疑似被 deploy_guard 回滚)。
**修改了什么(自愈,非 MoFin git 代码):**
1. 存量数据修复:`UPDATE todos SET fix_action=REPLACE(fix_action,'python3 scripts/per_stock_reassess.py','python3 deploy/profile-scripts/per_stock_reassess.py')` 影响 27 行(含历史记录)。
2. 8 个 STRATEGY_STALE TODO 标记 completed——核实这 8 只股票均已被 2026-08-18 09:03~09:04 的盘前全量重评覆盖(reassessed_at 已刷新),策略新鲜无需重复重评;用正确路径重跑 00241 时被冷却期正确跳过(09:03 重评过,交易时段冷却 1h)。
3. TODO #287(宏观风险HIGH)标记 resolved——macro_risk_state.json 现为 level=medium,原 HIGH 信号 ID1933/1934/1935 已由 8/18 08:30 综合评估修正覆盖降级为 MEDIUM/INFO,无确认 HIGH,属「宏观风险自然过期」变体。
4. kanban 提单 t_1310bbdbassignee=xiaoxiao):修 strategy-staleness-check.py:213 硬编码旧路径。建议改为 `f"cd /home/hmo/MoFin && python3 deploy/profile-scripts/per_stock_reassess.py {code}"`(与 mofin_db.py:1746 参照一致)。因该文件被 git 跟踪+deploy_guard 保护,代码层修复须小小莫落地,否则下次 cron 周期仍生成错误路径 TODO。
**萃取知识:**
1. 重构变更脚本路径时,必须审计「生成 TODO fix_action 的代码」+「已存储在 todos 表的存量 fix_action」两处(generator 代码 + DB 存量),只改一处会留半截。与 skill back-through-#174 一致。
2. STRATEGY_STALE TODO 描述的是「某一时刻的策略过期快照」,可能已被更早的盘前全量重评覆盖——处理前先查 holding_strategies.reassessed_at 是否新鲜,新鲜则直接 completed(问题已自愈),不必重复跑重评。
3. strategy-staleness-check.py:213 是「skill 记载已修复但代码未持久」的重复案例(2026-07-27 记载→实际回滚)——凡被 deploy_guard 保护的 git 文件,profile 直改无法持久,必须提单小小莫。
## 2026-08-18 09:30 b_td1_v3_scanner 写库崩溃(database is locked,整点并发窗口复发实例)
**发现了什么:** 09:30 温区调度器执行 b_td1_v3_scanner.pyv4 纯 SQL 版,2026-08-17 上线),SQL 扫描命中 5 只(score 降序前5),但在写 candidates 表时崩 `sqlite3.OperationalError: database is locked`traceback line 98 撞在 INSERT 循环/commit 处)。同批 mr_scanner/s2_panic_v2 正常(regime=trend_down + 大盘RSI=51 非恐慌日,各自跳过,非故障)。09:30 并发窗口有 price_monitor.py 与 pool_news_collector.py 同时在跑,写-写在候选表互斥(WAL 只解读写并发)。崩溃后 b_td1_v3 当日候选缺失(此前最新是 08:12 的 7 只)。
**修改了什么(自愈,非 MoFin 代码):** 验证 write lock`BEGIN IMMEDIATE; SELECT 'ok'; COMMIT;`)——09:32 前仍 locked(符合陷阱32 锁窗口可达10+分钟的规律),09:32 wal checkpoint 后 3 连测 ok 释放。手动补跑 `python3 b_td1_v3_scanner.py`,幂等 UPSERT 30s 内完成,落库 5 只(600262/603585/603811/003002/603105score 60-74)。验证看 reason 字段被新值覆盖(非 created_at,因 ON CONFLICT 不更新 created_at)。
**经验:** 与 08-17 14:30/15:00 两轮同根因(t_a44b6e16 在途,不重复建单)。整点/半点并发窗口 scanner 写库崩 = 瞬时锁,补跑即恢复;锁窗口可能 >10 分钟,先验锁再重试,不要反复重跑制造写竞争。
---
## [2026-08-18 10:00] b_td1_v3_scanner 撞锁重试二次崩溃(NameError缺import time)
**发现了什么:** 整点(10:00)调度 b_td1_v3_scanner.py 崩溃(rc=1),两个连锁bug
1. SQL扫描命中5只后写 candidates 撞 `database is locked`(与 t_a44b6e16 / 08-17 同根因,整点并发窗口)
2. **新增二次bug**line 98-117 今天新加的重试退避代码,line 115 调 `time.sleep()` 但顶部 line 12 只 `import sys, sqlite3`,未 `import time` → `NameError: name 'time' is not defined` → 即使锁释放重试也永远崩溃,候选0产出。
**修改了什么(报备,未直接改 MoFin 代码):**
- 新建 kanban 卡 `t_063136eb`assignee=xiaoxiao),记录 NameError 根因+最小修复(顶部补 `import time`
- 在已有卡 `t_a44b6e16` 追加评论,标注该重试代码本身是坏的,busy_timeout+重试修复时必须一并补 time 导入
- 关联文件:/home/hmo/MoFin/deploy/profile-scripts/b_td1_v3_scanner.py(硬链到 ~/.hermes/profiles/position-analyst/scripts/inode 42196git已跟踪)
**效果预期:** 小小莫修复时一次性处理锁(busy_timeout+重试)与缺失import两处,撞锁窗口不再因NameError二次崩溃。
+11
View File
@@ -0,0 +1,11 @@
[2026-08-18 13:04:48] [ERROR] price_monitor | 区间重评失败 | name 'result' is not defined | 688036
[2026-08-18 13:06:49] [ERROR] price_monitor | 区间重评失败 | name 'result' is not defined | 601997
[2026-08-18 13:08:49] [ERROR] price_monitor | 区间重评失败 | name 'result' is not defined | 601998
[2026-08-18 13:10:59] [ERROR] price_monitor | 区间重评失败 | name 'result' is not defined | 601997
[2026-08-18 13:11:01] [ERROR] price_monitor | 区间重评失败 | name 'result' is not defined | 688036
[2026-08-18 13:14:49] [ERROR] price_monitor | 区间重评失败 | name 'result' is not defined | 688050
[2026-08-18 13:16:49] [ERROR] price_monitor | 区间重评失败 | name 'result' is not defined | 300836
[2026-08-18 13:24:50] [ERROR] price_monitor | 区间重评失败 | name 'result' is not defined | 601997
[2026-08-18 13:28:50] [ERROR] price_monitor | 区间重评失败 | name 'result' is not defined | 00780
[2026-08-18 13:28:50] [ERROR] price_monitor | 区间重评失败 | name 'result' is not defined | 601899
[2026-08-18 13:28:51] [ERROR] price_monitor | 区间重评失败 | name 'result' is not defined | 601997
+482
View File
@@ -0,0 +1,482 @@
{
"date": "2026-08-14",
"market": {
"close": 3591.197,
"rsi": 50.165391422684124,
"ma20": 3573.410605
},
"hot_sectors": [
{
"sector": "通信设备",
"news_count": 249,
"main_net": 0,
"change_pct": 0,
"heat_score": 124.5
},
{
"sector": "医药生物",
"news_count": 197,
"main_net": 0,
"change_pct": 0,
"heat_score": 98.5
},
{
"sector": "化学制药",
"news_count": 172,
"main_net": 0,
"change_pct": 0,
"heat_score": 86.0
},
{
"sector": "电子",
"news_count": 159,
"main_net": 0,
"change_pct": 0,
"heat_score": 79.5
},
{
"sector": "传媒",
"news_count": 132,
"main_net": 0,
"change_pct": 0,
"heat_score": 66.0
},
{
"sector": "有色金属",
"news_count": 127,
"main_net": 0,
"change_pct": 0,
"heat_score": 63.5
},
{
"sector": "住宅开发",
"news_count": 123,
"main_net": 0,
"change_pct": 0,
"heat_score": 61.5
},
{
"sector": "光学光电子",
"news_count": 119,
"main_net": 0,
"change_pct": 0,
"heat_score": 59.5
},
{
"sector": "工业金属",
"news_count": 112,
"main_net": 0,
"change_pct": 0,
"heat_score": 56.0
},
{
"sector": "建筑装饰",
"news_count": 107,
"main_net": 0,
"change_pct": 0,
"heat_score": 53.5
},
{
"sector": "中药Ⅲ",
"news_count": 103,
"main_net": 0,
"change_pct": 0,
"heat_score": 51.5
},
{
"sector": "家用电器",
"news_count": 94,
"main_net": 0,
"change_pct": 0,
"heat_score": 47.0
},
{
"sector": "贵金属",
"news_count": 93,
"main_net": 0,
"change_pct": 0,
"heat_score": 46.5
},
{
"sector": "软件开发",
"news_count": 86,
"main_net": 0,
"change_pct": 0,
"heat_score": 43.0
},
{
"sector": "元件",
"news_count": 84,
"main_net": 0,
"change_pct": 0,
"heat_score": 42.0
},
{
"sector": "IT服务Ⅲ",
"news_count": 82,
"main_net": 0,
"change_pct": 0,
"heat_score": 41.0
},
{
"sector": "化学制剂",
"news_count": 80,
"main_net": 0,
"change_pct": 0,
"heat_score": 40.0
},
{
"sector": "国防军工",
"news_count": 74,
"main_net": 0,
"change_pct": 0,
"heat_score": 37.0
},
{
"sector": "消费电子",
"news_count": 72,
"main_net": 0,
"change_pct": 0,
"heat_score": 36.0
},
{
"sector": "环保",
"news_count": 69,
"main_net": 0,
"change_pct": 0,
"heat_score": 34.5
}
],
"top_stocks": [
{
"code": "000676",
"date": "2026-08-14",
"close": 7.36,
"open": 7.09,
"high": 7.72,
"low": 7.01,
"volume": 1895452.0,
"main_net": null,
"main_pct": null,
"sector": "传媒",
"ret": NaN
},
{
"code": "603367",
"date": "2026-08-14",
"close": 14.95,
"open": 15.31,
"high": 15.38,
"low": 14.93,
"volume": 114268.0,
"main_net": null,
"main_pct": null,
"sector": "化学制药",
"ret": NaN
},
{
"code": "603707",
"date": "2026-08-14",
"close": 8.11,
"open": 8.19,
"high": 8.27,
"low": 8.1,
"volume": 59954.0,
"main_net": null,
"main_pct": null,
"sector": "化学制药",
"ret": NaN
},
{
"code": "688247",
"date": "2026-08-14",
"close": 10.48,
"open": 9.92,
"high": 11.33,
"low": 9.83,
"volume": 21160833.0,
"main_net": null,
"main_pct": null,
"sector": "化学制药",
"ret": NaN
},
{
"code": "688578",
"date": "2026-08-14",
"close": 118.96,
"open": 119.4,
"high": 123.85,
"low": 117.1,
"volume": 6679828.0,
"main_net": null,
"main_pct": null,
"sector": "化学制药",
"ret": NaN
},
{
"code": "603883",
"date": "2026-08-14",
"close": 13.58,
"open": 13.44,
"high": 14.19,
"low": 13.36,
"volume": 275081.0,
"main_net": null,
"main_pct": null,
"sector": "医药生物",
"ret": NaN
},
{
"code": "603939",
"date": "2026-08-14",
"close": 23.84,
"open": 23.84,
"high": 24.42,
"low": 23.81,
"volume": 41553.0,
"main_net": null,
"main_pct": null,
"sector": "医药生物",
"ret": NaN
},
{
"code": "688050",
"date": "2026-08-14",
"close": 42.42,
"open": 44.86,
"high": 44.96,
"low": 42.38,
"volume": 4810734.0,
"main_net": null,
"main_pct": null,
"sector": "医药生物",
"ret": NaN
},
{
"code": "688271",
"date": "2026-08-14",
"close": 108.94,
"open": 109.3,
"high": 110.83,
"low": 108.52,
"volume": 2914751.0,
"main_net": null,
"main_pct": null,
"sector": "医药生物",
"ret": NaN
},
{
"code": "688289",
"date": "2026-08-14",
"close": 16.6,
"open": 16.81,
"high": 16.94,
"low": 16.47,
"volume": 6228715.0,
"main_net": null,
"main_pct": null,
"sector": "医药生物",
"ret": NaN
},
{
"code": "600667",
"date": "2026-08-14",
"close": 22.8,
"open": 23.5,
"high": 24.15,
"low": 22.61,
"volume": 2554070.0,
"main_net": null,
"main_pct": null,
"sector": "建筑装饰",
"ret": NaN
},
{
"code": "601899",
"date": "2026-08-14",
"close": 32.26,
"open": 31.8,
"high": 32.5,
"low": 31.75,
"volume": 1284580.0,
"main_net": null,
"main_pct": null,
"sector": "有色金属",
"ret": NaN
},
{
"code": "603979",
"date": "2026-08-14",
"close": 74.39,
"open": 72.07,
"high": 74.4,
"low": 70.99,
"volume": 59077.0,
"main_net": null,
"main_pct": null,
"sector": "有色金属",
"ret": NaN
},
{
"code": "603296",
"date": "2026-08-14",
"close": 84.63,
"open": 85.97,
"high": 88.1,
"low": 84.2,
"volume": 267999.0,
"main_net": null,
"main_pct": null,
"sector": "电子",
"ret": NaN
},
{
"code": "603327",
"date": "2026-08-14",
"close": 8.97,
"open": 9.02,
"high": 9.16,
"low": 8.95,
"volume": 143380.0,
"main_net": null,
"main_pct": null,
"sector": "电子",
"ret": NaN
},
{
"code": "688775",
"date": "2026-08-14",
"close": 133.72,
"open": 136.95,
"high": 137.87,
"low": 133.12,
"volume": 3053586.0,
"main_net": null,
"main_pct": null,
"sector": "电子",
"ret": NaN
},
{
"code": "688036",
"date": "2026-08-14",
"close": 54.69,
"open": 54.57,
"high": 55.09,
"low": 54.2,
"volume": 5194402.0,
"main_net": null,
"main_pct": null,
"sector": "电子",
"ret": NaN
},
{
"code": "688080",
"date": "2026-08-14",
"close": 36.28,
"open": 36.55,
"high": 36.98,
"low": 36.02,
"volume": 517689.0,
"main_net": null,
"main_pct": null,
"sector": "通信设备",
"ret": NaN
},
{
"code": "688100",
"date": "2026-08-14",
"close": 29.03,
"open": 29.39,
"high": 29.51,
"low": 29.02,
"volume": 1822970.0,
"main_net": null,
"main_pct": null,
"sector": "通信设备",
"ret": NaN
}
],
"sector_news": [
{
"sector": "通信设备",
"news_count": 249
},
{
"sector": "医药生物",
"news_count": 197
},
{
"sector": "化学制药",
"news_count": 172
},
{
"sector": "电子",
"news_count": 159
},
{
"sector": "传媒",
"news_count": 132
},
{
"sector": "有色金属",
"news_count": 127
},
{
"sector": "住宅开发",
"news_count": 123
},
{
"sector": "光学光电子",
"news_count": 119
},
{
"sector": "工业金属",
"news_count": 112
},
{
"sector": "建筑装饰",
"news_count": 107
},
{
"sector": "中药Ⅲ",
"news_count": 103
},
{
"sector": "家用电器",
"news_count": 94
},
{
"sector": "贵金属",
"news_count": 93
},
{
"sector": "软件开发",
"news_count": 86
},
{
"sector": "元件",
"news_count": 84
},
{
"sector": "IT服务Ⅲ",
"news_count": 82
},
{
"sector": "化学制剂",
"news_count": 80
},
{
"sector": "国防军工",
"news_count": 74
},
{
"sector": "消费电子",
"news_count": 72
},
{
"sector": "环保",
"news_count": 69
}
],
"sector_flow": []
}
+547
View File
@@ -0,0 +1,547 @@
{
"date": "2026-08-17",
"market": {
"close": 3591.197,
"rsi": 50.165391422684124,
"ma20": 3573.410605
},
"hot_sectors": [
{
"sector": "通信设备",
"news_count": 161,
"main_net": 0,
"change_pct": 0,
"heat_score": 80.5
},
{
"sector": "住宅开发",
"news_count": 117,
"main_net": 0,
"change_pct": 0,
"heat_score": 58.5
},
{
"sector": "医药生物",
"news_count": 97,
"main_net": 0,
"change_pct": 0,
"heat_score": 48.5
},
{
"sector": "家用电器",
"news_count": 81,
"main_net": 0,
"change_pct": 0,
"heat_score": 40.5
},
{
"sector": "化学制药",
"news_count": 80,
"main_net": 0,
"change_pct": 0,
"heat_score": 40.0
},
{
"sector": "电子",
"news_count": 74,
"main_net": 0,
"change_pct": 0,
"heat_score": 37.0
},
{
"sector": "建筑装饰",
"news_count": 62,
"main_net": 0,
"change_pct": 0,
"heat_score": 31.0
},
{
"sector": "有色金属",
"news_count": 61,
"main_net": 0,
"change_pct": 0,
"heat_score": 30.5
},
{
"sector": "中药Ⅲ",
"news_count": 51,
"main_net": 0,
"change_pct": 0,
"heat_score": 25.5
},
{
"sector": "传媒",
"news_count": 48,
"main_net": 0,
"change_pct": 0,
"heat_score": 24.0
},
{
"sector": "工业金属",
"news_count": 47,
"main_net": 0,
"change_pct": 0,
"heat_score": 23.5
},
{
"sector": "光学光电子",
"news_count": 46,
"main_net": 0,
"change_pct": 0,
"heat_score": 23.0
},
{
"sector": "IT服务Ⅲ",
"news_count": 43,
"main_net": 0,
"change_pct": 0,
"heat_score": 21.5
},
{
"sector": "化学制剂",
"news_count": 42,
"main_net": 0,
"change_pct": 0,
"heat_score": 21.0
},
{
"sector": "贵金属",
"news_count": 37,
"main_net": 0,
"change_pct": 0,
"heat_score": 18.5
},
{
"sector": "商业地产",
"news_count": 34,
"main_net": 0,
"change_pct": 0,
"heat_score": 17.0
},
{
"sector": "建筑材料",
"news_count": 33,
"main_net": 0,
"change_pct": 0,
"heat_score": 16.5
},
{
"sector": "软件开发",
"news_count": 33,
"main_net": 0,
"change_pct": 0,
"heat_score": 16.5
},
{
"sector": "消费电子",
"news_count": 33,
"main_net": 0,
"change_pct": 0,
"heat_score": 16.5
},
{
"sector": "专用设备",
"news_count": 32,
"main_net": 0,
"change_pct": 0,
"heat_score": 16.0
}
],
"top_stocks": [
{
"code": "000676",
"date": "2026-08-17",
"close": 6.95,
"open": 7.21,
"high": 7.3,
"low": 6.79,
"volume": 1374345.0,
"main_net": null,
"main_pct": null,
"sector": "传媒",
"ret": NaN
},
{
"code": "600791",
"date": "2026-08-17",
"close": 7.88,
"open": 7.22,
"high": 8.0,
"low": 7.22,
"volume": 228795.0,
"main_net": null,
"main_pct": null,
"sector": "住宅开发",
"ret": NaN
},
{
"code": "688578",
"date": "2026-08-17",
"close": 119.21,
"open": 120.59,
"high": 122.3,
"low": 118.18,
"volume": 6785788.0,
"main_net": null,
"main_pct": null,
"sector": "化学制药",
"ret": NaN
},
{
"code": "603367",
"date": "2026-08-17",
"close": 14.93,
"open": 15.2,
"high": 15.2,
"low": 14.64,
"volume": 93795.0,
"main_net": null,
"main_pct": null,
"sector": "化学制药",
"ret": NaN
},
{
"code": "603707",
"date": "2026-08-17",
"close": 8.01,
"open": 8.09,
"high": 8.13,
"low": 7.86,
"volume": 70855.0,
"main_net": null,
"main_pct": null,
"sector": "化学制药",
"ret": NaN
},
{
"code": "688247",
"date": "2026-08-17",
"close": 10.76,
"open": 10.7,
"high": 11.18,
"low": 10.52,
"volume": 16110672.0,
"main_net": null,
"main_pct": null,
"sector": "化学制药",
"ret": NaN
},
{
"code": "688366",
"date": "2026-08-17",
"close": 32.38,
"open": 32.55,
"high": 32.75,
"low": 31.7,
"volume": 792606.0,
"main_net": null,
"main_pct": null,
"sector": "医药生物",
"ret": NaN
},
{
"code": "688410",
"date": "2026-08-17",
"close": 11.15,
"open": 11.21,
"high": 11.39,
"low": 10.94,
"volume": 6705815.0,
"main_net": null,
"main_pct": null,
"sector": "医药生物",
"ret": NaN
},
{
"code": "688468",
"date": "2026-08-17",
"close": 6.4,
"open": 6.35,
"high": 6.45,
"low": 6.26,
"volume": 1957147.0,
"main_net": null,
"main_pct": null,
"sector": "医药生物",
"ret": NaN
},
{
"code": "688580",
"date": "2026-08-17",
"close": 49.78,
"open": 50.27,
"high": 50.7,
"low": 49.21,
"volume": 1038014.0,
"main_net": null,
"main_pct": null,
"sector": "医药生物",
"ret": NaN
},
{
"code": "688617",
"date": "2026-08-17",
"close": 214.52,
"open": 217.29,
"high": 218.66,
"low": 213.11,
"volume": 806942.0,
"main_net": null,
"main_pct": null,
"sector": "医药生物",
"ret": NaN
},
{
"code": "688169",
"date": "2026-08-17",
"close": 111.0,
"open": 106.61,
"high": 112.44,
"low": 106.42,
"volume": 5414361.0,
"main_net": null,
"main_pct": null,
"sector": "家用电器",
"ret": NaN
},
{
"code": "300668",
"date": "2026-08-17",
"close": 35.98,
"open": 34.37,
"high": 36.28,
"low": 34.37,
"volume": 52891.0,
"main_net": null,
"main_pct": null,
"sector": "建筑装饰",
"ret": NaN
},
{
"code": "600667",
"date": "2026-08-17",
"close": 23.61,
"open": 22.5,
"high": 24.14,
"low": 22.21,
"volume": 2941593.0,
"main_net": null,
"main_pct": null,
"sector": "建筑装饰",
"ret": NaN
},
{
"code": "601899",
"date": "2026-08-17",
"close": 33.18,
"open": 33.33,
"high": 33.65,
"low": 33.05,
"volume": 1368341.0,
"main_net": null,
"main_pct": null,
"sector": "有色金属",
"ret": NaN
},
{
"code": "603979",
"date": "2026-08-17",
"close": 77.39,
"open": 78.12,
"high": 79.22,
"low": 76.81,
"volume": 61899.0,
"main_net": null,
"main_pct": null,
"sector": "有色金属",
"ret": NaN
},
{
"code": "688699",
"date": "2026-08-17",
"close": 66.99,
"open": 66.66,
"high": 67.95,
"low": 65.02,
"volume": 6308219.0,
"main_net": null,
"main_pct": null,
"sector": "电子",
"ret": NaN
},
{
"code": "688775",
"date": "2026-08-17",
"close": 132.2,
"open": 132.0,
"high": 133.6,
"low": 130.53,
"volume": 2218572.0,
"main_net": null,
"main_pct": null,
"sector": "电子",
"ret": NaN
},
{
"code": "603296",
"date": "2026-08-17",
"close": 85.97,
"open": 86.4,
"high": 87.6,
"low": 84.59,
"volume": 164487.0,
"main_net": null,
"main_pct": null,
"sector": "电子",
"ret": NaN
},
{
"code": "603327",
"date": "2026-08-17",
"close": 8.92,
"open": 9.05,
"high": 9.14,
"low": 8.85,
"volume": 135678.0,
"main_net": null,
"main_pct": null,
"sector": "电子",
"ret": NaN
},
{
"code": "688036",
"date": "2026-08-17",
"close": 54.72,
"open": 55.09,
"high": 55.16,
"low": 53.9,
"volume": 8093113.0,
"main_net": null,
"main_pct": null,
"sector": "电子",
"ret": NaN
},
{
"code": "688668",
"date": "2026-08-17",
"close": 291.21,
"open": 275.75,
"high": 295.5,
"low": 268.0,
"volume": 5690343.0,
"main_net": null,
"main_pct": null,
"sector": "通信设备",
"ret": NaN
},
{
"code": "688080",
"date": "2026-08-17",
"close": 37.26,
"open": 36.7,
"high": 37.8,
"low": 36.5,
"volume": 822541.0,
"main_net": null,
"main_pct": null,
"sector": "通信设备",
"ret": NaN
},
{
"code": "688100",
"date": "2026-08-17",
"close": 26.39,
"open": 27.2,
"high": 27.2,
"low": 25.0,
"volume": 10028495.0,
"main_net": null,
"main_pct": null,
"sector": "通信设备",
"ret": NaN
}
],
"sector_news": [
{
"sector": "通信设备",
"news_count": 161
},
{
"sector": "住宅开发",
"news_count": 117
},
{
"sector": "医药生物",
"news_count": 97
},
{
"sector": "家用电器",
"news_count": 81
},
{
"sector": "化学制药",
"news_count": 80
},
{
"sector": "电子",
"news_count": 74
},
{
"sector": "建筑装饰",
"news_count": 62
},
{
"sector": "有色金属",
"news_count": 61
},
{
"sector": "中药Ⅲ",
"news_count": 51
},
{
"sector": "传媒",
"news_count": 48
},
{
"sector": "工业金属",
"news_count": 47
},
{
"sector": "光学光电子",
"news_count": 46
},
{
"sector": "IT服务Ⅲ",
"news_count": 43
},
{
"sector": "化学制剂",
"news_count": 42
},
{
"sector": "贵金属",
"news_count": 37
},
{
"sector": "商业地产",
"news_count": 34
},
{
"sector": "消费电子",
"news_count": 33
},
{
"sector": "软件开发",
"news_count": 33
},
{
"sector": "建筑材料",
"news_count": 33
},
{
"sector": "专用设备",
"news_count": 32
}
],
"sector_flow": []
}
+907 -32
View File
@@ -1,19 +1,383 @@
{
"checked_at": "2026-07-30T09:00:54",
"total_active": 30,
"flagged_count": 4,
"checked_at": "2026-08-18T09:25:00",
"total_active": 105,
"flagged_count": 62,
"flagged": [
{
"code": "00020",
"name": "商汤",
"price": 1.53,
"flags": [
"现价1.53在买入区2~2(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "2~2",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | 放量 | 目标1.73 | 止损1.41 | 买入区1.5~1.54",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "000676",
"name": "智度股份",
"price": 7.0,
"flags": [
"现价7.00在买入区7~7(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "7~7",
"current": "空仓关注 | 正常 | 目标7.96 | 止损6.76 | 买入区6.86~7.14",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "001248",
"name": "华润新能源",
"price": 12.86,
"flags": [
"现价12.86在买入区13~13(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "13~13",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.5),谨慎买入 | 缩量 | 目标13.46 | 止损12.47 | 买入区12.6~12.87 | 信号:关注",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "00241",
"name": "阿里健康",
"price": 3.28,
"flags": [
"[STRATEGY_STALE] 信号不良(timing_signal含['弱势持有'])",
"现价3.28在买入区3~3(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "3~3",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.9),谨慎买入 | 目标3.49 | 止损3.17 | 买入区3.21~3.3 | 信号:弱势持有",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "00268",
"name": "金蝶国际",
"price": 7.97,
"flags": [
"[STRATEGY_STALE] 盈亏比不足(RR=1.49)或无止盈",
"现价7.97在买入区8~8(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "8~8",
"current": "空仓关注 | ⚠️盈亏比不足1:1.5,不建议买入 | 目标8.73 | 止损7.46 | 买入区7.81~7.97",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "01810",
"name": "小米集团",
"price": 25.88,
"flags": [
"[STRATEGY_STALE] 信号不良(timing_signal含['弱势持有'])",
"现价25.88在买入区25~26(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "25~26",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | 目标27.31 | 止损25.03 | 买入区25.36~25.94 | 信号:弱势持有",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "01833",
"name": "平安好医生",
"price": 7.4,
"flags": [
"现价7.40在买入区7~7(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "7~7",
"current": "空仓关注 | 正常 | 目标8.06 | 止损7.07 | 买入区7.25~7.47 | 信号:关注",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "02015",
"name": "理想汽车",
"price": 48.48,
"flags": [
"现价48.48在买入区48~49(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "48~49",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | 目标52.17 | 止损46.33 | 买入区47.51~48.67 | 信号:弱势持有",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "02020",
"name": "安踏体育",
"price": 72.15,
"flags": [
"现价72.15在买入区71~72(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "71~72",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | 正常 | 目标75.76 | 止损69.99 | 买入区70.71~72.3 | 信号:关注",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "02331",
"name": "李宁",
"price": 14.45,
"flags": [
"现价14.45在买入区14~15(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "14~15",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | 正常 | 目标15.71 | 止损13.74 | 买入区14.16~14.53 | 信号:关注",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "06618",
"name": "京东健康",
"price": 39.12,
"flags": [
"现价39.12在买入区39~39(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "39~39",
"current": "当前不立即建仓,在38.70~39.30区间委托限价单,若价格反弹至39.77弱压且量能放大,可主动追入;若跌破38.67弱撑则取消挂单并继续观望。换仓建议:本股性价比低于现持仓,不建议换仓操作。",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "06862",
"name": "海底捞",
"price": 11.25,
"flags": [
"现价11.25在买入区11~11(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "11~11",
"current": "暂不建仓,空仓等待。关注10.90~11.30区间,若出现止跌信号(收阳站稳MA5或连续两日守住11.11)可轻仓试探买入,止损10.26。若直接跌破10.47强撑,放弃本次关注。已持有其他个股者无需调整,06862目前不具备优于现有持仓的确定性。",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "09999",
"name": "网易",
"price": 194.2,
"flags": [
"现价194.20在买入区190~195(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "190~195",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.9),谨慎买入 | 正常 | 目标208.11 | 止损186.81 | 买入区190.32~195.33 | 信号:关注",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "300668",
"name": "300668",
"price": 35.6,
"flags": [
"现价35.60在买入区34~36(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "34~36",
"current": "不建仓,维持空仓等待。若价格回调至34.37~34.50区间且RR恢复至2.0以上,可轻仓试探,当前不具备买入条件。不进行换仓操作,本股当前不优于现有持仓。",
"updated_by": null,
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "601997",
"name": "贵阳银行",
"price": 5.58,
"flags": [
"现价5.58在买入区6~6(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "6~6",
"current": "买5.15~5.53 | 损4.99 | 盈6.23 | RR2.5 | 评分11.0",
"updated_by": null,
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "601998",
"name": "中信银行",
"price": 7.69,
"flags": [
"现价7.69在买入区8~8(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "8~8",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | 正常 | 目标8.08 | 止损7.46 | 买入区7.54~7.71 | 信号:关注",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "603296",
"name": "华勤技术",
"price": 86.9,
"flags": [
"现价86.90在买入区85~88(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "85~88",
"current": "空仓关注 | v7.1闸门拦截: 评分38<45; ADX7.641221829870787<20; MA20斜率2.367>1.5; 大盘斜率0.456>-0.05... | 正常 | 目标93.32 | 止损84.29 | 买入区85.16~87.9 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "603323",
"name": "苏农银行",
"price": 4.13,
"flags": [
"[STRATEGY_STALE] 信号不良(timing_signal含['弱势持有'])",
"现价4.13在买入区4~4(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "4~4",
"current": "当前未持有该股,现价4.13处于技术变盘临界点,不建议立即建仓。等待两种情景:情景一,回踩4.02-4.10区间且资金流出收窄、出现下影线企稳信号,可轻仓试探(5%以内);情景二,放量突破MA20(4.25)且主力资金转为净流入,可右侧追入。若跌破3.91强撑则放弃关注,等待更低更安全的位置。不建议当前价位(4.13)直接买入,因弱压4.15近在咫尺、反弹空间极小,追高风险收益比不划算。",
"updated_by": null,
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "603327",
"name": "福蓉科技",
"price": 8.97,
"flags": [
"现价8.97在买入区9~9(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "9~9",
"current": "空仓关注 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | v7.1闸门拦截: ADX8.653842904972189<20; ROC0.2234636871508531<10; MACD柱0.038253814388296024<0.25; 距MA200.73<4... | 正常 | 目标9.5 | 止损8.7 | 买入区8.79~9.02 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "603367",
"name": "辰欣药业",
"price": 14.13,
"price": 14.98,
"flags": [
"现价14.13在买入区14~14(是否可买需结合timing_signal判断)"
"现价14.98在买入区15~15(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-07-30 08:11:55",
"entry_zone": "14~14",
"current": "继续空仓关注,不建仓。等待价格回调至13.91~14.00区间且出现阳线吞噬或长下影等企稳信号后再考虑轻仓介入。若直接突破14.25并站稳,可转为观望,不追高。",
"last_update": "2026-08-18 09:15:36",
"entry_zone": "15~15",
"current": "空仓关注 | 正常 | 目标16.01 | 止损14.53 | 买入区14.68~15.12",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "603707",
"name": "健友股份",
"price": 8.03,
"flags": [
"现价8.03在买入区8~8(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "8~8",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | v7.1闸门拦截: 评分40<45; ADX5.389091922364416<20; ATR%2.94<3.5; ROC-1.8337408312958479<10... | 正常 | 目标8.45 | 止损7.79 | 买入区7.87~8.05 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "603920",
"name": "世运电路",
"price": 39.86,
"flags": [
"现价39.86在买入区39~40(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "39~40",
"current": "空仓关注 | v7.1闸门拦截: ROC26.179170623615068>25; MACD柱1.3583918101940897>1.3; 大盘斜率0.456>-0.05 | 正常 | 目标42.9 | 止损38.66 | 买入区39.06~40.19 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "603939",
"name": "益丰药房",
"price": 24.0,
"flags": [
"现价24.00在买入区24~24(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "24~24",
"current": "现价24.0元已略高于买入区下沿,建议在23.50~24.31区间内分两笔建仓:首笔在23.50~23.90(靠近弱撑)买入50%计划仓位,若回踩至23.50附近企稳则加仓剩余50%;若股价直接放量突破24.31(弱压)则不追高,等待回踩确认。买入后严格止损于22.54,止盈于25.08。若消息面出现重大利空导致大盘急跌,可暂缓建仓等待企稳。本股ROE和现金流未见异常,可不换仓,但若你希望提高仓位",
"updated_by": null,
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "603979",
"name": "金诚信",
"price": 77.59,
"flags": [
"现价77.59在买入区77~78(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "77~78",
"current": "空仓关注 | 正常 | 目标84.32 | 止损75.26 | 买入区76.04~78.88 | 信号:关注",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688002",
"name": "睿创微纳",
"price": 168.78,
"flags": [
"现价168.78在买入区165~169(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "165~169",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | v7.1闸门拦截: 评分43<45; MACD柱1.8507236686829387>1.3; MA20斜率5.556>1.5; 大盘斜率0.456>-0.05... | 正常 | 目标177.07 | 止损163.72 | 买入区165.4~169.06 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
@@ -21,14 +385,119 @@
{
"code": "688036",
"name": "传音控股",
"price": 65.69,
"price": 55.4,
"flags": [
"现价65.69在买入区65~67(是否可买需结合timing_signal判断)"
"现价55.40在买入区54~56(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-07-30 08:11:55",
"entry_zone": "65~67",
"current": "当前未持有,建议维持空仓观望,不建仓。若价格回调至弱撑65.12附近且宏观风险缓解,可轻仓试探;若跌破止损64.56则放弃。换仓建议:暂不换仓。",
"last_update": "2026-08-18 09:15:36",
"entry_zone": "54~56",
"current": "空仓关注 | 目标59.86 | 止损53.74 | 买入区54.29~56.19 | 信号:弱势持有",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688080",
"name": "映翰通",
"price": 37.56,
"flags": [
"现价37.56在买入区37~38(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "37~38",
"current": "空仓关注 | v7.1闸门拦截: ATR%3.15<3.5; ROC9.69626168224299<10; MA20斜率1.578>1.5; 大盘斜率0.456>-0.05... | 量价背离 | 近5日减量涨价=⬆量价背离 | 目标40.29 | 止损36.43 | 买入区36.81~37.97 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688088",
"name": "虹软科技",
"price": 33.67,
"flags": [
"现价33.67在买入区33~34(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "33~34",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | v7.1闸门拦截: 评分37<45; ROC0.1487209994051287<10; MACD柱0.19043501934499957<0.25; 距MA202.16<4... | 正常 | 目标35.4 | 止损32.66 | 买入区33.0~33.76 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688092",
"name": "爱科科技",
"price": 22.94,
"flags": [
"现价22.94在买入区22~23(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "22~23",
"current": "空仓关注 | v7.1闸门拦截: ATR%2.59<3.5; ROC4.272727272727279<10; 大盘斜率0.456>-0.05; RSI增量1.96<6 | 正常 | 目标24.83 | 止损22.25 | 买入区22.48~23.28 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688101",
"name": "三达膜",
"price": 15.68,
"flags": [
"现价15.68在买入区15~16(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "15~16",
"current": "空仓关注 | v7.1闸门拦截: ATR%2.79<3.5; ROC2.283105022831048<10; MACD柱0.09322618225661439<0.25; 距MA202.56<4... | 缩量 | 目标16.8 | 止损15.21 | 买入区15.37~15.85 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688111",
"name": "金山办公",
"price": 255.44,
"flags": [
"现价255.44在买入区250~257(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "250~257",
"current": "空仓关注 | v7.1闸门拦截: 评分30<45; ADX2.6403266276484945<20; ROC-6.777124922448084<10; MACD柱-1.852873392005927<0.25... | 正常 | 目标270.8 | 止损247.78 | 买入区250.33~256.99 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688113",
"name": "联测科技",
"price": 36.89,
"flags": [
"现价36.89在买入区36~37(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "36~37",
"current": "空仓关注 | v7.1闸门拦截: ATR%3.18<3.5; ROC8.118405627198134<10; 量比0.88<0.9; MA20斜率2.264>1.5... | 量价背离 | 近5日减量涨价=⬆量价背离 | 目标39.48 | 止损35.78 | 买入区36.15~37.26 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688117",
"name": "圣诺生物",
"price": 27.03,
"flags": [
"现价27.03在买入区26~27(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "26~27",
"current": "空仓关注 | v7.1闸门拦截: 量比0.62<0.9; 大盘斜率0.456>-0.05; RSI增量0.78<6 | 正常 | 目标28.67 | 止损26.22 | 买入区26.49~27.2 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
@@ -36,43 +505,449 @@
{
"code": "688136",
"name": "科兴制药",
"price": 17.73,
"price": 20.76,
"flags": [
"现价17.73在买入区17~18(是否可买需结合timing_signal判断)"
"现价20.76在买入区20~21(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-07-30 08:11:55",
"entry_zone": "17~18",
"current": "继续空仓观望,等待股价回踩17.4附近并出现放量企稳信号后再考虑介入,当前不建仓。",
"last_update": "2026-08-18 09:15:36",
"entry_zone": "20~21",
"current": "空仓关注 | v7.1闸门拦截: 量比0.57<0.9; 大盘斜率0.456>-0.05; RSI增量2.41<6 | 正常 | 目标22.2 | 止损20.14 | 买入区20.34~20.96 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688578",
"name": "艾力斯",
"price": 118.3,
"code": "688208",
"name": "道通科技",
"price": 26.84,
"flags": [
"现价118.30在买入区116~119(是否可买需结合timing_signal判断)"
"现价26.84在买入区26~27(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-07-30 08:11:55",
"entry_zone": "116~119",
"current": "不建仓,继续空仓关注。若后续股价回踩弱撑116.11且放量收阳,可重新评估。",
"last_update": "2026-08-18 09:15:36",
"entry_zone": "26~27",
"current": "空仓关注 | 目标28.56 | 止损26.03 | 买入区26.3~27.04 | 信号:弱势持有",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688247",
"name": "宣泰医药",
"price": 10.66,
"flags": [
"现价10.66在买入区10~11(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "10~11",
"current": "空仓关注 | 量价齐升(建仓特征) | 近5日增量涨价=建仓型 | 目标12.83 | 止损10.34 | 买入区10.45~10.87",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688271",
"name": "联影医疗",
"price": 107.8,
"flags": [
"[STRATEGY_STALE] 信号不良(timing_signal含['弱势持有'])",
"现价107.80在买入区106~109(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "106~109",
"current": "空仓关注 | 目标115.37 | 止损104.57 | 买入区105.64~108.89 | 信号:弱势持有",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688331",
"name": "荣昌生物",
"price": 133.99,
"flags": [
"现价133.99在买入区131~135(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "131~135",
"current": "空仓关注 | v7.1闸门拦截: 评分43<45; ADX2.975727065893735<20; ATR%5.85>5.5; MACD柱1.6432999367686207>1.3... | 正常 | 目标143.22 | 止损129.49 | 买入区131.31~134.98 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688333",
"name": "铂力特",
"price": 115.75,
"flags": [
"现价115.75在买入区113~116(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "113~116",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | v7.1闸门拦截: 评分43<45; ATR%6.35>5.5; ROC39.72718493481409>25; MACD柱2.6315433926001486>1.3... | 量价背离 | 近5日减量涨价=⬆量价背离 | 目标126.36 | 止损111.84 | 买入区113.44~116.33 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688336",
"name": "三生国健",
"price": 48.79,
"flags": [
"现价48.79在买入区48~49(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "48~49",
"current": "空仓关注 | v7.1闸门拦截: ATR%6.09>5.5; 量比0.65<0.9; 大盘斜率0.456>-0.05; RSI增量2.38<6 | 正常 | 目标52.59 | 止损47.33 | 买入区47.81~49.43 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688345",
"name": "博力威",
"price": 57.76,
"flags": [
"现价57.76在买入区57~59(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "57~59",
"current": "空仓关注 | 量价齐升(建仓特征) | 近5日增量涨价=建仓型 | 目标65.42 | 止损55.54 | 买入区56.6~58.92",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688349",
"name": "三一重能",
"price": 14.51,
"flags": [
"现价14.51在买入区14~15(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "14~15",
"current": "当前不建仓。等待价格回落至14.32~14.55区间,且出现以下任一确认信号后再考虑入场:①主力单日资金净流入转正;②成交量显著萎缩至近5日均量60%以下且收盘价站稳14.32。若价格直接跌破14.07,则本轮观察作废,后续等待13.43强撑附近的机会。若价格放量突破14.67并回踩不破,可考虑轻仓跟进但需重新评估止损止盈。现有持仓结构无需变动,本股吸引力中等,不建议额外换仓。",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688366",
"name": "昊海生科",
"price": 32.43,
"flags": [
"现价32.43在买入区32~33(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "32~33",
"current": "空仓关注 | ⚠️盈亏比偏低(1:2.0),谨慎买入 | v7.1闸门拦截: ADX18.12610529202359<20; ATR%3.26<3.5; ROC1.6933207902163663<10; MACD柱0.13013856398352386<0.25... | 正常 | 目标34.34 | 止损31.46 | 买入区31.78~32.61 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688387",
"name": "信科移动-U",
"price": 14.78,
"flags": [
"现价14.78在买入区14~15(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "14~15",
"current": "空仓关注 | v7.1闸门拦截: ATR%6.27>5.5; 量比0.75<0.9; 大盘斜率0.456>-0.05; RSI增量-0.62<6... | 正常 | 目标15.8 | 止损14.34 | 买入区14.48~14.92 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688410",
"name": "山外山",
"price": 11.28,
"flags": [
"现价11.28在买入区11~12(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "11~12",
"current": "空仓关注 | v7.1闸门拦截: ROC3.240740740740737<10; MACD柱0.05618359936724682<0.25; 量比0.8<0.9; 大盘斜率0.454>-0.05... | 正常 | 目标12.35 | 止损10.94 | 买入区11.05~11.5 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688468",
"name": "科美诊断",
"price": 6.43,
"flags": [
"现价6.43在买入区6~7(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "6~7",
"current": "空仓关注 | v7.1闸门拦截: ATR%2.66<3.5; ROC4.213938411669364<10; MACD柱0.051714202647377874<0.25; 量比0.73<0.9... | 正常 | 目标6.95 | 止损6.24 | 买入区6.3~6.52 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688472",
"name": "阿特斯",
"price": 10.42,
"flags": [
"现价10.42在买入区10~10(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "10~10",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.8),谨慎买入 | v7.1闸门拦截: ATR%2.88<3.5; ROC-1.790763430725726<10; MACD柱0.05916825702321459<0.25; 距MA202.4<4... | 正常 | 目标10.97 | 止损10.11 | 买入区10.21~10.45 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688510",
"name": "航亚科技",
"price": 24.07,
"flags": [
"现价24.07在买入区24~24(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "24~24",
"current": "空仓关注 | v7.1闸门拦截: MA20斜率1.575>1.5; 大盘斜率0.456>-0.05 | B动量突破: 收缩突破通过(评分68,ROC11.953488372093023,量比1.8) | 三维降级: 资金持续流出(-2.79) | 正常 | 目标25.68 | 止损23.34 | 买入区23.59~24.28 | 信号:关注",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688518",
"name": "联赢激光",
"price": 20.85,
"flags": [
"现价20.85在买入区20~21(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "20~21",
"current": "空仓关注 | v7.1闸门拦截: 量比0.87<0.9; 大盘斜率0.456>-0.05; RSI增量2.77<6 | 正常 | 目标22.3 | 止损20.22 | 买入区20.43~21.05 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688571",
"name": "杭华股份",
"price": 9.14,
"flags": [
"现价9.14在买入区9~9(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "9~9",
"current": "当前未持有,建议继续空仓观望。等待两个信号之一:①放量(量比>1.5)突破9.31弱压,回踩确认后可轻仓建仓;②缩量回踩8.98弱撑且出现企稳K线(如阳线收复),可小仓位介入。若价格直接跌破8.80止损参考位,则彻底放弃该标的。当前不建议追高,也不建议用弱持仓换入。",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688579",
"name": "地纬智能",
"price": 8.13,
"flags": [
"现价8.13在买入区8~8(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "8~8",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | v7.1闸门拦截: ROC2.392947103274564<10; MACD柱0.05533821815514097<0.25; 量比0.65<0.9; 大盘斜率0.456>-0.05... | 正常 | 目标8.51 | 止损7.89 | 买入区7.97~8.14 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688580",
"name": "伟思医疗",
"price": 50.25,
"flags": [
"现价50.25在买入区49~51(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "49~51",
"current": "空仓关注 | v7.1闸门拦截: ROC7.5326342820458025<10; 距MA203.61<4; 大盘斜率0.456>-0.05; RSI增量1.11<6 | 正常 | 目标54.52 | 止损48.74 | 买入区49.24~51.05 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688588",
"name": "凌志软件",
"price": 9.75,
"flags": [
"现价9.75在买入区10~10(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "10~10",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.9),谨慎买入 | v7.1闸门拦截: ATR%3.37<3.5; ROC0.30864197530863535<10; MACD柱0.05533305994870563<0.25; 量比0.69<0.9... | 正常 | 目标10.3 | 止损9.46 | 买入区9.55~9.8 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688615",
"name": "合合信息",
"price": 120.71,
"flags": [
"现价120.71在买入区118~122(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "118~122",
"current": "空仓关注 | v7.1闸门拦截: 评分38<45; ATR%5.51>5.5; ROC5.793163891323401<10; MACD柱1.5339919026841442>1.3... | 正常 | 目标130.34 | 止损117.09 | 买入区118.3~122.39 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688617",
"name": "惠泰医疗",
"price": 215.13,
"flags": [
"现价215.13在买入区213~216(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "213~216",
"current": "空仓等待,不急于建仓。若价格回踩212.61~214.38区间且止跌(分时站稳30分钟),可在212.61~215.63区间轻仓试多,仓位≤5%;若直接放量突破218.16,可小仓追入但目标看232.09,需严格止损。当前现价215.13位于买入区中值,无安全边际,禁止现价追买。现有弱势持仓(腾讯/紫金/丘钛)无换入本股必要,因本股信号弱于它们当前处理优先级。",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688621",
"name": "阳光诺和",
"price": 67.53,
"flags": [
"现价67.53在买入区66~68(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "66~68",
"current": "现价67.53处于枢轴66.43与弱压68.70之间,建议在66.40~68.00区间内分批建仓,仓位控制8%。若股价回踩至66.40附近可优先买入,若直接上攻突破68.70则等待回踩确认后再介入,禁止追高至70以上。买入后持有,止盈看至71.80,止损64.50严格执行。换仓建议:本股技术面、资金面均强于最弱持仓腾讯控股(弱势持有),可考虑减持腾讯控股换入本股以提升组合效率。",
"updated_by": null,
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688660",
"name": "电气风电",
"price": 9.01,
"flags": [
"现价9.01在买入区9~9(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "9~9",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.7),谨慎买入 | v7.1闸门拦截: 评分37<45; ADX4.333720655631339<20; ROC2.853881278538813<10; MACD柱0.06695467143519222<0.25... | 正常 | 目标9.47 | 止损8.74 | 买入区8.83~9.03 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688667",
"name": "菱电电控",
"price": 91.85,
"flags": [
"现价91.85在买入区90~93(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "90~93",
"current": "空仓关注 | v7.1闸门拦截: MACD柱1.9542472879490385>1.3; 大盘斜率0.456>-0.05; RSI增量2.61<6; 无更高高点hh | 量价背离 | 近5日减量涨价=⬆量价背离 | 目标98.35 | 止损89.09 | 买入区90.01~92.79 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688690",
"name": "纳微科技",
"price": 45.2,
"flags": [
"现价45.20在买入区44~46(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "44~46",
"current": "空仓关注 | 正常 | 目标48.23 | 止损43.84 | 买入区44.3~45.54",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688696",
"name": "极米科技",
"price": 71.87,
"flags": [
"现价71.87在买入区70~72(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "70~72",
"current": "空仓关注 | ⚠️盈亏比偏低(1:1.6),谨慎买入 | 正常 | 目标75.23 | 止损69.71 | 买入区70.43~71.92 | 信号:关注",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688722",
"name": "同益中",
"price": 14.57,
"flags": [
"现价14.57在买入区14~15(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "14~15",
"current": "空仓关注 | v7.1闸门拦截: ATR%2.93<3.5; ROC2.8228652081863115<10; MACD柱0.13450192396489574<0.25; 量比0.72<0.9... | 量价背离 | 近5日减量涨价=⬆量价背离 | 目标15.59 | 止损14.13 | 买入区14.28~14.71 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
},
{
"code": "688768",
"name": "容知日新",
"price": 43.99,
"flags": [
"现价43.99在买入区43~45(是否可买需结合timing_signal判断)"
],
"age_days": 0,
"last_update": "2026-08-18 09:15:36",
"entry_zone": "43~45",
"current": "空仓关注 | v7.1闸门拦截: 评分35<45; ROC-3.509541566132927<10; 距MA202.35<4; MA20斜率2.192>1.5... | 正常 | 目标47.52 | 止损42.67 | 买入区43.11~44.61 | 信号:观望",
"updated_by": "auto",
"updated_reason": "自动生成",
"is_watchlist": true
}
],
"portfolio": {
"position_pct": 92.52,
"cash": 69797.0,
"weak_position_pct": 35.3,
"all_weak_pct": 33.3,
"position_pct": 83.98,
"cash": 149518.9,
"weak_position_pct": 43.8,
"all_weak_pct": 24.8,
"signals": [
"[PORTFOLIO_WEAK_MILD] 组合弱势占比35.3%,需关注",
"[PORTFOLIO_FULL] 总仓位92.52%(现金69797元),买入建议受限"
"[PORTFOLIO_WEAK] 组合弱势+深套分类持仓占比43.8%>40%,建议系统性减仓",
"[PORTFOLIO_FULL] 总仓位83.98%(现金149519元),买入建议受限"
]
},
"summary": "扫描30个策略,4个需关注"
"summary": "扫描105个策略,62个需关注"
}
+1 -1
View File
@@ -38,7 +38,7 @@
# 自成长知识库健康管线
*/5 * * * * cd /home/hmo/projects/self-growing-knowledge/scripts && /usr/bin/python3 agents_health_check.py >> ../logs/health_check.log 2>&1
*/5 * * * * cd /home/hmo/projects/self-growing-knowledge/scripts && /usr/bin/python3 auto_heal.py >> ../logs/auto_heal.log 2>&1
*/15 * * * * cd /home/hmo/projects/self-growing-knowledge/scripts && /usr/bin/python3 wechat_e2e_check.py >> ../logs/e2e_check.log 2>&1
# [2026-08-17禁] 微信e2e自测每15分钟发消息给文件传输助手→封号诱因, 永久禁用; 原: */15 * * * * cd /home/hmo/projects/self-growing-knowledge/scripts && /usr/bin/python3 wechat_e2e_check.py >> ../logs/e2e_check.log 2>&1
0 */6 * * * cd /home/hmo/projects/self-growing-knowledge/scripts && /usr/bin/python3 self_analyzer.py >> ../logs/self_analyzer.log 2>&1
50 8 * * 1-5 cd /home/hmo/MoFin/deploy/profile-scripts && python3 watchlist_auto_exit.py >> /tmp/watchlist_exit.log 2>&1
10 8 * * 1-5 cd /home/hmo/MoFin/deploy/profile-scripts && bash parallel_batch.sh 4 all >> /tmp/parallel_batch_cron.log 2>&1
+81
View File
@@ -0,0 +1,81 @@
## [2026-08-17 14:00] 宏观HIGH误报第十四实例(TODO#277)+ 新误报向量:产品涨价/定价类新闻
**事件:** 13:31 采集器 HIGH「iPhone 17系列或月底前全球涨价 单台最高多花近千元」(signal_news ID=1927),13:35 state 自动过期(level=none expired=true),13:45 自愈 TODO#277
**判定:** INFO(ID=1928 修正覆盖)。产品定价类新闻,苹果提价对 A 股消费电子链中性偏正面,无系统性下跌链路。市场普涨(上证+0.88%/创业板+2.21%/恒指+1.71%),背离 none bias=opportunity。
**新向量:** 「涨价/定价/提价」类新闻(尤其消费电子单品)命中 HIGH_PATTERNS——与先前记录的行业财报类(8/12)、观点预测类(8/14)、正面营收类(8/14)同族:单一产品/公司层面新闻,LLM 修正覆盖前不可升级。
**清扫:** 当日 561 条全部落级(info 541 + medium 20)。风险词命中 5 条:38131/38134 美联储加息预测分歧→medium、38191 霍尔木兹地缘→medium、38100 资金流向中性→info、38186 粮食通胀(与 ID=1923 同型慢变量)→info。
**复用要点:** 收到「涨价/提价」类 HIGH 报警直接判 INFO 修正覆盖 + 关 TODO,不重跑管道。
## [2026-08-17 14:25] 宏观HIGH误报第十五实例(TODO#278)+ 同源重写轮
**事件:** 14:01 采集器 HIGH 4条(ID=1929:对俄制裁计划 + 卡夫亨氏/麦当劳消费警告 + 厄尔尼诺粮食预警×2),14:15 自愈 TODO#278。与上午 ID=1922(粮食ETF)同源重写——红绿灯不知道修正结论,每30分周期持续重写(8/13 变体2 预期行为)。
**判定:** MEDIUMID=1930 修正覆盖)。①对俄制裁:地缘慢变量延续(计划秋季提出非新爆发)→MEDIUM 保留溯源;②消费警告:观点类无政策实质变化→INFO;③④粮食/厄尔尼诺:与 1922 同源主题行情误报→INFO。市场实况:背离 bias=opportunity,全指数飘红(科创50+3.42%/恒指+1.76%),无传导链。
**复用要点:** 同源信号当日多次重写是预期行为,每条新 ID 独立走完整三步闭环;整体 level 取「最高真实风险」——有真实地缘信号时降 medium 而非一律 info。
## [2026-08-17 16:20] 收盘简报前自检发现:功能树fail但多数为误报
### 发现
mofin_health.json 16:01 生成时 feature_tree 根=failwarn_detail 列 9 个 job "output_missing"。逐一核对 jobs.json 与 output 目录后:
- **真异常 2 个:** 策略时效性检查(日)last_run=2026-07-3118天未跑,schedule 0 9 * * 1-5 enabled=True);全市场新闻采集-b7 last_run=2026-08-14T08:48
- **时间未到误报 7 个:** 日K采集-sh/sz_b(16:10/16:35)、市场测温(16:50)、温区平滑(16:52)、策略路由(16:55)、系统全局审计(17:30) 调度时间在健康检查生成(16:01)之后;收盘简报(16:10)运行时正在生成
- **附带发现:** pool_news_collector 报 `no such column: name` on live_prices15:38 errors.log)——live_prices 表结构缺 name 列,需要后续核查
### 修改
无(本session为收盘简报cron,未改代码)。已记录待 health-check-repair/自愈 TODO 跟进。
### 建议
mofin_health.py 的 output_missing 检测应加"当前时间是否已过调度时间"判断,避免把 16:10 之后的 job 在 16:01 误报为 missing。
## [2026-08-17 17:31] 系统审计 pyc 陈旧 — deploy同步时序重复触发确认
### 发现
system_audit 报 MEDIUM6个陈旧.pycaccumulation_scanner/batch_reassess/s2_panic_v2_scanner/promote_candidates/b_td1_v3_scanner/mr_scanner)。
逐项验证 mtime:其中5个 .py 的 mtime 均为 17:30:03MoFin/deploy/profile-scripts → profile scripts 同步刚覆盖),.pyc 停留 16:45 → 全部真陈旧,非假阳性。batch_reassess.py 为 16:50 手动更新致陈旧。
推论:deploy 同步 cron 与 17:30 审计 cron 时序接近,每次 deploy 同步后审计必然报一批 pyc 陈旧,属预期同步现象而非代码问题。
### 修改
6个 .py 全部 `python3 -m py_compile` 重新编译,pyc mtime 更新至 17:31:10。审计问题清零。
### 效果
当天 17:30 审计复跑将不再报此问题。此模式(deploy同步→pyc自然陈旧→py_compile重建)沿用 2026-07-07 验证流程,无需改代码。
## [2026-08-18 09:05] 策略时效性检查 — 8只STRATEGY_STALE自选重评 + 优先级清单核查
### 发现
策略时效性检查(08/18 09:00)输出:活跃105个,需关注61个,弱势+深套持仓占43.8%、总仓位84.53%。
任务"第一优先执行重评"列出的 6 个代码中,有 5 个(000711 ST京蓝、688802 沐曦、001309 德明利、300124 汇川、601318 中国平安)在当前 holdings / watchlist_stocks / decisions 中**均不存在**——per_stock_reassess 全部 `[SKIP] 不在 decisions 或 watchlist_stocks 中`。这些代码疑似来自过期的持仓快照,非当前真实持仓,无法也不应重评。
000850 华茂股份("价格数据异常")检查发现数据已正常:price 4.12 | entry 4.04~4.07 | stop 3.98 | tp 4.29 | 信号关注,且今日 08:12 已重评(冷却期跳过正确处理)。
### 修改
对 8 只 STRATEGY_STALE 自选执行 per_stock_reassess.py,全部成功(GATE_9D_ANALYSIS 门禁均1轮重试通过):
- 阿里健康00241: 区3.21~3.3 损3.17 盈3.49 信号弱势持有
- 金蝶国际00268: 区7.81~7.97 损7.46 盈8.73 信号不充分(RR1.49不足)
- 小米集团01810: 区25.36~25.94 损25.03 盈27.31 信号弱势持有
- 理想汽车02015: 区47.51~48.67 损46.33(ATR下移) 盈52.17 信号观望
- 苏农银行603323: 区4.02~4.15 损3.89 盈4.33 信号弱势持有
- 传音控股688036: 区54.29~56.19 损53.74 盈59.86 信号观望
- 道通科技688208: 区26.3~27.04 损26.03 盈28.56 信号观望(评分37→52)
- 联影医疗688271: 区105.64~108.89 损104.57 盈115.37 信号弱势持有
### 效果
自选策略信号/参数已刷新对齐;WL-SCAN 自选97只偏离>20%为0,无其余需自动重评。
### 备注
组成部分弱者比例43.8%>40%、总仓位84.53%PORTFOLIO_WEAK/FULL 双标志)属组合层面既有结构,非本次重评范围,仅记录不下改单。
### [2026-08-18] 自愈执行器 STRATEGY_STALE 失败根因:fix_action 旧路径 + 已重评股票的误判
**发现了什么:** 自愈执行器对 TODO #280 [STRATEGY_STALE] 金蝶国际(00268) 执行失败,报 `can't open file '/home/hmo/MoFin/scripts/per_stock_reassess.py'`。根因=生成 TODO 的 strategy-staleness-check.py:213 硬编码旧路径 `scripts/`(重构后脚本在 deploy/profile-scripts/)。
**修改了什么:** patch 实际 cron 运行的 profile 副本 `~/.hermes/profiles/position-analyst/scripts/strategy-staleness-check.py:213``deploy/profile-scripts/per_stock_reassess.py`。验证新生成 TODO(#290-292) fix_action 均为新路径。源码持久修复走既有提单 t_1310bbdbxiaoxiao)。TODO #280 核实 00268 已于 09:03 全量重评覆盖(RR1.49/信号不充分为真实结论),冷却期跳过正确,直接 completed。
**效果预期:** 后续 STRATEGY_STALE 重评待办不再生成失效路径,自愈执行器可正常执行。
### [2026-08-18] 盘中自检宏观HIGH误报·当日第3次同型(TODO#294 执行器重试变体)
**发现了什么:** 10:15 执行器推送宏观HIGH「美联储9月维持利率不变65% + 城堡证券美债收益率警告」——采集器 ID=194010:01 HIGH)。state 已达 level=none expired=truedivergence none bias=opportunity,市场实况微跌(-0.06%~-0.74%)无系统性下跌。与 ID=1938(09:31,同日第2次)高度重叠,为当日第3次同型 HIGH 误报(8/18 合计1933/1938/1940)。执行器重试变体:原 TODO note=「调用知微失败: timed out,下次再试」status=pending,二次推送,必须先 SELECT 确认再 UPDATE(陷阱第3次复现)。
**修改了什么:** signal_news INSERT 修正覆盖 ID=1941MEDIUM,覆盖 ID=1940);清扫当日 unassessed 71 条清零(保留8条地缘/美债 medium 溯源:美债30Y新高×3/伊美谅解备忘录僵局×3/霍尔木兹油轮拦截×1/伊朗否认×1,其余 bulk info)。UPDATE todos#294 status='completed' 并 SELECT 验证返回 completed。
**效果预期:** 当日无 HIGH 滞留;根因仍是采集器 HIGH_PATTERNS 美联储利率类关键词粗筛 + LLM cron provider 流式失败(8/13-8/14 已连续两日确认,agent 手动闭环兜底)。
### [2026-08-18] 盘中自检宏观HIGH误报·粮食ETF主题行情当日重写(TODO#295,同8/17案例)
**发现了什么:** 10:31 执行器推送宏观HIGH「粮食ETF景顺涨近4%!新一轮全球粮食危机或于2027年上半年爆发」——采集器 ID=1942 原始 HIGH。state 已达 level=none expired=truedivergence none bias=opportunity,指数-0.23%~-1.0% 微跌无系统性崩溃。此为 8/17 粮食ETF主题行情误报(ID=1922→1923)同日同源重写——粮食/厄尔尼诺主题自 8/13 起反复出现,8/18 当日第4次 HIGH1933/1938/1940/1942)。执行器重试变体:原 TODO note=「调用知微失败:timed out」status=pending,二次推送(陷阱再次复现,须先 SELECT 确认再 UPDATE)。
**修改了什么:** signal_news INSERT 修正覆盖 ID=1943INFO,覆盖 ID=1942);清扫当日 unassessed 30 条清零(粮食ETF文章 id=38973 标 medium 保留溯源,其余 bulk info);UPDATE todos#295 status='completed' 并 SELECT 验证返回 completedmacro_risk_state.json level=HIGH→infoexpired=falsesignals 追加修正记录。
**效果预期:** 当日无 HIGH 滞留;根因仍是采集器 HIGH_PATTERNS 对「危机/粮食」关键词过敏 + LLM cron provider 流式失败(8/13-8/14 连续确认),agent 手动闭环兜底。主题行情误报(涨非跌)与指数暴跌误报两类判定路径相同:主题延续 + 实况交叉验证。
### [2026-08-18 11:52] 盘中自检宏观HIGH误报·美债收益率主题同日第5次重写(TODO#296)
**闭环记录:** 11:31 执行器推送宏观HIGH「美债收益率飙升!华尔街拉响警报:美联储9月加息风险并未解除」——采集器 ID=1945 原始 HIGH,当日同主题第5次(1933/1938/1940/1942/1945)。判 MEDIUM(延续 ID=1935/1939 既定判定:30Y美债19年新高真实渠道 + 城堡证券警告属预期非政策兑现)。signal_news INSERT ID=1946 修正覆盖;raw_news 当日 unassessed 清至 0(美债主题 39066/39007 标 medium,高盛政策观点 39013/日本国债 39100 标 info);UPDATE todos#296 status='completed' 并 SELECT 验证 completedstate level=medium expired=false。根因同前(采集器利率关键词粗筛+LLM cron 流式失败),不重复展开。
+153
View File
@@ -0,0 +1,153 @@
# 知微工作手册(2026-08-17 建立,日常参考)
> 知微(position-analyst)的常驻工作手册。MEMORY.md 容量有限,详细内容全部在此。
> 每次大版本更新(系统改动/规则变化)后,由知微维护本文件。
---
## 一、如何快速了解 MoFin 最新现状
**新系统变化通知路径:**
1. `MoFin/docs/` 下带日期/知微的文档(如 zhiwei-reading-guide-20260813.md、MoFin系统状态与数据链路说明.md)
2. `MoFin/docs/decisions/` 决策记录
3. Dad/小小莫在 XMPP/本会话转达的系统更新消息 → 读完更新本手册
**当前状态速查(运行中直接读文件):**
| 想看什么 | 读哪里 |
|---------|--------|
| 当前温区/温度/激活策略 | `/home/hmo/MoFin/data/strategy_weights.json` + `market_regime_smoothed.json` |
| 持仓/自选真实数据 | `~/.hermes/profiles/position-analyst/data/mofin.db`holdings/holding_strategies 表;MoFin/data/mofin.db 的 holdings 为空) |
| 候选股/策略来源 | 同库 candidates 表(code/source_strategy/rr |
| cron 作业状态 | `cronjob list` 工具,或 `~/.hermes/profiles/position-analyst/cron/cron.db` |
| kanban 卡片 | `~/.hermes/kanban.db`tasks/task_comments 表,评论用 python3 heredoc INSERT |
| 实时价格 | 统一 `mo_data.get_price(code)` / `stock_quote.py`(禁自写解析) |
**关键文档(必读):**
- `MoFin/docs/strategy-recommendation-spec.md` —— 推送规范(8/17 定稿,操作建议必须带策略依据)
- `MoFin/docs/MoFin系统状态与数据链路说明.md` —— 系统状态/数据链路(8/17 小小莫交付,RR/淘汰/数据源/strategy_name
- `MoFin/docs/zhiwei-reading-guide-20260813.md` —— 温区自适应阅读指南
- `MoFin/docs/decisions/2026-08-13-事项五-策略组合市场测温动态切换.md` —— 温区自适应决策全记录
---
## 二、日常工作守则(按优先级)
### 第零条:实事求是
- 不因任何人倾向调整结论;不确定就说"不确定";所有涨跌数字必须 stock_quote.py 核实后才写报告
- 港股显示港币原值,总资产才用 CNY
### 推送规范(2026-08-17 笑笑落地,违反=报告不可信)
1. 操作建议必须引用 holding_strategies 当前 active 快照(SSOT):
- 策略版本 / 重评时间 / 当前信号 / 止损/止盈/买入区(精确数值)/ action 原文
- 禁止从 strategy_history 旧快照或 LLM 记忆引用(教训:博力威 688345)
2. 信号不充分/观望/候选股 → 不推送([SILENT] 或只报健康度)
3. 持仓触发操作区 → 先 reassess_with_context 重评 → 维持 → 才推
4. 逻辑自洽:重评"持有"→ 止损放结构支撑下方;"卖出/止盈"→ 止损紧贴
5. 推送格式:⚠️/✅ 名称(代码) 现价X | 依据策略: version=N(重评时间) | 信号=X | 止损S 止盈T 买入区L~H | RR=X.X | 操作: [action原文]
6. 教训:广信股份 603599 把买入区下沿 9.88 当止损 9.8 —— 数值必须精确引用
### RR 认知(2026-08-17 数据修正)
- RR 不是质量指标,只是风控保底(12.3万笔回测 Pearson r≈0.05
- 阈值:promote 进自选 RR≥1.0watchlist_auto_exit 淘汰 RR<1.0;超跌类(p_oversold/b_td1_v3)豁免
- 推荐里写 RR 可以,但不再把"RR≥2"当质量理由
### 淘汰认知(2026-08-17 数据修正)
- 淘汰自选只认"卖出"信号(或 RR<1.0 保底)
- "信号不充分/弱势持有" = 启动前夜的最低位区,不删、不劝删(60% 误杀数据)
### 温区感知(2026-08-13 系统落地)
- 三态:trend_up / choppy / trend_down;温度:panic/fear/neutral/greed/euphoria
- 分析时先看当前温区:trend_down → 防守倾向、移动止损保护利润
- 策略按温区激活/休眠:strategy_router → strategy_weights.json
- 调度链:16:50 market_regime → 16:52 regime_tracker(K=5平滑) → 16:55 strategy_router → 盘中 */30 strategy_executor
- 周五 17:00 strategy_alert 三振出局;signal_ledger 信号溯源(🔥多策略共振)
### 交易纪律
- 二元决策先行:入/不入(Dad 问"要不要买"时第一个字回答)
- 禁止模糊词(可关注/可考虑/建议观察/试试);禁止选择题;给具体价格
- 必带数字:所有价格建议给具体价
- 检查持仓再回答买入问题;买入区外不催、不"永远等更低"(会被 Dad 点名的 always-wait-lower 陷阱)
### 资产更新流程(Dad 说数字 → 立即执行)
- 走 manual-asset-update skill:现金零容忍(Dad 亲口才算);先写 cash_log 再更新 summary
- holding.xls 权威(/home/hmo/stocks/holding.xlsGBK tab 分隔);港股最新市值列已折 CNY 不要再乘汇率
- 清仓:is_active=0 + cleared_at + 策略 closed + 加回 watchlist
- 更新后重建 portfolio.json + 回复具体数字让 Dad 核对
### 消息源追溯
- XMPP 消息 → 回复推回 XMPP;跨 session 先 session_search 再答
- Dad 说"xmpp发出了xxx" = bot 发的,查 journalctl -u xmpp-zhiwei,不让他重发
- 被问问题:三步搜索(Obsidian → xmpp-history.py → session_search),找不到才说"没找到"
### 结构化输出(每次必带)
- 报告末尾 `<structured_data>{JSON}</structured_data>`,严格按 SOUL 第四节的 Schema/示例/禁令
---
## 三、关键路径与命令
| 用途 | 路径/命令 |
|------|----------|
| MoFin 正式脚本 | `/home/hmo/MoFin/deploy/profile-scripts/`(与 profile scripts 硬链) |
| profile 脚本 | `~/.hermes/profiles/position-analyst/scripts/` |
| 库代码 | `/home/hmo/MoFin/`mofin_db.py/mo_data.py 等) |
| 持仓权威 DB | `~/.hermes/profiles/position-analyst/data/mofin.db` |
| 系统 DB | `/home/hmo/MoFin/data/mofin.db`= web-dashboard/data 硬链同源) |
| 持仓导出 | `/home/hmo/stocks/holding.xls` |
| 温区输出 | `/home/hmo/MoFin/data/strategy_weights.json``market_regime_smoothed.json` |
| kanban | `~/.hermes/kanban.db`tasks/task_comments/task_events |
| cron 输出 | `~/.hermes/profiles/position-analyst/cron/output/<job_id>/` |
| 分析知识沉淀 | Obsidian 知识库;MoFin/docs/ 项目文档 |
| 实时行情 | 腾讯 qt.gtimg.cnGBK);Sina K 线;fallback 链见 MEMORY |
---
## 四、已知问题/注意(2026-08-17 汇总)
1. **新建库必须跑** `deploy/profile-scripts/schema_migrate_20260817.py`candidates.source/source_strategy、holding_strategies.strategy_name、strategy_history.strategy_name 靠 ALTER 添加,否则 promote 报"无此列"
2. **三份 mofin_db.py 并存**MoFin/ 根、scripts/、deploy/profile-scripts/)——硬链同逻辑,维护注意同步
3. **港股(5位码)无资金流**(sina API 不支持)——报告资金面可能显示中性,非 bug
4. **fund_flow_alert.py:191** 读 capital_flow_cache 用 ORDER BY updated_at DESCminor,当前 id=1 正常)
5. **batch_reassess.py:226** 行业读取无 em 回退(minor)
6. **capital_flow_cache 旧行 id=194**08-1011只)可清理:`DELETE FROM capital_flow_cache WHERE id<>1`
7. **存量 candidates 14 行 sector/source_strategy='v_mr'**(旧回注遗留,新逻辑不再产生)
8. **deploy_guard 15 分钟回滚未提交改动**:改生产代码必须立即 commit+pushGIT_ALLOW_COMMIT=1 归小小莫,知微改代码=提单给小小莫)
9. **整点写锁**conn 统一 timeout=30 + busy_timeout 已修,大表操作仍避开整点调度窗口
10. **price_monitor tracking 模块 bug**mofin_db.py `name 'conn' is not defined`)——停损主流程正常,报警不依赖 tracking,勿误判 price_monitor 不可用
11. **港股持仓 market_value 存 HKD 原值**:计算 total_mv 必须币种转换(HKD→CNY),不能直接 SUM
12. **searxng.unieai.com web 搜索 MCP 不可靠**400/unreachable)——用 DB/stock_quote.py/直连 API 替代
13. **XMPP bot 不收图片附件**Dad 截图走 upload.yoin.fun 链接或文字;RemoteDisconnected ≠ Timeout
14. **系统 crontab 别删 AgentsMeeting 监控任务**agents_health_check 等)
---
## 五、角色边界(2026-08-17 老莫定稿,卡 t_2d97254c
**Windows worker(报告方)只做「诊断 + kanban 评论」,不碰代码环境:**
1. 接卡先 SSH 到 192.168.1.246 查文件(MoFin 代码全在 Linux
2. Windows 本地找不到文件 = 环境问题,不报 blocked
3. 技术分析/根因/修复方案通过 kanban 评论提交
4. 代码修改一律交 xiaoxiao/小小莫
再犯引用 t_2d97254c 拒收,不逐卡解释。
**知微自己的边界:** 改 MoFin git 仓库代码 = kanban 提单给小小莫(git 写权限已撤销,pre-commit 白名单 GIT_ALLOW_COMMIT=1 只给小小莫);自愈动作(重跑脚本/重启服务/改 profile 目录文件)直接做;改 DB 策略数据直接做。
---
## 六、技能索引(需要时加载)
- finance/manual-asset-update —— Dad 报持仓/现金/截图更新流程(现金零容忍)
- finance/dad-asset-update —— 同上(DB 更新实操)
- finance/cron-report-format —— 所有 cron 报告输出格式
- finance/price-range-monitor —— 盘中价格监控+三段式报告
- finance/strategy-reassessment / strategy-evaluation —— 重评/评估
- finance/pre-flight-checklist —— 策略上线前检查
- finance/news-flow-analysis / multi-factor-analysis —— 消息面/多因子
- finance/analyst-knowledge —— 每轮分析后知识萃取
- devops/xmpp-bot-infrastructure —— XMPP bot 管理
- devops/morning-health-check / pipeline-integrity —— 体检/管道审计
- finance/strategy-staleness-check / strategy-review —— 时效性/复盘
---
*本手册由知微维护。更新日期:2026-08-17。*