Files
stock_cursor_v0/架构总结.md
2026-06-14 11:54:45 +08:00

11 KiB
Raw Permalink Blame History

Blackdata StockTerminal — 架构总结

版本当前实现态2026-06
定位:个人/小团队 A 股分析·复盘·智能辅助系统


一、整体分层

┌─────────────────────────────────────────────────────────────┐
│                      展示层(前端)                          │
│  HTML + ECharts 5 + 原生 JS                                 │
│  prototype/index.html · style.css · app.js                  │
└────────────────────────┬────────────────────────────────────┘
                         │ HTTP / REST
┌────────────────────────▼────────────────────────────────────┐
│                   服务层(后端 FastAPI                      │
│  main.py  —— 50+ API 端点,静态文件托管                      │
│                                                              │
│  数据服务     akshare_service.py   (行情·情绪·资讯·实时报价)  │
│  AI 分析      ai.py                (证据链·置信度·LLM/规则)   │
│  信号统计     signals.py           (胜率回测·预测留痕·核验)   │
│  RAG 检索     rag.py               (资讯检索·情绪标注)        │
│  复盘日报     report.py            (结构化日报·推送)          │
│  组合计算     portfolio.py         (持仓·P&L·资金曲线)        │
│  回测引擎     backtest.py          (MA交叉·净值曲线)          │
│  预警引擎     alerts.py            (实时报价判断·触发事件)     │
│  推送通知     notifier.py          (SMTP·Server酱·企微·PP)   │
│  大模型客户端 llm.py               (OpenAI 兼容接口)          │
│  定时调度     scheduler.py         (APScheduler 5 个任务)     │
│  ETL 入库     ingest.py            (AkShare→PostgreSQL)      │
│  CLI 工具     cli.py               (init/ingest/ingest_all)  │
│  配置         config.py + .env     (DB·LLM·推送密钥)         │
└────────────────────────┬────────────────────────────────────┘
                         │ SQLAlchemy ORM / psycopg2
┌────────────────────────▼────────────────────────────────────┐
│                   数据层PostgreSQL                        │
│  13 张业务表,见下方数据模型                                  │
└─────────────────────────────────────────────────────────────┘

二、后端模块职责

文件 职责 关键依赖
main.py FastAPI 入口50+ REST 端点,静态托管 所有模块
config.py 环境变量读取,支持 .env 文件 python-dotenv
db.py 引擎/Session自动建库建表 SQLAlchemy, psycopg2
models.py 13 个 ORM 表(见下节) SQLAlchemy
akshare_service.py AkShare 数据抓取,带 TTL 缓存和 mock 降级 akshare, cachetools
ingest.py ETLAkShare → PostgreSQL 增量 upsert akshare, models
scheduler.py APScheduler 后台任务5 个定时任务) apscheduler
backtest.py MA 交叉策略回测,读 DB 日线,输出净值曲线 sqlalchemy, pandas
ai.py AI 分析证据链构造、置信度计算、LLM 调用/规则降级 llm, signals, rag
signals.py 6 类信号历史胜率回测;预测留痕 + 到期核验 sqlalchemy, pandas, numpy
rag.py 资讯检索 + 利好/利空情绪标注,作为 LLM 上下文 akshare_service
report.py 七段式 AI 复盘日报生成、落库、推送精简版 ai, notifier
portfolio.py 持仓计算移动加权均价、P&L 归因、逐日资金曲线 sqlalchemy
alerts.py 实时报价轮询 → 规则命中 → 写事件 + 推送 akshare_service, notifier
notifier.py 四渠道推送SMTP 邮件、Server酱、企业微信 Webhook、PushPlus requests, smtplib
llm.py OpenAI 兼容客户端DeepSeek/通义/Kimi 均适用) requests
cli.py 命令行工具:init / ingest / ingest_all ingest, db

三、数据模型PostgreSQL

表名 说明 主键 / 唯一约束
securities 证券基础信息(代码·名称·市场) code
quotes_daily 个股日线OHLCV前复权 (code, date)
index_daily 指数日线(上证/深证/沪深300 (code, date)
sector_daily 板块每日快照(涨跌·成交额·龙头) (date, name)
fund_flow_daily 行业主力资金流每日快照 (date, name)
sentiment_daily 全市场情绪(涨跌家数/涨跌停) date
dragon_tiger 龙虎榜明细(代码·席位·净买额) (date, code, reason)
stock_metrics 个股最新因子快照MA/RSI/MACD/量比/分位/连涨 等 15 个因子) code
signal_stats 6 类技术信号历史胜率回测样本·N日上涨概率·平均收益 (signal, horizon)
predictions AI 诊断留痕方向·置信度·N日后核验·命中与否 (code, date, kind)
daily_reports AI 复盘日报markdown 正文·来源·是否已推送) date
trades 交易记录(买卖·价格·数量·手续费·理由·情绪标签) id
alert_rules 预警规则(价格上穿/下穿/涨跌幅条件·状态) id
alert_events 预警触发事件(站内通知·已读状态) id
job_runs 定时任务执行日志 id

四、定时任务APScheduler周一至周五

