🇨🇳 简体中文
🇺🇸 English
🇯🇵 日本語
Skip to the content.

基础架构设计

基于 FastAPI 和 React 的量化交易系统架构设计。

技术栈

后端

前端

开发工具

设计原则

  1. 关注点分离 - 业务逻辑、数据访问、API 接口分离
  2. 模块化 - 单一职责,便于维护和测试
  3. 代码复用 - 避免重复代码
  4. 依赖倒置 - 依赖抽象而非具体实现
  5. 性能优化 - 缓存和连接复用
  6. 工厂模式 - 统一资源创建和管理
  7. 多券商支持 - 支持多个券商数据源
  8. 配置驱动 - 通过配置动态选择数据源
  9. 可测试性 - 完整的 API 测试工具
  10. 扩展性 - 支持功能扩展和券商接入

目录结构

fire/
├── backend/                # 后端服务
│   ├── main.py             # FastAPI 主入口
│   ├── requirements.txt    # 后端依赖
│   ├── core/               # 核心业务逻辑层
│   │   ├── models/         # 数据模型
│   │   │   ├── user.py     # 用户模型
│   │   │   ├── asset.py    # 资产模型
│   │   │   ├── stock.py    # 股票模型
│   │   │   ├── trading.py  # 交易模型
│   │   │   ├── risk_config.py      # 风险配置模型
│   │   │   └── strategy_config.py  # 策略配置模型
│   │   ├── services/       # 业务服务层
│   │   │   ├── trading_service.py  # 交易服务
│   │   │   ├── websocket_service.py  # WebSocket 日志服务
│   │   │   └── websocket_service_factory.py  # WebSocket 服务工厂
│   │   ├── repositories/   # 数据访问层
│   │   │   ├── user_repository.py
│   │   │   ├── asset_repository.py
│   │   │   ├── stock_repository.py
│   │   │   ├── trading_repository.py
│   │   │   └── settings_repository.py
│   │   ├── trading/        # 交易核心模块
│   │   │   ├── engines/    # 交易引擎
│   │   │   │   ├── trading_session_engine.py  # 交易会话引擎
│   │   │   │   ├── strategy_engine.py         # 策略引擎
│   │   │   │   ├── trading_engine.py          # 交易引擎
│   │   │   │   ├── simulation_engine.py       # 模拟交易引擎
│   │   │   │   └── time_series_controller.py  # 时序控制器
│   │   │   ├── strategies/ # 交易策略
│   │   │   │   ├── base_strategy.py      # 策略基类
│   │   │   │   ├── macd_strategy.py      # MACD 策略
│   │   │   │   ├── rsi_strategy.py       # RSI 策略
│   │   │   │   └── bollinger_strategy.py # 布林带策略
│   │   │   ├── risk/       # 风险管理
│   │   │   │   └── risk_engine.py
│   │   │   └── backtest/   # 回测引擎
│   │   │       └── backtest_engine.py
│   │   └── data_source/    # 统一数据源架构
│   │       ├── adapters/   # 业务适配器层
│   │       │   ├── data_source_adapter.py
│   │       │   ├── asset_adapter.py
│   │       │   ├── data_adapter.py
│   │       │   └── quote_adapter.py
│   │       └── factories/  # 工厂层
│   │           ├── config_factory.py
│   │           └── client_factory.py
│   ├── infrastructure/     # 基础设施层
│   │   ├── database/       # 数据库相关
│   │   │   ├── redis_client.py
│   │   │   └── trade_redis_client.py
│   │   └── config/         # 配置管理
│   │       └── settings.py
│   ├── api/                # API 接口层
│   │   └── v1/             # API 版本 1
│   │       └── endpoints/  # 端点
│   │           ├── auth.py
│   │           ├── users.py
│   │           ├── broker.py
│   │           ├── settings.py
│   │           ├── stock.py
│   │           ├── stock_import.py
│   │           ├── assets.py
│   │           ├── websocket.py
│   │           └── api_test.py
│   ├── core/middleware/    # 中间件
│   │   ├── auth_middleware.py
│   │   └── permission_middleware.py
│   └── tests/              # 后端测试
│       ├── unit/           # 单元测试
│       ├── integration/    # 集成测试
│       └── e2e/            # 端到端测试
├── frontend/               # 前端
│   ├── src/
│   │   ├── components/     # 通用组件
│   │   ├── pages/          # 页面组件
│   │   │   ├── trading/    # 交易相关页面
│   │   │   ├── assets/     # 资产管理页面
│   │   │   ├── data/       # 数据管理页面
│   │   │   └── settings/   # 设置页面
│   │   ├── services/       # API 服务
│   │   ├── types/          # TypeScript 类型定义
│   │   └── utils/          # 工具函数
│   ├── package.json        # 前端依赖
│   └── vite.config.ts      # Vite 配置
├── scripts/                # 脚本
│   ├── startup.sh          # 启动脚本
│   ├── install.sh          # 安装脚本
│   ├── test.sh             # 测试脚本
│   ├── lint-fix.sh         # 代码格式修复
│   └── generate_docs.sh    # 文档生成
├── docs/                   # 文档
│   ├── .github-pages/      # Jekyll 构建文件
│   ├── architecture/       # 架构文档
│   ├── api/                # API 文档
│   ├── domain/             # 领域文档
│   └── helper/             # 辅助文档(API 参考等)
├── data/                   # 数据目录
│   └── redis/              # Redis 数据
└── logs/                   # 日志目录

分层架构

Core 层(核心业务)

Infrastructure 层(基础设施)

API 层(接口)

Frontend 层(前端)

依赖关系

Frontend → API → Core → Infrastructure

数据源架构

采用统一数据源架构,通过分层设计实现券商无关的数据访问。

核心特性:

  1. 统一访问接口 - 所有券商通过统一抽象层访问
  2. 缓存复用 - 用户配置和客户端实例缓存
  3. 业务保护 - 复杂分页逻辑等业务规则保留
  4. 扩展能力 - 新券商只需添加 ClientManager
  5. WebSocket 日志 - 全局日志服务,实时进度推送

性能优化

缓存策略

性能提升

操作 优化前 优化后 提升
配置获取 50-100ms 1-5ms 95%
客户端创建 100-200ms 1-10ms 95%
Redis 查询 20-50ms 1-5ms 90%
API 响应 1-2s 100-300ms 80%

扩展性设计

水平扩展

多券商支持

功能扩展

安全设计

数据安全

交易安全

配置安全

股票代码格式

标准格式

{SYMBOL}.{MARKET}

市场后缀:

使用规则

前端:

后端:

数据一致性:

API 测试模块

模块设计

三页面设计:

核心特性

  1. 抽象接口设计 - 基于抽象接口,不依赖具体 SDK
  2. 安全测试原则 - 数据获取 API 支持测试,交易提交 API 不支持
  3. 动态表单生成 - 根据 API 参数自动生成表单
  4. 实时结果展示 - 人类可读描述 + 原始 JSON 数据