看股功能更新

This commit is contained in:
2026-08-16 20:20:59 +08:00
parent 63f8ed8b69
commit 65d2f54d1b
9 changed files with 296 additions and 107 deletions

View File

@@ -7,6 +7,25 @@
---
## 快速启动
两个终端分别启动后端与前端:
```bash
# 终端 1 —— 后端 APIhttp://localhost:8000
cd backend
uv run uvicorn app.main:app --reload --port 8000
# 终端 2 —— 前端开发服务器http://localhost:5173
cd frontend
pnpm dev
```
首次运行前先安装依赖:后端 `uv sync`backend 下)、前端 `pnpm install`frontend 下)。
浏览器打开 http://localhost:5173 即可使用。详细说明见下文「快速开始(开发模式)」。
---
## 功能特性
**已实现Phase 0 MVP**
@@ -20,7 +39,6 @@
- 回测运行注册表(每次回测落库,可复现/审计的基础)
**规划中(见 TECH_STACK.md 路线图)**
- 接入 Tushare/AKShare 真实 A 股数据(替换 DEMO 合成数据)
- 防过拟合体检walk-forward / 样本外 / FDR 多重比较修正)
- 基准归因对比沪深300/中证500超额、信息比率、beta/alpha
- 复权因子管道、回放式模拟盘
@@ -34,7 +52,7 @@
|---|---|
| 后端 | Python 3.12+ · FastAPI · Pydantic v2 · SQLAlchemy 2.0 (async) · uv包管理 |
| 回测引擎 | 自研单一引擎fast/strict 两档),指标纯 numpy/pandas生产可换 TA-Lib |
| 数据库 | MVP 用 SQLite 零配置;生产切 PostgreSQL 16/17 + TimescaleDB |
| 数据库 | PostgreSQL 16/17后端强制要求+ Redis 缓存;TimescaleDB 规划中 |
| 前端 | Vue 3.5 · Vite · TypeScript · Pinia · PrimeVue 5 · pnpm |
| 图表 | lightweight-charts 5K 线)· ECharts 6净值 |
@@ -60,7 +78,7 @@ stock/
│ ├── commission.py # A 股交易成本(已修正、可配置)
│ ├── indicators.py # 指标MACD/RSI/KDJ/布林/均线(单一事实源)
│ ├── api.py # 路由:/health /candles /backtest
│ ├── data/ # DataProvider 适配器 + 合成数据 + 周期聚合
│ ├── data/ # DataProvider 适配器Tushare/AKShare+ 周期聚合
│ └── backtest/ # engine / broker(PaperBroker) / metrics / strategies
└── frontend/ # Vue SPA
├── src/
@@ -82,7 +100,7 @@ stock/
| pnpm | ≥ 9实测 11 | 前端包管理 |
| Python | ≥ 3.12(实测 3.14 | 后端 |
| uv | 任意(实测 0.12 | 后端包管理,[安装](https://docs.astral.sh/uv/) |
| (可选)PostgreSQL | 16/17 | 生产数据库MVP 用 SQLite 无需安装 |
| PostgreSQL | 16/17 | 数据库(必装,后端已不再支持 SQLite |
**安装 uv**(若未装):
```bash
@@ -103,7 +121,7 @@ uv sync # 创建 .venv 并安装依赖(首
uv run uvicorn app.main:app --reload --port 8000
```
- 首次启动自动建表SQLite`backend/stock.db`)并播种约 500 个交易日的合成 K 线symbol=`DEMO`)。
- 数据库结构由 Alembic 管理:首次部署/更新代码后先执行 `uv run alembic upgrade head`(见「初始化登录系统」)。
- 交互式 API 文档http://localhost:8000/docs
**自检**(无需起服务器,验证全链路):
@@ -141,7 +159,7 @@ CORS_ORIGINS=http://localhost:5173
# 生产建议关闭接口文档
EXPOSE_API_DOCS=true
# 真实数据源Tushare Pro免费版即可。留空则仅 DEMO 合成数据可用
# 真实数据源Tushare Pro免费版即可
TUSHARE_TOKEN=你的token
DATA_ADJUST=qfq # 复权qfq 前复权 / hfq 后复权 / 留空不复权
DATA_DEFAULT_START=20200101
@@ -204,7 +222,7 @@ EXPOSE_API_DOCS=false
```json
POST /api/backtest
{
"symbol": "DEMO",
"symbol": "000001",
"timeframe": "1d",
"strategy": "macd_cross",
"params": { "fast": 12, "slow": 26, "signal": 9 },
@@ -214,7 +232,7 @@ POST /api/backtest
```
返回:`candles`K线、`indicators`MACD 三线)、`signals`(买卖点)、`equity`(净值序列)、`metrics`(绩效)、`final_cash`/`final_position`。
> **关于「标的」**`DEMO` 为内置合成数据;其余为真实 A 股代码(如 `000001`、`600519`),首次回测时**自动经 Tushare 拉取并本地缓存**(需配置 `TUSHARE_TOKEN` + 联网),二次回测秒出。默认初始资金 100 万,足够交易高价股(如茅台)。
> **关于「标的」**标的为真实 A 股代码(如 `000001`、`600519`),首次回测时**自动经 Tushare 拉取并本地缓存**(需配置 `TUSHARE_TOKEN` + 联网),二次回测秒出。默认初始资金 100 万,足够交易高价股(如茅台)。
---
@@ -235,7 +253,7 @@ uv run alembic upgrade head
uv run uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 4
# 或 gunicornLinuxuv run gunicorn app.main:app -w 4 -k uvicorn.workers.UvicornWorker
```
生产务必设置 `DATABASE_URL` 指向 PostgreSQL,不要用 SQLite。
后端强制要求 `DATABASE_URL` 使用 PostgreSQL`postgresql+asyncpg://`),已不再支持 SQLite。
### 参考docker-compose具备 Docker 后使用)
```yaml