237 lines
7.8 KiB
Markdown
237 lines
7.8 KiB
Markdown
# 全市场潜力股挖掘系统
|
||
|
||
## 概述
|
||
|
||
全自动管道:盘中每15分钟采集全市场数据 → 检测异动 → 搜新闻分析 → 我判断 → 出推荐。
|
||
|
||
所有数据存入 `mofin.db`(SQLite),统一供 Dashboard 市场模块展示。
|
||
|
||
---
|
||
|
||
## 一、时序总览
|
||
|
||
```
|
||
交易日 9:00-15:00,每15分钟一轮
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
:43 → 数据采集(no_agent,~40秒)
|
||
:45 → 趋势检测(no_agent,~5秒)
|
||
:48 → 小果情报处理(no_agent,~30秒)
|
||
↓
|
||
:00/:15/:30/:45 → 盯盘 cron(我,LLM)
|
||
读 signal_news → 判断 → 更新候选池 → 推老爸
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
16:00 → 市场精选推荐(我,收盘汇总)
|
||
```
|
||
|
||
---
|
||
|
||
## 二、数据采集(:43,no_agent)
|
||
|
||
### market_watch.py
|
||
|
||
拉同花顺90个行业板块,写入 `mofin.db`:
|
||
|
||
**market_snapshots**(每次一条):
|
||
| 字段 | 说明 |
|
||
|------|------|
|
||
| timestamp | 采集时间 |
|
||
| source | ths / eastmoney |
|
||
| up_ratio | 上涨板块占比(%) |
|
||
| mood | bullish / neutral / bearish |
|
||
|
||
**sector_snapshots**(每条一个板块,关联 snapshot_id):
|
||
| 字段 | 说明 |
|
||
|------|------|
|
||
| name | 板块名,如"半导体" |
|
||
| change_pct | 涨跌幅(%) |
|
||
| up_count / down_count | 上涨/下跌家数 |
|
||
| net_inflow | 资金净流入(亿) |
|
||
| lead_stock | 领涨股名 |
|
||
| lead_stock_change | 领涨股涨跌幅 |
|
||
|
||
---
|
||
|
||
## 三、趋势检测(:45,no_agent)
|
||
|
||
### trend_detector.py
|
||
|
||
读取最新 snapshot,检测17种信号,写入 `sector_signals` 表。
|
||
|
||
按5类维度划分:
|
||
|
||
**A. 资金流信号**
|
||
|
||
| 信号 | 逻辑 | 严重性 |
|
||
|------|------|--------|
|
||
| A1 资金异动 | 单次净流入/出 > 近10次均值 + 3σ | high(>5σ) / medium(3-5σ) |
|
||
| A2 持续资金流入 | 连续≥3次净流入且逐次递增 | low |
|
||
| A3 持续资金流出 | 连续≥3次净流出且逐次扩大 | low |
|
||
| A4 资金转向 | 净流入从正转负或负转正 | medium |
|
||
|
||
**B. 涨跌结构信号**
|
||
|
||
| 信号 | 逻辑 | 严重性 |
|
||
|------|------|--------|
|
||
| B1 涨跌比反转 | 上涨占比变化 > 30个百分点 | medium |
|
||
| B2 持续走强 | 连续≥3次涨幅排全市场前10 | low |
|
||
| B3 持续走弱 | 连续≥3次跌幅排全市场前10 | low |
|
||
| B4 普涨背离 | 涨 > 3% 但上涨家数 < 50% | medium |
|
||
| B5 极端分化 | 涨跌家数比 > 5:1 或 < 1:5 | medium |
|
||
|
||
**C. 领涨/成分股信号**
|
||
|
||
| 信号 | 逻辑 | 严重性 |
|
||
|------|------|--------|
|
||
| C1 领涨股更替 | 领涨股与前2次采集不同 | medium |
|
||
| C2 领涨股极端涨幅 | 领涨股单次涨跌幅 > 15% | medium |
|
||
|
||
**D. 趋势拐点信号**
|
||
|
||
| 信号 | 逻辑 | 严重性 |
|
||
|------|------|--------|
|
||
| D1 趋势反转(多→空) | 连续≥3次净流入后突然转流出 | high |
|
||
| D2 趋势反转(空→多) | 连续≥3次净流出后突然转入流 | high |
|
||
| D3 量价背离(涨) | 涨 > 2% 且资金净流出 > 均值2倍 | medium |
|
||
| D4 量价背离(跌) | 跌 > 2% 且资金净流入 > 均值2倍 | medium |
|
||
|
||
**E. 关联信号**
|
||
|
||
| 信号 | 逻辑 | 严重性 |
|
||
|------|------|--------|
|
||
| E1 板块轮动 | 前次TOP3全部跌出前10 | medium |
|
||
| E2 产业链联动 | 同产业链多板块同时触发A/B/D类 | low |
|
||
| E3 持仓关联 | 持仓股所在板块触发任何high信号 | high |
|
||
|
||
写入 `sector_signals` 时附带:
|
||
- related_stocks — 该板块的领涨股 + 成分股(从 stock_sectors 查)
|
||
- holdings_in_sector — 该板块中的持仓股(查 holdings 表)
|
||
- watchlist_in_sector — 该板块中的自选股(查 watchlist_stocks 表)
|
||
|
||
---
|
||
|
||
## 四、小果情报处理(:48,no_agent)
|
||
|
||
### xiaoguo_news_processor.py
|
||
|
||
读取未处理 signal(每次1条),做3件事:
|
||
|
||
**第1步:搜新闻**
|
||
用 akshare 搜 signal 涉及的每只股票的最新新闻。
|
||
搜索范围:领涨股 + 成分股 + 持仓股 + 自选股
|
||
去重后取前5篇,含标题 + 正文全文。
|
||
|
||
**第2步:小果 LLM 分析**
|
||
模型:Qwen3.6-27B-MTPLX-Optimized-Speed(192.168.1.122:18003)
|
||
每次送5篇,逐篇给完整摘要 + 情感(positive/negative/neutral)。
|
||
单次调用约 10-15 秒,直接输出 JSON。
|
||
|
||
**第3步:写入 signal_news**
|
||
|
||
| 字段 | 说明 |
|
||
|------|------|
|
||
| signal_id | 关联 sector_signals |
|
||
| overall_sentiment | 总体情感(利好/利空/中性) |
|
||
| summary | 汇总摘要 |
|
||
| key_articles | JSON [{title, sentiment, summary}] |
|
||
| searched_stocks | 本次搜了哪些股票 |
|
||
|
||
**节流规则:** 同一板块同一signal类型24小时内已有 → 跳过。无未处理 signals → 本轮跳过。
|
||
|
||
---
|
||
|
||
## 五、知微判断与决策(:00/:15/:30/:45,LLM cron)
|
||
|
||
盯盘 cron prompt 中包含信号处理逻辑。
|
||
|
||
### 5.1 处理流程
|
||
|
||
```
|
||
进入盯盘 cron 后:
|
||
────────────────────────────────────────
|
||
1. 读最近15分钟的 signal_news(高严重性优先)
|
||
│
|
||
2. 逐条判断:
|
||
│
|
||
├── severity=high 且 sentiment=利空
|
||
│ → 检查持仓中是否有该板块个股
|
||
│ → 有 → 推老爸(风险预警)
|
||
│ → 无 → 记入待观察
|
||
│
|
||
├── severity=high 且 sentiment=利好 且置信
|
||
│ → 查腾讯API实时价
|
||
│ → 判断入场条件是否成熟(现价在合理区间)
|
||
│ ├── 可操作 → 给星级+策略 → 插入candidates
|
||
│ │ → 同时加入 watchlist_stocks 表(自动入自选)
|
||
│ │ → 推老爸(今日推荐)
|
||
│ └── 需等待 → 标记待观察,记录入场条件
|
||
│
|
||
└── severity=medium/low
|
||
→ 累积,收盘汇总
|
||
│
|
||
3. 照常做持仓/自选盯盘输出
|
||
如果本轮有紧急推荐,单独推一条消息;盯盘报告里不加额外篇幅
|
||
```
|
||
|
||
### 5.2 推送给老爸的规则
|
||
|
||
只在以下情况才推:
|
||
|
||
| 情况 | 推送内容 | 渠道 |
|
||
|------|---------|------|
|
||
| 持仓股板块出现利空 | 风险预警+建议操作 | 立即推 |
|
||
| 发现高置信潜力股,现价在买入区内 | 推荐+星级+入场策略 | 立即推 |
|
||
| 常规盯盘报告 | 三段式600字以内 | 定时走cron |
|
||
|
||
### 5.3 自动加入自选
|
||
|
||
当确认一只新的潜力股(不在持仓且不在自选)时:
|
||
- 写入 candidates 表
|
||
- 同时 INSERT INTO watchlist_stocks
|
||
- 这样 Dashboard 自选模块和策略引擎都能看到
|
||
|
||
---
|
||
|
||
## 六、收盘汇总(16:00,LLM cron)
|
||
|
||
### 市场精选推荐-每日
|
||
|
||
读当日所有 signals + news + candidates,做:
|
||
1. 综合当日信号 → 市场判断
|
||
2. 从 candidates 中选出未推荐过且评分 >= 7 的
|
||
3. 给最终星级(5.0/4.5/4.0/3.5/3.0)
|
||
4. 输出三段式报告
|
||
|
||
报告格式同前。
|
||
|
||
---
|
||
|
||
## 七、数据库表
|
||
|
||
### 市场信号相关表
|
||
|
||
| 表 | 用途 | 关键字段 |
|
||
|----|------|---------|
|
||
| market_snapshots | 每次采集元信息 | id, timestamp, up_ratio, mood |
|
||
| sector_snapshots | 板块快照 | snapshot_id, name, change_pct, net_inflow |
|
||
| sector_signals | 检测到的异常信号 | type, sector, severity, related_stocks, processed |
|
||
| signal_news | 小果情报分析 | signal_id, overall_sentiment, summary, key_articles |
|
||
| candidates | 候选池 | code, zhiwei_star, promoted, dropped |
|
||
| candidate_score_history | 评分变更历史 | code, score, source, created_at |
|
||
|
||
### 自选自动写入
|
||
|
||
新确认的潜力股自动写入 `watchlist_stocks` 表,Dashboard 自选模块即时可见。
|
||
|
||
---
|
||
|
||
## 八、Dashboard 市场模块展示
|
||
|
||
mofin.db 中的所有数据直接在 Dashboard 上展示:
|
||
|
||
| Dashboard 页面 | 数据源 | 刷新频率 |
|
||
|---------------|--------|---------|
|
||
| 行业热点 | market_snapshots + sector_snapshots 最新一次 | 每15分 |
|
||
| 知微洞察 | signal_news(当日汇总) | 每15分 |
|
||
| 潜力股挖掘 | candidates(zhiwei_star 非空) | 实时 |
|
||
| 自选股 | watchlist_stocks | 实时 |
|