QSSS_new / README.md
misonL's picture
特性:实现对话框、表单、输入框、标签、下拉菜单、分隔线、骨架屏、滑块、表格、文本区域的 UI 组件
c78ce9e
|
Raw
History Blame Contribute Delete
10.2 kB
---
title: QSSS New
emoji: 📈
colorFrom: gray
colorTo: indigo
sdk: docker
pinned: false
license: mit
---
# A股量化策略选股系统
## 项目简介
QSSS (Quantitative Stock Strategy System) 是一个专为A股市场设计的量化策略选股系统。它提供了一套完整的解决方案,涵盖了从数据获取、策略开发、回测分析到投资组合优化的全流程。系统后端基于Python FastAPI构建,前端采用Next.js,并针对HuggingFace Space的Docker纯内存环境进行了深度优化,确保高效、轻量级的部署和运行。
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.9+](https://img.shields.io/badge/Python-3.9+-blue.svg)](https://www.python.org/downloads/)
[![FastAPI](https://img.shields.io/badge/FastAPI-0.104.1-green.svg)](https://fastapi.tiangolo.com/)
[![Next.js](https://img.shields.io/badge/Next.js-14-black.svg)](https://nextjs.org/)
[![SQLite](https://img.shields.io/badge/SQLite-Memory-orange.svg)](https://www.sqlite.org/)
[![Redis](https://img.shields.io/badge/Redis-Memory-red.svg)](https://redis.io/)
## 📑 目录
- [项目简介](#项目简介)
- [主要功能](#主要功能)
- [技术架构](#技术架构)
- [项目结构](#项目结构)
- [快速开始](#快速开始)
- [Hugging Face部署指南](docs/hf_deployment_guide.md)
- [使用说明](#使用说明)
- [开发指南](#开发指南)
- [贡献指南](#贡献指南)
- [许可证](#许可证)
- [联系方式](#联系方式)
## 🚀 主要功能
### 仪表盘
- 实时指数/新闻/策略概览
### 策略管理
- 创建/编辑/实例监控
### 回测分析
- 参数设置/图表展示
### 选股功能
- 条件筛选/详情查看
## 🔧 技术架构
### 后端技术栈
- **框架**: FastAPI (Python)
- **数据库**: SQLite (纯内存模式)
- **缓存**: FakeRedis (纯内存模式)
- **数据处理**: Pandas, NumPy
- **量化库**: TA-Lib, Backtrader, Empyrical, Pyfolio
- **机器学习**: Scikit-learn, XGBoost, LightGBM
### 前端技术栈
- **框架**: Next.js 14 (App Router)
- **UI组件库**: Shadcn UI (基于Radix UI和Tailwind CSS构建)
- **样式**: Tailwind CSS
- **状态管理**: Zustand
- **数据获取**: React Query
- **可视化**: Recharts
### 数据源
- **股票数据**: Tushare (需配置 `TUSHARE_TOKEN` 环境变量), AKShare
- **财务数据**: Wind, 同花顺 (通过模拟数据或外部API集成)
- **实时行情**: WebSocket推送 (模拟或通过外部API集成)
- **新闻数据**: 新华财经 (通过外部API集成)
## 📁 项目结构
```
qsss_new/
├── .env # 环境变量配置文件 (本地使用)
├── .env.example # 环境变量示例文件
├── backend/ # 后端服务
│ ├── app/ # 应用主目录
│ │ ├── api/ # API路由
│ │ ├── core/ # 核心配置 (包含内存模式数据库和缓存配置)
│ │ │ └── database_memory.py # 内存模式数据库配置
│ │ │ └── db_selector.py # 数据库模式选择器
│ │ ├── models/ # 数据模型
│ │ ├── services/ # 业务逻辑
│ │ └── utils/ # 工具函数
│ ├── strategies/ # 量化策略
│ ├── data/ # 数据处理
│ │ └── data_service_memory.py # 内存模式数据服务
│ └── tests/ # 测试文件 (仅包含test_sql_injection.py)
├── qsss-web/ # Next.js前端应用
│ ├── public/ # 静态资源
│ ├── src/ # 源代码
│ │ ├── app/ # App Router 页面和 API 路由
│ │ ├── components/ # UI 组件和共享组件
│ │ ├── lib/ # 工具函数和 API 客户端
│ │ └── types/ # TypeScript 类型定义
│ └── Dockerfile # Dockerfile for Next.js app
└── docs/ # 文档
└── hf_deployment_guide.md # Hugging Face部署指南
```
## 🚀 快速开始
### HuggingFace部署
系统专为HuggingFace Space免费层优化,采用**纯内存模式**运行,所有数据(包括数据库和缓存)均存储在内存中,不写入本地文件系统,确保了部署的轻量级和高效性。
#### 在HuggingFace Space上部署
1. 创建一个新的Docker Space。
2. 设置环境变量:
* `MEMORY_MODE=true`**必须**设置为 `true` 以启用纯内存模式。
* `SECRET_KEY`**必须**设置为一个强随机字符串,用于JWT令牌签名。建议使用 `openssl rand -hex 32` 生成。
* `TUSHARE_TOKEN`**可选**。如果您需要从Tushare获取实时或历史数据,请在此处设置您的Tushare API Token。如果未设置,系统将使用模拟数据或AKShare等其他数据源。
3. 上传代码到Space仓库。
系统会自动使用项目根目录的`Dockerfile`进行构建和部署。
## 🖥️ 本地部署
您可以在本地环境部署和运行本项目,支持使用 Docker 或直接运行。
### 1. 使用 Docker 构建和运行
如果您已安装 Docker,可以通过以下步骤快速启动项目:
1. **确保 `.env` 文件存在**:在项目根目录创建 `.env` 文件(如果尚未创建),并根据 `.env.example` 填写必要的环境变量。
```bash
cp .env.example .env
# 编辑 .env 文件,设置 SECRET_KEY 等
```
2. **构建 Docker 镜像**:在项目根目录执行以下命令构建镜像。
```bash
docker build -t qsss-new .
```
3. **运行 Docker 容器**:
```bash
docker run -d -p 7860:7860 --env-file .env qsss-new
```
* `-d` 表示在后台运行容器。
* `-p 7860:7860` 将容器的 7860 端口映射到主机的 7860 端口。
* `--env-file .env` 会将 `.env` 文件中的环境变量加载到容器中。
4. **访问应用程序**:在浏览器中访问 `http://localhost:7860`
### 2. 不使用 Docker 直接运行
如果您不希望使用 Docker,可以分别启动后端和前端服务。
#### 后端服务 (Python)
1. **进入后端目录**
```bash
cd backend
```
2. **创建并激活 Python 虚拟环境**:
```bash
python3 -m venv backend_venv
source backend_venv/bin/activate
```
* **注意**:如果 `python3` 命令不可用,请尝试 `python`。
3. **安装 Python 依赖**:
```bash
pip install -r requirements.txt
```
* 如果需要开发依赖,可以运行 `pip install -r requirements-dev.txt`。
4. **启动后端 Uvicorn 服务**:
```bash
uvicorn app.main:app --host 0.0.0.0 --port 8000
```
* 后端服务将在 `http://localhost:8000` 上运行。
#### 前端服务 (Next.js)
1. **打开新的终端窗口**(或在当前终端中停止后端服务并切换目录)。
2. **进入前端目录**
```bash
cd qsss-web
```
3. **安装 Node.js 依赖**:
```bash
npm install
# 或者如果您使用 pnpm:
# pnpm install
```
4. **启动 Next.js 开发服务器**:
```bash
npm run dev
# 或者如果您使用 pnpm:
# pnpm run dev
```
* 前端服务通常会在 `http://localhost:3000` 上运行。
完成以上步骤后,您应该可以通过浏览器访问 `http://localhost:3000` 来使用应用程序。
## ⚙️ 环境变量配置
本项目支持通过环境变量进行灵活配置。建议在项目根目录创建 `.env` 文件来管理这些参数。
| 环境变量 | 说明 | 默认值 |
| -------------- | ----------------------------------------------------------------- | ------------------ |
| `PORT` | 应用程序监听的端口。 | `7860` |
| `DATABASE_URL` | 数据库连接URL。在内存模式下,通常为 `sqlite:///:memory:`。 | `sqlite:///:memory:` |
| `REDIS_MODE` | Redis模式,可选 `memory` (纯内存) 或 `redis` (需要外部Redis服务)。 | `memory` |
| `SECRET_KEY` | 用于JWT令牌签名和数据加密的密钥。**生产环境必须设置强随机字符串**。 | `your_secret_key_here` |
| `ENVIRONMENT` | 应用程序运行环境,可选 `development`, `production`, `testing`。 | `production` |
| `MEMORY_MODE` | 是否启用纯内存模式 (数据库和缓存均在内存中)。`true``false`。 | `true` |
**示例 `.env` 文件:**
```dotenv
PORT=7860
DATABASE_URL=sqlite:///:memory:
REDIS_MODE=memory
SECRET_KEY=your_strong_random_secret_key
ENVIRONMENT=production
MEMORY_MODE=true
```
## 📊 示例数据
系统会自动生成以下示例数据:
- 股票列表:包含部分A股示例股票
- 行情数据:随机生成的模拟行情数据
- 因子数据:预设的基础因子数据
## 📚 使用说明
### 策略配置
系统提供多种预设策略,可以通过Web界面进行配置和参数调整。
### 回测分析
支持历史数据回测,并提供丰富的性能指标和可视化图表。
### 选股结果
系统会根据策略生成选股结果,并提供详细的选股理由和风险评估。
## 🛠️ 开发指南
### 添加新策略
1.`backend/strategies`目录下创建新的策略类。
2. 继承`BaseStrategy`类并实现必要的方法。
3.`strategy_manager.py`中注册新策略。
### 自定义数据源
1.`backend/data`目录下创建新的数据源适配器。
2. 实现数据获取和处理方法。
3. 在数据服务中集成新的数据源。
## 📄 许可证
本项目采用MIT许可证 - 详情请参阅[LICENSE](LICENSE)文件
## 📞 联系方式
项目维护者 - [MisonL](https://github.com/MisonL)
项目链接: [https://huggingface.co/spaces/misonL/QSSS_new](https://huggingface.co/spaces/misonL/QSSS_new)
## 开发环境配置
```bash
# 运行初始化脚本
chmod +x backend/setup_venv.sh
./backend/setup_venv.sh
# 激活虚拟环境
source backend/.venv/bin/activate
```