Files
sanguo_vnpy/docs/02-architecture.md
2026-04-29 20:18:15 +08:00

5.4 KiB
Raw Permalink Blame History

02 - 系统架构设计

版本: v1.0 日期: 2026-04-29


1. 架构总览

┌─────────────────────────────────────────────────────────────┐
│                     三国量化团队(7个Agent)                    │
│  诸葛亮 · 庞统 · 张飞 · 关羽 · 赵云 · 司马懿 · 姜维            │
└───────────┬─────────────────────────────────┬───────────────┘
            │ 提交策略                         │ 查看结果
            ▼                                 ▼
┌───────────────────────┐         ┌───────────────────┐
│   回测API服务          │         │  OpenClaw Gateway  │
│   FastAPI :8088       │         │  任务调度/通信      │
│   /api/backtest/*     │         └───────────────────┘
└───────────┬───────────┘
            │ 调用
            ▼
┌───────────────────────┐
│   vnpy BacktestingEngine │  ← vnpy 4.x原生回测引擎
│   CTA策略回测            │
└───────────┬───────────┘
            │ 读取数据
            ▼
┌───────────────────────┐
│   数据层               │
│   SQLite / akshare     │  ← 本地数据 + 实时数据
└───────────────────────┘

            所有服务运行在:
┌─────────────────────────────────────┐
│        群晖 NAS Docker 容器           │
│  192.168.2.154                       │
│  sanguo_vnpy:with-scripts 镜像       │
│  restart: unless-stopped             │
└─────────────────────────────────────┘

2. 分层架构

┌────────────────────────────────────┐
│  适配层 (src/)                      │  ← 我们的代码
│  ├── backtest-service/  回测API服务  │
│  ├── adapters/          数据适配器   │
│  └── scripts/           启动脚本     │
├────────────────────────────────────┤
│  vnpy框架层 (pip install vnpy)      │  ← 开源框架,不修改
│  ├── BacktestingEngine  回测引擎     │
│  ├── CtaTemplate       策略基类      │
│  ├── BaseDatafeed      数据接口      │
│  └── BaseGateway       交易网关      │
├────────────────────────────────────┤
│  基础设施层 (docker/)               │
│  ├── Dockerfile         镜像构建     │
│  ├── entrypoint.sh      容器启动     │
│  └── requirements/      依赖管理     │
└────────────────────────────────────┘

3. 核心设计决策

3.1 适配层 vs Fork

方案 适用场景 当前选择
适配层(继承/封装) 新策略、新数据源、新网关 当前采用
Fork vnpy 修改回测引擎核心、修改事件机制 🔜 预留

原则:优先通过继承和封装实现需求,vnpy接口不满足时再考虑fork。

3.2 数据架构

数据获取层(赵云负责)
    │
    ├── akshare(实时行情)
    ├── tushare(历史数据)
    └── 本地CSV/Parquet
    │
    ▼
数据适配层(src/adapters/
    │
    ├── vnpy_local_data_adapter.py  ← 实现BaseDatafeed接口
    │
    ▼
数据存储层
    │
    └── SQLitevnpy标准数据库)

3.3 多用户隔离

每个用户独立进程对,通过Nginx反向代理统一入口:

用户        RPC端口   Web端口   Nginx路径
诸葛亮       2010      8001     /zhugeliang/
庞统         2020      8002     /pangtong/
司马懿       2030      8003     /simayi/
张飞         2040      8004     /zhangfei/
关羽         2050      8005     /guanyu/
赵云         2060      8006     /zhaoyun/
姜维         2070      8007     /jiangwei/

3.4 容器化部署

sanguo_vnpy 容器
├── 8888  Jupyter Lab(开发环境)
├── 8088  回测API服务(FastAPI
├── 8000  WebTrader(预留)
├── 2222  SSH(运维通道)
└── /app/scripts/backtest_service  ← volume挂载代码

4. 技术选型

组件 选型 理由
量化框架 vn.py 4.x 开源、社区活跃、架构成熟
API服务 FastAPI + uvicorn 异步高性能、自动文档
数据库 SQLite 轻量、vnpy原生支持
数据源 akshare + tushare 免费A股数据
容器 Docker 环境隔离、可移植
部署 群晖NAS 团队已有硬件、7×24运行

下一步:03-detailed-design.md