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

9.8 KiB
Raw Permalink Blame History

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. 安装服务(首次)

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 重启后若服务未自动运行:

sudo service postgresql start && sudo service redis-server start

2. 安装 Python 依赖(首次)

cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

3. 配置环境变量

cd backend
cp .env.example .env

编辑 backend/.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

python3 -c "import secrets; print(secrets.token_urlsafe(32))"

完整配置说明见 backend/ENV_CONFIG.md

4. 初始化数据库(首次)

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. 启动服务

sudo service postgresql start && sudo service redis-server start
cd backend
source .venv/bin/activate
python main.py

浏览器访问:http://127.0.0.1:8000WSL2 下 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

# 登录
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 检查 .envPG_PASSWORD 与数据库密码是否一致
python: command not found 使用 python3
新开终端命令失效 先执行 source .venv/bin/activate
Redis 连接失败 不影响运行,自动降级到内存缓存
401 Unauthorized 先调用 /api/auth/login 获取 Token

文档

文件 内容
架构总结.md 分层设计、数据模型、AI 分析流程
功能架构.md 功能模块详细说明
待优化.md 已知问题与优化方向
功能扩展.md 扩展功能建议
backend/ENV_CONFIG.md 环境变量完整说明
backend/UPGRADE_GUIDE.md 升级指南

免责声明

本项目仅供学习与研究使用,不构成任何投资建议。行情数据来自第三方公开接口,请遵守相应数据源的使用条款。