Commit Graph

26 Commits

Author SHA1 Message Date
知微 6f8644b327 质量门禁自动修复 — CRITICAL失败不再退回, 调技术分析补全
enforce_strategy_quality() 新增自动修复层:
GATE_LOSS_EXISTS → 调 ta.full_analysis() 算弱支撑
GATE_PROFIT_EXISTS → 调 ta.full_analysis() 算阻力位
GATE_ENTRY_RANGE → 从止损/止盈或现价推算
GATE_9D_ANALYSIS → 从 DB 补行业、自动填因子
修复后重检质量, 通过则正常写入, 不进 review_needed

Dad要求: 不是挡, 是打回重评直到有正确结果
2026-07-02 13:57:50 +08:00
知微 c36479f481 第4条CRITICAL红线:GATE_9D_ANALYSIS
质量门禁新增9维交叉验证检查:
- sector_context不空且非neutral
- signal_factors≥1个因子 或 tech_snapshot含技术位
不通过→标记review_needed不写入DB
防止模塑科技式空壳策略(无止盈/无行业上下文/无分析过程)
2026-07-02 13:50:53 +08:00
知微 7c0e85af28 硬性策略质量门禁 validate_strategy()
新增 STRATEGY_QUALITY_GATES 检查清单(9条红线):
CRITICAL: 止损/止盈存在+>0, 买入区下沿<上沿
HIGH: 止损≤买入区, 买入推荐含RR≥1.5, 港股标currency=HKD
MEDIUM: signal短词, tech_snapshot含技术位

enforce_strategy_quality() 插在写入链的两处:
1. reassess_with_context() return前 → 单只重评必过
2. regenerate_all() for d in decisions: 写DB前 → 批量重评必过

不过的:status=review_needed, signal降级→信号不充分
不会写进DB/JSON,除非修复了CRITICAL问题
2026-07-02 13:46:53 +08:00
知微 29d0eb96cc feat: 筹码因子情景权重+共振检测修复
- detect_scenario()判定市况→动态调整筹码因子权重
  震荡市(0.9) > 轮动市(0.6) > 上涨(0.4) > 急跌(0.2)
- 共振检测: 筹码支撑 vs 枢轴弱支撑(同为最近支撑位)
- 权重低时筹码即使一致也标记不可靠
- 止损/止盈仍以枢轴为主,筹码提供中线参考
2026-07-02 01:05:29 +08:00
知微 69c6c5633a feat: 筹码S/R集成到reassess_strategy
- calc_chip_sr(): 从筹码分布计算支撑/阻力
- reassess_strategy新增筹码S/R输出+共振检测
- 止损用枢轴(短期),目标参考筹码(中线)
- 两者差距<3%时标记共振
2026-07-02 00:57:54 +08:00
知微 6305204c7a feat: mo_data.py unified read layer (DB-first, JSON fallback) + cash_log table + batch JSON→DB migration (16 files) 2026-07-01 23:45:30 +08:00
知微 8ed755bff9 feat: strategy_lifecycle + stale_detector + server — DB-first price reads, Tencent API as fallback only 2026-07-01 22:48:48 +08:00
知微 1c2344d217 feat: strategy_lifecycle regenerate_all now writes to DB (holdings+strategies+watchlist) 2026-06-30 23:47:59 +08:00
hmo ab23dfd234 feat: DSA full integration — mo_bridge v2 + strategy_lifecycle injection
mo_bridge.py (rewrite):
- get_stock_news(): DSA SearchService 7 engines → MoFin analysis context
- get_market_review(): DSA run_market_review() with 24h cache
- get_stock_analysis(): DSA AgentExecutor.run() with 15 strategies
- enrich_analysis_context(): one-call context injection

