--- 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