Fire 系统概览
系统简介
Fire 是一个基于 Director-Executor-PositionManager 架构的量化交易平台,实现”大周期定方向、小周期找时机”的多时间框架交易策略。
核心特性:
- 多时间框架决策:Director 基于大周期(4h、1d)判断市场方向,Executor 基于小周期(15m、1h)寻找入场时机
- 约束层叠风控:PositionManager 按优先级应用 8 层约束,实现精细风险控制
- 可视化 Flow 配置:通过节点图编辑器配置交易策略,持久化到 Redis
- 前后端分离架构:FastAPI 后端 + React 前端,支持独立部署和扩展
顶层架构图
flowchart TB
subgraph "客户端层"
Browser[浏览器<br/>React SPA]
end
subgraph "前端层"
Vite[Vite Dev Server<br/>端口: 3000]
FlowEditor[Flow 编辑器<br/>React Flow]
end
subgraph "后端层"
API[FastAPI Server<br/>端口: 8000]
subgraph "交易核心"
TSE[TradingSessionEngine]
FR[FlowRuntime]
TE[TradingEngine]
end
subgraph "决策层"
DIR[Director]
EXE[Executor]
PM[PositionManager]
end
end
subgraph "数据层"
Redis[(Redis<br/>端口: 6379)]
end
subgraph "外部服务"
Broker[券商 API<br/>LongPort]
Market[市场数据]
end
Browser --> Vite
Vite --> FlowEditor
Vite -->|/api/*| API
API --> TSE
TSE --> FR
FR --> DIR
FR --> EXE
DIR --> PM
EXE --> PM
PM --> TE
TE --> Broker
API --> Redis
Market --> API
style FR fill:#e1f5fe
style PM fill:#fff3e0
技术栈
后端技术栈
| 组件 |
技术选型 |
版本 |
用途 |
| 运行时 |
Python |
3.13+ |
后端运行环境 |
| Web框架 |
FastAPI |
≥0.110.0 |
异步 Web 框架 |
| 数据验证 |
Pydantic |
≥2.6.0 |
数据模型和验证 |
| 数据存储 |
Redis |
≥5.0.0 |
会话存储、数据缓存、持久化 |
| 券商接口 |
longport |
≥3.0.0 |
长桥证券 API |
| 数据分析 |
pandas |
≥2.3.0 |
数据处理和分析 |
| 技术指标 |
pandas-ta |
0.4.71b0 |
技术指标计算 |
| 认证 |
PyJWT |
≥2.8.0 |
JWT 令牌生成与验证 |
前端技术栈
| 组件 |
技术选型 |
版本 |
用途 |
| 框架 |
React |
^18.2.0 |
UI 框架 |
| 语言 |
TypeScript |
^5.2.2 |
类型安全 |
| 构建工具 |
Vite |
^5.0.8 |
快速构建和 HMR |
| UI组件库 |
@douyinfe/semi-ui |
^2.86.0 |
企业级组件库 |
| Flow 编辑器 |
@xyflow/react |
^12.x |
可视化节点编辑器 |
| 代码编辑器 |
@monaco-editor/react |
^4.6.0 |
JSON 配置编辑器 |
| WebSocket |
socket.io-client |
^4.5.4 |
实时通信 |
工程目录结构
fire/
├── backend/ # 后端服务根目录
│ ├── main.py # FastAPI 应用入口
│ ├── venv/ # Python 虚拟环境
│ ├── api/v1/ # API 接口层
│ │ └── endpoints/ # 端点实现
│ │ ├── flows.py # Flow 配置 CRUD
│ │ ├── strategies.py # 策略元数据查询
│ │ └── trading.py # 交易会话管理
│ ├── core/ # 核心业务层
│ │ ├── trading/ # 交易核心模块
│ │ │ ├── mtf/ # 多时间框架核心
│ │ │ ├── engines/ # 交易引擎
│ │ │ ├── strategies/ # 策略实现
│ │ │ └── risk/ # 风险控制
│ │ ├── repositories/ # 数据访问层
│ │ └── services/ # 业务服务
│ ├── infrastructure/ # 基础设施层
│ └── tests/ # 测试目录
│
├── frontend/ # 前端应用根目录
│ ├── src/
│ │ ├── components/FlowEditor/ # Flow 编辑器组件
│ │ ├── pages/trading/ # 交易页面
│ │ ├── services/api.ts # API 客户端
│ │ └── hooks/ # React Hooks
│ └── package.json
│
├── scripts/ # 自动化脚本
│ ├── startup.sh # 启动脚本
│ ├── test.sh # 测试脚本
│ └── lint-fix.sh # 代码检查修复
│
└── docs/ # 文档目录
├── architecture/ # 架构文档
└── strategies/ # 策略文档
核心业务概念
Director-Executor-PositionManager 架构
| 组件 |
时间框架 |
职责 |
输出 |
| Director |
大周期 (4h, 1d) |
判断市场状态和交易方向 |
max_long_ratio, max_short_ratio |
| Executor |
小周期 (15m, 1h) |
寻找入场时机 |
target_ratio, confidence |
| SizingPolicy |
- |
计算建议仓位 |
suggested_target, stop_loss |
| PositionManager |
- |
约束层叠和最终决策 |
final_target_ratio |
市场状态定义
Director 将市场分为 6 种状态:
| 状态 |
英文标识 |
允许做多 |
允许做空 |
| 强多 |
strong_long |
100% |
0% |
| 弱多 |
weak_long |
50% |
0% |
| 高位纠缠 |
high_consolidation |
30% |
30% |
| 低位纠缠 |
low_consolidation |
30% |
30% |
| 弱空 |
weak_short |
0% |
50% |
| 强空 |
strong_short |
0% |
100% |
Flow 节点类型
| 节点类型 |
用途 |
输入 |
输出 |
marketSource |
市场数据源 |
无 |
ohlcv, tick |
director |
战略方向判定 |
data_stream |
constraints |
executor |
入场时机判定 |
data_stream |
signal |
sizingPolicy |
仓位计算 |
executor_output |
sizing_output |
positionManager |
约束层叠 |
director_constraints, sizing_output |
decision |
tradeExecutor |
订单执行 |
decisions |
无 |
consoleLog |
调试日志 |
input |
无 |
chartPlotter |
图表绘制 |
input |
无 |
metricGauge |
指标仪表 |
input |
无 |
快速开始
启动服务
# 启动所有服务
./scripts/startup.sh
# 仅启动后端
./scripts/startup.sh --backend-only
# 仅启动前端
./scripts/startup.sh --frontend-only
# 停止服务
./scripts/startup.sh --stop
访问地址
| 服务 |
地址 |
| 前端应用 |
http://localhost:3000 |
| 后端 API |
http://localhost:8000 |
| API 文档 |
http://localhost:8000/docs |
运行测试
# 运行所有测试
./scripts/test.sh
# 运行单元测试
./scripts/test.sh unit
# 运行集成测试
./scripts/test.sh integration
相关文档
| 文档 |
内容 |
| 工程架构 |
分层架构、目录结构、数据层设计、安全架构 |
| 交易架构 |
DEP 核心架构、FlowRuntime、交易数据流 |
| 策略与风控 |
策略体系、PositionManager 约束、风险控制、策略开发指南 |