strategy_lifecycle.py:
- reassess_with_context() now injects DSA market + news context
- Auto-detects HK vs A-share region for market review
- Graceful fallback if DSA unavailable
2026-06-30 01:17:23 +08:00
hmo 6abc2e45b0 refactor: phase 0-2 MoFin architecture reform — single source of truth
Phase 0 (止血):
- mo_models.py: unified calc_total_assets(), is_hk_stock(), get_hk_rate() — single source of truth
- Fixed 3 files missing frozen_cash: holdings_reconciliation, server, import_holding_xls
- Fixed stale_push_wlin: unified is_hk_stock detection, removed hardcoded 0.866
- Fixed price_monitor: consolidated 2 duplicate total_assets blocks into mo_models calls
- Fixed stock_scorer: replaced broken len()<=5 is_hk_stock heuristic
- Fixed strategy_lifecycle: replaced non-existent currency_utils import with mo_models

Phase 1 (DSA adapter):
- mo_provider.py: wraps DSA DataFetcherManager (16 fetchers, auto-fallback)
  - TDX relay as primary, DSA as backup for realtime/kline/news/fundamentals

Phase 2 (Integration):
- mo_bridge.py: injects DSA market review + news context into MoFin analysis prompts
- Graceful degradation if DSA not installed

Infrastructure:
- mo_config.py: centralized Config singleton replacing scattered hardcoded paths
- All 11 changed files pass python compile check

Impact: total_assets now computed in ONE place (mo_models).
        is_hk_stock now ONE implementation (no more false negatives).
        HK rate now ONE source (hk_rate API → cache → 0.87 fallback).
        No more hardcoded 0.866/0.8664/0.8700 divergence.
2026-06-29 23:25:54 +08:00
知微 a8d5418726 price_monitor 汇总值重算 + total_assets修正
问题:price_monitor每2分钟更新个股价,但不更新
total_market_value/total_assets/cash/position_pct,
这些字段停留在import_holding_xls快照值,已严重过期。
导致报告显示错误的总资产和仓位。

修复:
- 每次更新个股价后,实时重算 total_market_value = sum(shares*price)
- cash 从 stale_report(Dad截图确认的可用现金)同步
- total_assets = market_value + available_cash + freeze
- 避免价格无变化时不触发更新(timeout fallback保留)
2026-06-29 20:20:24 +08:00
知微 6a97d93018 现金更正 + 法拉电子清仓记录
截图确认:
- 可用资金 92,664.20(含天添利)
- 冻结 39,481.40
- 总现金 132,145.60
- 总资产 = 持仓市值1,107,670 + 现金132,145.60 = 1,239,815.60

法拉电子 189.20卖出100股已记录
2026-06-29 12:40:50 +08:00
知微 4477b06f12 Watchlist↔Holdings双向自动迁移
regenerate_all() 每次全量重评时自动:
① 自选股变成持仓(>0股) → 从watchlist移除
② 持仓清仓(股数归零) → 自动加回watchlist(有买入区才加)
Dad要求的双向自动同步,避免手动清理遗忘
2026-06-28 00:15:37 +08:00
知微 40d74f89ff feat: xmpp bot最终修复版+skill文档同步
xmpp_agent_core.py 当前工作配置记录:
1. send_presence() — presence = available, 否则私聊进离线
2. 入站消息队列(_inbound_queue) — 崩了不丢, 重试3次
3. 出站队列(_outbound_queue) — 崩了自动重启
4. XMPP心跳检测(xep_0199 ping) — run_filters死后15s内重连
5. 私聊回复双通道: send_message(指定resource) + send_stanza(裸JID)
6. AGENT_MENTION动态解析(群聊@知微识别)
7. session_id保持xmpp-zhiwei-v2不变(不因重启换session)
8. 断线重连2秒延迟(防资源冲突)
2026-06-26 23:17:21 +08:00
知微 b63475402e feat: 港股ATR波动率止损校验
- 新增 is_hk_stock(code): 港股判断(5位代码)
- 新增 calc_atr(code): 腾讯API K线→ATR(14)计算
- 港股止损增加ATR校验:止损距现价不得小于1×ATR
  技术位仍为主依据,ATR仅作为港股高波动下的间距底线
  A股不受影响保持原有逻辑
- 不违背"技术位优先,不机械乘系数"原则
2026-06-25 21:11:07 +08:00
知微 b053103377 feat: 策略复盘闭环 Phase1
- 新增 scripts/strategy_review.py: 遍历所有active策略
  - 腾讯API实时价对比止损/止盈/入场点
  - 分类: correct/wrong/partial/pending
  - 失败模式归因: 止损过紧/入场过早/止盈过远等
  - 写入 accuracy_stats 表(首条真实数据)
