Files
stock_cursor_v0/README.md
2026-06-15 01:26:39 +08:00

294 lines
9.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Blackdata StockTerminal
个人 / 小团队 A 股分析·复盘·智能辅助系统。
后端基于 FastAPI提供行情、回测、AI 诊断与定时任务;前端为纯 HTML + ECharts 原型,由 FastAPI 统一托管,浏览器直接访问即可使用。
---
## 功能模块
| 模块 | 说明 |
|---|---|
| 大盘行情 | 三大指数、情绪温度计、板块云图、热股榜、龙虎榜、涨跌停统计 |
| 盘中监控 | 异动雷达(快速拉升 / 放量突破 / 涨停打开 / 连板追踪 / 大单异动) |
| 自选股 | 自选列表与分组、8 种内置策略选股、多因子条件过滤 |
| 智能选股 | 可视化条件组合器、策略保存 / 分享、选股回测验证、条件预警 |
| 复盘中心 | 每日复盘(板块 / 资金 / 龙虎榜、AI 七段式日报、个股 K 线回放 |
| 策略回测 | MA 交叉 / 多因子回测、参数优化网格搜索、策略对比、交易明细导出 |
| 板块轮动 | 板块强弱趋势、资金流向桑基图、龙头股识别、生命周期判断 |
| AI 分析 | 个股 6 维诊断、AI 对话式分析、信号胜率历史、预测准确率核验 |
| 组合交易 | 持仓 P&L、资金曲线、交易日志理由 / 情绪标签)、持仓归因分析 |
| 智能预警 | 价格 / 量能 / 技术信号规则预警、多通道推送(邮件 / 微信 / 企微) |
| 资讯中心 | 财经快讯、AI 情绪摘要、自选股关联资讯 |
| 社区情绪 | 东方财富 / 雪球热帖采集、情绪指数、热议股排行、情绪与股价相关性 |
| 事件驱动 | 财报前后规律、高管增减持、限售解禁、政策事件库、事件驱动选股 |
| 财报解读 | 关键指标趋势、AI 财报摘要、同行对比、异常预警、发布日历 |
| 涨跌停分析 | 涨停 / 跌停追踪、连板监控、炸板率统计、涨停敢死队排行 |
| 数据中台 | 数据入库状态、任务日志、全市场历史回填、定时调度监控 |
---
## 技术栈
| 层 | 技术 |
|---|---|
| 前端 | HTML + CSS + 原生 JSECharts 5CDN |
| 后端 | Python 3.12 · FastAPI · uvicorn |
| 数据库 | PostgreSQL 14+ · SQLAlchemy 2.0 · psycopg2 |
| 缓存 | Redis 5+(可选,自动降级到内存缓存) |
| 数据源 | AkShare行情 / 情绪 / 资讯)· Sina 实时报价 |
| 调度 | APScheduler |
| AI | OpenAI 兼容接口DeepSeek / 通义 / Kimi 等),无 Key 时规则降级 |
| 鉴权 | JWT Token + API Key 双模式 |
---
## 项目结构
```
.
├── backend/
│ ├── main.py # FastAPI 入口 + 路由
│ ├── cli.py # 建库 / 入库命令行工具
│ ├── models.py # SQLAlchemy 数据模型
│ ├── db.py # 数据库连接
│ ├── config.py # 全局配置(读 .env
│ ├── scheduler.py # APScheduler 定时任务
│ ├── auth.py # JWT / API Key 鉴权
│ ├── redis_cache.py # Redis 缓存层
│ ├── exceptions.py # 统一异常处理
│ ├── akshare_service.py # 数据源封装
│ ├── ingest.py # 数据入库逻辑
│ ├── data_manager.py # 数据管理
│ ├── trade_calendar.py # 交易日历
│ ├── llm.py # 大模型调用封装
│ ├── ai.py # AI 个股诊断
│ ├── ai_chat.py # AI 对话式分析
│ ├── rag.py # RAG 知识增强
│ ├── backtest.py # 基础回测引擎
│ ├── backtest_advanced.py # 增强回测(多因子 / 参数优化 / 对比)
│ ├── signals.py # 信号胜率统计
│ ├── report.py # AI 复盘日报生成
│ ├── portfolio.py # 组合与持仓计算
│ ├── position_cost.py # 持仓成本追踪
│ ├── attribution_analysis.py # 持仓归因分析
│ ├── alerts.py # 智能预警
│ ├── notifier.py # 多通道推送
│ ├── intraday_radar.py # 盘中异动雷达
│ ├── sector_rotation.py # 板块轮动分析
│ ├── smart_selector.py # 智能选股
│ ├── sentiment_monitor.py # 社区情绪监控
│ ├── event_driven.py # 事件驱动策略
│ ├── financial_analysis.py # 财报深度解读
│ ├── limit_analysis.py # 涨跌停分析
│ ├── watchlist_manager.py # 自选股管理
│ ├── .env.example # 环境变量模板
│ └── requirements.txt
├── prototype/ # 前端静态文件HTML / JS / CSS
│ ├── index.html
│ ├── app.js
│ ├── style.css
│ └── *.js # 各功能模块 JS
├── 架构总结.md
├── 功能架构.md
├── 待优化.md
└── 功能扩展.md
```
---
## 环境要求
- Python 3.12+
- PostgreSQL 14+
- Redis 5+(可选,不启动时自动降级内存缓存)
- 大模型 API Key可选不配置时使用规则引擎降级
---
## 快速开始WSL / Linux
### 1. 安装服务(首次)
```bash
sudo apt update
sudo apt install -y postgresql postgresql-contrib redis-server
sudo service postgresql start
sudo service redis-server start
# 设置 postgres 密码(与后续 .env 中 PG_PASSWORD 保持一致)
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'your_password';"
```
WSL 重启后若服务未自动运行:
```bash
sudo service postgresql start && sudo service redis-server start
```
### 2. 安装 Python 依赖(首次)
```bash
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
### 3. 配置环境变量
```bash
cd backend
cp .env.example .env
```
编辑 `backend/.env`
```env
# 数据库
PG_USER=postgres
PG_PASSWORD=your_password
PG_HOST=localhost
PG_PORT=5432
PG_DB=stock_cs
# Redis可选
REDIS_HOST=localhost
REDIS_PORT=6379
# 鉴权(生产环境务必修改 SECRET_KEY
SECRET_KEY=your-secret-key-change-in-production
DEFAULT_ADMIN_USERNAME=admin
DEFAULT_ADMIN_PASSWORD=admin123
# 大模型(可选,不填则规则降级)
LLM_API_KEY=
LLM_BASE_URL=https://api.deepseek.com/v1
LLM_MODEL=deepseek-chat
```
生成安全的 SECRET_KEY
```bash
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
```
完整配置说明见 [backend/ENV_CONFIG.md](backend/ENV_CONFIG.md)。
### 4. 初始化数据库(首次)
```bash
cd backend
source .venv/bin/activate
# 建表 + 创建管理员账号
python cli.py init
# 抓取当日行情快照(板块 / 资金 / 情绪 / 龙虎榜)
python cli.py ingest
# 全市场日线历史入库(默认 250 交易日,耗时较长,可选)
python cli.py ingest_all
python cli.py ingest_all 500 # 指定天数
# 指定股票入库
python cli.py ingest 600519 000001
```
### 5. 启动服务
```bash
sudo service postgresql start && sudo service redis-server start
cd backend
source .venv/bin/activate
python main.py
```
浏览器访问:**http://127.0.0.1:8000**WSL2 下 Windows 浏览器可直接访问)
健康检查:`GET /api/health`(返回 Redis、AkShare、鉴权状态
---
## 定时任务
服务启动后APScheduler 在交易日自动执行:
| 任务 | 默认时间 | 说明 |
|---|---|---|
| `daily_ingest` | 15:35 | 收盘后增量入库 |
| `alert_check` | 每 60 秒 | 实时价格 / 量能预警核查 |
| `intraday_scan` | 交易时段每 5 分钟 | 盘中异动扫描 |
| `daily_report` | 15:45 | 生成 AI 复盘日报并推送 |
| `verify_pred` | 15:50 | 核验到期 AI 预测,更新准确率 |
| `signal_stats` | 周六 09:00 | 全市场信号胜率回测 |
| `selector_check` | 15:40 | 选股策略预警检查 |
| `calendar_alerts` | 08:30 | 推送持仓股除权 / 解禁 / 财报等日历事件提醒 |
时间可通过环境变量 `INGEST_HOUR` / `INGEST_MINUTE` 调整。
---
## 推送渠道
`.env` 中配置任意一种即可,互不依赖:
| 渠道 | 配置项 |
|---|---|
| SMTP 邮件 | `SMTP_HOST` · `SMTP_PORT` · `SMTP_USER` · `SMTP_PASSWORD` · `SMTP_TO` |
| Server酱微信 | `SERVERCHAN_KEY` |
| 企业微信机器人 | `WECOM_WEBHOOK` |
| PushPlus微信 | `PUSHPLUS_TOKEN` |
---
## API 认证
管理接口需要 JWT Token
```bash
# 登录
curl -X POST http://localhost:8000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'
# 携带 Token 访问
curl http://localhost:8000/api/admin/status \
-H "Authorization: Bearer YOUR_TOKEN"
```
也可在 `.env` 中配置 `API_KEYS` 使用静态 API Key 模式。
---
## 常见问题WSL
| 现象 | 处理 |
|---|---|
| `connection refused` | `sudo service postgresql start && sudo service redis-server start` |
| `password authentication failed` | 检查 `.env``PG_PASSWORD` 与数据库密码是否一致 |
| `python: command not found` | 使用 `python3` |
| 新开终端命令失效 | 先执行 `source .venv/bin/activate` |
| Redis 连接失败 | 不影响运行,自动降级到内存缓存 |
| 401 Unauthorized | 先调用 `/api/auth/login` 获取 Token |
---
## 文档
| 文件 | 内容 |
|---|---|
| [架构总结.md](./架构总结.md) | 分层设计、数据模型、AI 分析流程 |
| [功能架构.md](./功能架构.md) | 功能模块详细说明 |
| [待优化.md](./待优化.md) | 已知问题与优化方向 |
| [功能扩展.md](./功能扩展.md) | 扩展功能建议 |
| [backend/ENV_CONFIG.md](backend/ENV_CONFIG.md) | 环境变量完整说明 |
| [backend/UPGRADE_GUIDE.md](backend/UPGRADE_GUIDE.md) | 升级指南 |
---
## 免责声明
本项目仅供学习与研究使用,不构成任何投资建议。行情数据来自第三方公开接口,请遵守相应数据源的使用条款。