任务 ID 触发时间 功能
daily_ingest 15:35收盘后可配 抓取当日板块/资金流/情绪/龙虎榜/自选股日线入库
alert_check 每 60 秒 实时报价核查所有 active 预警规则,触发则写事件并推送
daily_report 15:45入库+10分 生成 AI 七段式复盘日报并推送微信/邮件
verify_pred 15:50 核验到期 AI 预测,计算命中率
signal_stats 每周六 09:00 对全市场样本股回测 6 类信号历史胜率(可手动触发)

五、AI 分析层设计(可回溯)

用户请求 /api/ai/diagnose
        │
        ▼
 _stock_context()           从 stock_metrics + DailyQuote 取最新因子
        │
        ├─ signals.get_stats()    读 signal_stats 表,取各信号历史胜率
        │
        ├─ rag.stock_context()    拉近期资讯 → 情绪标注(利好/利空/中性)
        │
        ▼
 _build_evidence()          生成 6 维证据链(趋势/技术/动量/资金/位置/消息)
   每条附:事实描述 · 方向(bull/bear/neutral) · 历史胜率 · 样本数
        │
        ▼
 _confidence_direction()    加权多空净值 → 置信度(%) + 预测方向(up/down/flat)
        │
        ├─ signals.record_prediction()   写入 predictions 表留痕
        │
        ├─ llm.ask()  (有 key)    将证据链+胜率+RAG资讯构造 prompt → 大模型输出
        │  或
        └─ 规则文本降级           格式化证据链为可读文本

实测准确率闭环:

预测留痕(open) → N 个交易日后 verify_predictions() 拉 DailyQuote 核验
→ 填写 actual_ret + hit(True/False) → status=closed
→ /api/ai/accuracy 按方向汇总命中率

六、推送通知渠道

渠道 触发条件 配置项(.env
SMTP 邮件 预警触发 / 复盘日报 / 测试 SMTP_HOST/PORT/USER/PASSWORD/TO
Server酱微信 同上 SERVERCHAN_KEY
企业微信群机器人 同上 WECOM_WEBHOOK
PushPlus微信 同上 PUSHPLUS_TOKEN

任意渠道配置即自动启用,互不依赖。


七、前端菜单结构app.js MENU

大盘行情
  ├─ 市场总览       行情/三大指数/情绪温度计/资金流向
  ├─ 大盘云图       行业/板块涨跌热力图ECharts treemap
  ├─ 热股榜         实时热股+板块
  └─ 龙虎榜         当日龙虎榜净买额排名

自选股
  ├─ 自选列表       持仓快照 + K线
  ├─ 全市场选股     8 个内置策略 + SQL 直查 stock_metrics
  └─ 条件选股       客户端多因子过滤

复盘中心
  ├─ 每日复盘       板块/情绪/资金流统计
  ├─ AI日报         七段式 markdown 日报,历史翻阅,一键推送
  └─ 个股复盘       K线回放 + MA交叉买卖点标注

策略与中台
  ├─ 策略回测       MA交叉净值曲线 + 最大回撤
  └─ 数据中台       入库状态 / 手动触发 / 任务日志

AI 分析
  ├─ 今日策略       大模型/规则 生成当日操作方向
  ├─ 个股诊断       6维证据链 + 历史胜率 + 置信度 + RAG资讯
  ├─ AI复盘点评     当日大模型复盘摘要
  └─ AI准确率       信号历史胜率表 + 实测命中率 + 近期核验记录

组合交易
  ├─ 组合持仓       实时市值/浮亏/胜率
  ├─ 资金曲线       逐日净值 vs 沪深300基准ECharts折线
  ├─ 交易日志       录入买卖 / 理由 / 情绪标签
  └─ 盈亏归因       按个股/理由/情绪三维归因

智能预警
  ├─ 预警规则       创建/删除/重激活规则,推送渠道状态检测
  └─ 触发记录       预警事件列表,标记已读,🔔铃铛角标

资讯中心
  ├─ 要闻快讯       全球财经资讯 + 情绪标注 + AI摘要
  └─ 自选相关       自选股关联资讯聚合

八、技术栈

技术选型
前端 纯 HTML + CSS + 原生 JSECharts 5CDN
后端 Python 3.12 + FastAPI 0.115 + uvicorn
数据库 PostgreSQLpsycopg2-binary + SQLAlchemy 2.0
数据源 AkShare新浪/同花顺/乐估备选源Sina hq 实时报价
调度 APScheduler 3.x BackgroundScheduler
AI OpenAI 兼容 REST默认 DeepSeek规则降级无缝切换
缓存 cachetools TTL内存无 Redis 依赖
推送 SMTP(SSL) + Server酱 + 企业微信 Webhook + PushPlus
部署 WSL2 / Linuxnohup python main.py,可 Docker 化

九、待完善方向

优先级 模块 建议
回测引擎 手续费/滑点建模,参数寻优,月度收益热力图
数据稳定性 东财源封锁问题,增加 Tushare 备用源,分钟线入库
RAG 升级 Embedding + 向量库Chroma/Qdrant支持语义检索财报
多组合 目前单一组合,扩展为模拟盘/真实盘多组合管理
盘中异动雷达 快速拉升/放量突破/涨停打开实时监测
用户系统 登录/鉴权,多用户自选股独立管理
部署文档 Docker ComposeFastAPI + PostgreSQLNginx 反代