- 新增 docs/strategy-review-loop.md: 完整闭环设计文档
- 含失败模式→修复方向映射表

Phase1 结果: 38条策略, 94.7%准确率(19条待定), 1条止损过紧
2026-06-25 19:58:00 +08:00
知微 39ff4d95f7 feat: macro_context/market数据全部DB优先,JSON回退
- 建 macro_context_log 表,macro_context_collector.py 双写
- strategy_lifecycle.py load_macro_context() 优先DB
- strategy_tree.py detect_scenario() 优先DB
- stale_push_wlin.py load_macro_line() 优先DB
- xiaoguo_signal_consumer.py 大盘判断优先DB
- stock_profile.py load_macro() 优先DB
- system_audit.py 管道审计改查DB market_snapshots
- JSON保留作fallback,确保过渡期不中断
2026-06-24 22:34:08 +08:00
知微 4aa884ed31 TODO一口气4/6完成
T001: enrich_timing_signal RR参数降级
T002: price_monitor已有XMPP推送(514-525行)
T003: 自选扫描加15:00轮次
T005: 策略数据口径理解完成(非bug)
T006: trigger同步(已完成)
T004: 截图叙事清理待设计

system_health_check.py CRON_JOBS路径修正→正确的profile路径
2026-06-24 17:50:49 +08:00
知微 d4ad5a57ef trigger字段永久同步(strategy_lifecycle)+ 知微TODO系统
T006: regenerate_all() 新增 trigger 填充(stop_loss/entry_zone/take_profit_zone),
      price_monitor 依赖此字段检测止损区间/买入区/止盈区触发。
      历史数据已通过 fix_trigger.py 一次性补全39只。

新增 devops/self-todo skill + cronjob 自我驱动-TODO自动执行。
每天8轮检查pending任务,主动完成并报告进度。
TODO数据:~/.hermes/profiles/position-analyst/todo.json
2026-06-24 17:24:45 +08:00
知微 8f830b8de2 信义光能问题修复:两层级过滤+趋势检查
Bug 1 — strategy_lifecycle.py: enrich_timing_signal 用 factors[-1] 当信号
  信义光能: base_signal=neutral, factors=[大盘中性,行业偏弱,高估值]
  旧逻辑: factors[-1]='行业偏弱'→成为timing_signal→无效信号
  新逻辑: 先找有效操作方向(买入/加仓/观望/持有/关注/信号不充分),
          找不到→信号不充分。不再从上下文因子里拼凑信号。

Bug 2 — stale_push_wlin.py: 信号过滤太松
  旧逻辑: 只跳过特定关键词(等企稳/关注/信号不充分/持有)
  新逻辑: 信号必须含"买入"或"加仓"才进推荐,其他一律跳过

Check 3 — 趋势检查(新增)
  fetch_trend_data(): 取实时行情+30日K线计算MA排列
  空头排列/弱势震荡→不推荐
  药明康德通过(多头排列+买入信号)  信义光能不通过(空头+行业偏弱)
2026-06-24 14:39:50 +08:00
知微 b145dd47c3 现金更正:20230元(Dad截图确认) + strategy_lifecycle写回保护
截图显示可用(含天添利)=20,230.10元。之前80,476是错误数据。
strategy_lifecycle.regenerate_all 写portfolio.json时改为 merge现有字段,
不再清空 cash/total_assets/total_pl 等非holdings字段。
这样下次regenerate_all运行时不会丢数据。

现状:
  现金 20,230元 | 市值 930,200元 | 总资产 950,430元
  仓位 97.9% | 累计盈亏 -164,810元
  25只持仓(14A/11H)
2026-06-24 11:33:51 +08:00
知微 df43244e9c timing_signal 从长句改为短词:所有信号2-4字,因子存到signal_factors
改动:
1. 硬编码信号值缩短(L729-769):
   '量价齐升,可买入'→'买入'  '放量下跌,等企稳再入'→'观望'
   '接近支撑位,关注'→'关注'  其他一致精简
