Paper_Trading / README.md
superxuu
fix: Add Hugging Face Space configuration metadata to README
d2090bc
---
title: Paper Trading
emoji: 📈
colorFrom: blue
colorTo: purple
sdk: docker
pinned: false
---
# StockReplay-A: A股模拟交易复盘系统
一款基于 Web 的轻量级 A 股历史行情回放与模拟交易应用,提供"盲盒式"选股训练。
## 功能特性
- **盲盒式选股**: 随机选择上市满3年的股票,隐藏股票名称,训练交易直觉
- **K线回放**: 基于 Lightweight Charts 的高性能K线展示,逐根推进模拟实盘
- **模拟交易**: 纯前端计算买卖逻辑,实时展示收益率
- **零成本部署**: 支持 Hugging Face Spaces 部署,数据持久化到 HF Datasets
## 技术栈
| 模块 | 技术 |
|------|------|
| 后端 | Python 3.11 + FastAPI + DuckDB |
| 数据源 | AkShare (A股开源数据接口) |
| 前端 | Next.js 14 + TypeScript + Tailwind CSS |
| 图表 | Lightweight Charts (TradingView) |
| 状态管理 | Zustand |
| 部署 | Docker 多阶段构建 |
## 项目结构
```
Paper_Trading/
├── backend/ # Python 后端
│ ├── app/
│ │ ├── main.py # FastAPI 入口
│ │ ├── api.py # 路由定义
│ │ ├── core.py # 核心业务逻辑
│ │ └── database.py # DuckDB 管理
│ ├── scripts/
│ │ └── sync_data.py # 数据同步脚本
│ └── requirements.txt
├── frontend/ # Next.js 前端
│ ├── src/
│ │ ├── app/ # App Router 页面
│ │ ├── components/ # UI 组件
│ │ ├── store/ # Zustand Store
│ │ └── lib/ # API 客户端
│ └── package.json
├── Dockerfile # Docker 部署配置
└── .env.example # 环境变量示例
```
## 快速开始
### 本地开发
1. **后端启动**
```bash
cd backend
pip install -r requirements.txt
python -m app.main
```
2. **前端启动**
```bash
cd frontend
npm install
npm run dev
```
3. **数据同步** (首次运行)
```bash
cd backend
python scripts/sync_data.py
```
### Docker 部署
```bash
# 构建镜像
docker build -t stock-replay-a .
# 运行容器
docker run -p 7860:7860 \
-e HF_TOKEN=your_token \
-e DATASET_REPO_ID=your_username/stock-db \
stock-replay-a
```
### Hugging Face Spaces 部署
1. 创建新的 Space (Docker 类型)
2. 设置环境变量:
- `HF_TOKEN`: 你的 Hugging Face Token (需要 Write 权限)
- `DATASET_REPO_ID`: 存储数据库的 Dataset ID
- `ADMIN_SECRET`: 管理员密钥
## API 接口
| 方法 | 路径 | 描述 |
|------|------|------|
| GET | `/api/health` | 健康检查 |
| GET | `/api/game/start` | 开始游戏,获取盲盒数据 |
| GET | `/api/kline?code=600519` | 获取指定股票K线 |
| POST | `/api/admin/sync` | 触发数据同步 (需认证) |
## 环境变量
| 变量 | 描述 | 默认值 |
|------|------|--------|
| `HF_TOKEN` | Hugging Face Token | - |
| `DATASET_REPO_ID` | Dataset 仓库 ID | - |
| `ADMIN_SECRET` | 管理员密钥 | `your-secret-key` |
| `DUCKDB_PATH` | 数据库路径 | `/tmp/stock_data.duckdb` |
| `PORT` | 服务端口 | `7860` |
## 开发计划
详细的开发计划请参阅 [DEVELOPMENT_PLAN.md](./DEVELOPMENT_PLAN.md)
## License
MIT