2. enrich_timing_signal不再拼合因子到signal,
   信号保持干净(仅base_signal→'买入'/'观望'),
   因子列表存入 signal_factors 字段
3. _is_buy_signal 关键词同步为 ['买入','持有','加仓','关注']
4. 分类约束 buy_signals 同步为 ['买入','加仓','可追']
5. stale_push_wlin.py NON_BUY_SIGNALS/BUY_KEYWORDS 同步

影响:所有消费timing_signal的地方都使用子串匹配(in),
      短信号兼容。实际上修复了一个旧bug——非买入信号
      如'观望'现在可以被NON_BUY_SIGNALS正确过滤
2026-06-24 09:46:15 +08:00
知微 e33a236bc1 自成长系统:四层循环架构文档 + 三个代码改动 + 所有日间修复
内容:
- docs/SELF_GROWTH_SYSTEM.md (NEW) — 完整的 Sense→Respond→Adapt→Improve 架构文档
- docs/SYSTEM_ARCHITECTURE.md (UPDATED) — 总索引指向新文档,cron数从14更新为31
- hk_rate.py (NEW) — HKD汇率模块,缓存+上次有效汇率自动恢复
- price_monitor.py (MODIFIED) — 价格监控注入分支评估+情景切换检测
- strategy_lifecycle.py (MODIFIED) — 策略生命周期评估上下文
- strategy_tree.py (NEW) — 情景化多分支决策引擎

日间修复(2026-06-23):
- stale_push_wlin: cash硬编码146837→读portfolio.json
- stale_push_wlin: lot_cost汇率0.93→hkd_to_cny动态
- stale_push_wlin: HK每手默认500股→Tencent API实时f[60]
- stale_push_wlin: 重评异步→串行(先重评再出报告)
- hk_rate: FALLBACK=0.87硬编码→缓存上次有效汇率
- 新增 cron: 分支扫描每30分, 分支剪枝周六, 硬编码审计17:25
- hardcode_scanner.py 每日扫描所有.py中大额数字
2026-06-24 00:04:26 +08:00
知微 ce687a4216 fix: xiaoguo_scanner 榜单更新+看空榜持仓预警
- 修bug:stock_rank_cxd_ths 实为'创新低',改为 stock_rank_lxsz_ths '连续上涨'
- 新增6个看多榜(险资举牌)+ 5个看空榜(创新低/持续缩量/量价齐跌/连续下跌/向下突破)
- 看空榜自动比对持仓,命中写入 xiaoguo_risk 信号
- 东财热榜静默降级(502不可修)
- 看空榜不跳过已扫描,每轮全检
2026-06-22 19:13:55 +08:00
hmo 25f8c6ec67 refactor: 消费者切 SQLite 优先读取
切换策略: SQLite 优先 → 失败回退 JSON

price_events (100%覆盖):
- strategy_feedback.py: run() 优先 query_price_events()
- system_health_check.py: 优先 query_price_events() + query_price_events_by_date()

stock_sector_map (100%覆盖):
- strategy_lifecycle.py: load_stock_sector_map() 优先 stock_sectors 表

market.json (85%覆盖):
- strategy_lifecycle.py: load_market_context() 优先 query_latest_market()
- market_insight.py: generate() 优先 query_latest_market()

portfolio.json + watchlist.json (70%覆盖):
- strategy_lifecycle.py: regenerate_all() 优先 query_holdings() + query_watchlist()
- server.py: /api/portfolio, /api/watchlist, /api/overview, /api/market 优先 SQLite

所有改动保留 JSON 回退路径,SQLite 不可用时自动降级
2026-06-20 17:50:15 +08:00
知微 (MoFin) aa0f740381 MoFin 初始提交
完整数据采集+分析管道:
- market_watch.py:90行业板块采集(同花顺/东方财富)
- 市场精选推荐 cron:全市场分析+候选池+星级推荐
- price_monitor.py:持仓/自选高频价格监控
- refresh_mtf_cache.py:多周期K线缓存
- 策略评估/知识萃取管道

文档:docs/ 含完整需求+架构设计
注意:尚未配置 git remote,笑笑接手后自行配置
2026-06-20 12:04:21 +08:00