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

量化交易系统架构

概述

Fire量化交易系统是一个支持多策略、多通道、多市场的自动化交易平台。本文档描述交易业务的整体架构设计和核心模块之间的关系。

注意:系统基础设施和工程架构请参考 基础架构文档

系统目标

核心能力

业务特性

特性 描述 实现方式
策略隔离 各策略独立运行互不干扰 独立的策略实例和上下文
通道并行 多通道同时运行不同配置 通道管理器和虚拟仓位
信号聚合 多策略信号智能综合 层次化投票系统
动态调仓 根据市场自动调整仓位 动态风险评估
实时监控 全流程状态实时可见 WebSocket推送

业务架构全景

graph TB
    subgraph "数据层"
        MD[市场数据<br/>Market Data]
        HD[历史数据<br/>Historical Data]
        TD[交易数据<br/>Trade Data]
    end

    subgraph "交易核心层"
        TSE[交易会话引擎<br/>TradingSessionEngine]
        SE[策略引擎<br/>StrategyEngine]
        TE[交易引擎<br/>TradingEngine]
        RE[风险引擎<br/>RiskEngine]
    end

    subgraph "策略层"
        BS[策略基类<br/>BaseStrategy]
        TS[技术策略<br/>Technical]
        SS[统计策略<br/>Statistical]
        MS[机器学习<br/>ML Strategy]
    end

    subgraph "通道层"
        CM[通道管理器<br/>ChannelManager]
        CH1[激进通道<br/>Aggressive]
        CH2[平衡通道<br/>Balanced]
        CH3[保守通道<br/>Conservative]
    end

    subgraph "执行层"
        OM[订单管理<br/>OrderManager]
        PM[仓位管理<br/>PositionManager]
        EM[执行引擎<br/>ExecutionEngine]
    end

    subgraph "分析层"
        BT[回测引擎<br/>BacktestEngine]
        PA[绩效分析<br/>Performance]
        OPT[参数优化<br/>Optimizer]
    end

    MD --> TSE
    HD --> TSE
    TSE --> SE
    TSE --> CM
    SE --> BS
    BS --> TS
    BS --> SS
    BS --> MS
    CM --> CH1
    CM --> CH2
    CM --> CH3
    SE --> TE
    TE --> OM
    TE --> PM
    TE --> EM
    SE --> RE
    RE --> TE
    TSE --> BT
    BT --> PA
    BT --> OPT
    TE --> TD

核心模块设计

1. 交易会话引擎(TradingSessionEngine)

系统的中央调度器,负责协调所有模块的运行。

classDiagram
    class TradingSessionEngine {
        -session_id: str
        -user_id: str
        -trading_mode: TradingMode
        -asset_mode: AssetMode
        -trading_engine: TradingEngine
        -simulation_engine: SimulationEngine
        -channel_manager: ChannelManager
        -quote_adapter: QuoteAdapter
        -engine_status: EngineStatus
        -is_running: bool
        -is_paused: bool
        +initialize() bool
        +start() bool
        +stop() bool
        +pause() bool
        +resume() bool
    }

    class TradingMode {
        <<enumeration>>
        LIVE
        SIMULATION
        BACKTEST
    }

    class AssetMode {
        <<enumeration>>
        REAL
        SIMULATION
    }

    class EngineStatus {
        <<enumeration>>
        NOT_STARTED
        INITIALIZING
        READY
        RUNNING
        PAUSED
        STOPPED
        ERROR
    }

    TradingSessionEngine --> TradingMode
    TradingSessionEngine --> AssetMode
    TradingSessionEngine --> EngineStatus

核心职责

2. 策略引擎(StrategyEngine)

管理所有交易策略的执行和信号生成。

classDiagram
    class StrategyEngine {
        -strategies: Dict[str, BaseStrategy]
        -signal_aggregator: SignalAggregator
        -voting_system: VotingSystem
        +add_strategy(strategy)
        +remove_strategy(name)
        +process_market_data(data)
        +aggregate_signals()
        +get_final_signal()
    }

    class SignalAggregator {
        -weights: Dict[str, float]
        +aggregate(signals)
        +update_weights()
    }

    class VotingSystem {
        -voting_rules: List[Rule]
        +vote(signals)
        +get_consensus()
    }

    StrategyEngine --> SignalAggregator
    StrategyEngine --> VotingSystem

信号处理流程

  1. 接收市场数据
  2. 分发到各策略
  3. 收集策略信号
  4. 聚合和投票
  5. 生成最终信号

3. 多通道交易系统

支持不同风险偏好的并行交易通道。

classDiagram
    class ChannelManager {
        -channels: Dict[str, TradingChannel]
        -allocation_strategy: AllocationStrategy
        +create_channel(config)
        +allocate_capital(total)
        +rebalance_channels()
        +get_channel_status()
    }

    class TradingChannel {
        -channel_id: str
        -risk_level: RiskLevel
        -capital_allocation: float
        -virtual_positions: Dict
        -strategies: List[str]
        +process_signal(signal)
        +execute_trade()
        +update_position()
    }

    class RiskLevel {
        <<enumeration>>
        AGGRESSIVE
        BALANCED
        CONSERVATIVE
    }

    ChannelManager --> TradingChannel
    TradingChannel --> RiskLevel

通道特性对比

通道类型 风险级别 资金配比 杠杆倍数 止损比例 策略权重
激进型 40% 2-3x 10% 技术70% 动量30%
平衡型 40% 1-2x 7% 均衡分配
保守型 20% 1x 5% 价值70% 防御30%

4. 交易执行引擎

处理订单生成、执行和仓位管理。

stateDiagram-v2
    [*] --> 信号接收
    信号接收 --> 风险检查
    风险检查 --> 订单生成: 通过
    风险检查 --> [*]: 拒绝
    订单生成 --> 订单验证
    订单验证 --> 订单发送: 有效
    订单验证 --> [*]: 无效
    订单发送 --> 等待成交
    等待成交 --> 部分成交
    等待成交 --> 完全成交
    等待成交 --> 订单取消
    部分成交 --> 等待成交
    完全成交 --> 仓位更新
    订单取消 --> [*]
    仓位更新 --> [*]

5. 风险管理系统

多层次的风险控制机制。

graph LR
    subgraph "风险层级"
        L1[预交易风控<br/>Pre-Trade]
        L2[交易中风控<br/>In-Trade]
        L3[后交易风控<br/>Post-Trade]
    end

    subgraph "风险指标"
        M1[仓位风险<br/>Position Risk]
        M2[市场风险<br/>Market Risk]
        M3[流动性风险<br/>Liquidity Risk]
        M4[操作风险<br/>Operational Risk]
    end

    subgraph "风控措施"
        A1[限额控制<br/>Limit Control]
        A2[自动止损<br/>Stop Loss]
        A3[仓位调整<br/>Position Adjust]
        A4[交易暂停<br/>Trade Halt]
    end

    L1 --> M1
    L1 --> M2
    L2 --> M3
    L3 --> M4

    M1 --> A1
    M2 --> A2
    M3 --> A3
    M4 --> A4

风险控制规则

风险类型 监控指标 阈值设置 触发动作
仓位风险 单股占比 <30% 限制加仓
杠杆风险 总杠杆率 <3x 降低杠杆
回撤风险 最大回撤 <15% 减仓或停止
集中度风险 行业集中度 <50% 分散配置
流动性风险 成交量比率 <5% 分批执行

📊 数据流架构

实时数据流

sequenceDiagram
    participant Market as 市场数据源
    participant TSE as 交易会话引擎
    participant SE as 策略引擎
    participant CM as 通道管理器
    participant TE as 交易引擎
    participant Broker as 券商接口

    Market->>TSE: 推送行情数据
    TSE->>SE: 分发市场数据
    SE->>SE: 策略计算
    SE->>TSE: 返回交易信号
    TSE->>CM: 信号路由
    CM->>CM: 通道分配
    CM->>TE: 生成订单
    TE->>Broker: 发送订单
    Broker-->>TE: 成交回报
    TE-->>TSE: 更新状态
    TSE-->>SE: 通知策略

回测数据流

sequenceDiagram
    participant HD as 历史数据
    participant BT as 回测引擎
    participant SE as 策略引擎
    participant VTE as 虚拟交易引擎
    participant PA as 绩效分析

    HD->>BT: 加载历史数据
    BT->>SE: 按时序推送
    SE->>SE: 策略计算
    SE->>BT: 返回信号
    BT->>VTE: 模拟交易
    VTE->>VTE: 虚拟撮合
    VTE->>BT: 成交结果
    BT->>PA: 记录交易
    PA->>PA: 计算指标
    PA-->>BT: 返回报告

策略体系

策略分类

graph TD
    S[交易策略] --> T[技术分析]
    S --> F[基本面分析]
    S --> Q[量化策略]
    S --> A[套利策略]

    T --> T1[趋势跟踪]
    T --> T2[均值回归]
    T --> T3[动量策略]

    F --> F1[价值投资]
    F --> F2[成长投资]
    F --> F3[事件驱动]

    Q --> Q1[统计套利]
    Q --> Q2[机器学习]
    Q --> Q3[高频交易]

    A --> A1[期现套利]
    A --> A2[跨期套利]
    A --> A3[跨市套利]

策略接口标准

class BaseStrategy(ABC):
    """策略基类接口"""

    @abstractmethod
    def initialize(self, context: StrategyContext) -> None:
        """策略初始化"""
        pass

    @abstractmethod
    def on_market_data(self, data: MarketData) -> Signal:
        """处理市场数据,生成交易信号"""
        pass

    @abstractmethod
    def on_order_status(self, order: Order) -> None:
        """处理订单状态更新"""
        pass

    @abstractmethod
    def on_position_update(self, position: Position) -> None:
        """处理仓位更新"""
        pass

策略注册表系统

Fire 使用基于装饰器的策略注册机制,实现策略的自动发现和管理。详细实现参见 策略系统架构

注册表架构

graph TB
    subgraph "策略开发"
        Dev[开发新策略]
        Deco[@register装饰器]
        Meta[元数据定义]
    end

    subgraph "策略注册表"
        Registry[StrategyRegistry<br/>单例]
        StratMap[策略映射表<br/>_strategies]
        MetaMap[元数据映射表<br/>_metadata]
    end

    subgraph "策略工厂"
        Factory[StrategyFactory]
        Create[create_strategy]
        Validate[validate_config]
    end

    subgraph "策略引擎"
        Engine[StrategyEngine]
        Instance[策略实例]
    end

    Dev --> Deco
    Deco --> Meta
    Meta --> Registry
    Registry --> StratMap
    Registry --> MetaMap
    Factory --> Registry
    Create --> Registry
    Validate --> Registry
    Engine --> Factory
    Factory --> Instance

当前已注册策略

策略ID 分类 描述 最少历史数据
MomentumBreakoutStrategy MOMENTUM 价格突破 + 成交量确认 50
RSIMomentumStrategy MOMENTUM RSI + 趋势过滤 50
MACDStrategy TREND_FOLLOWING MACD 金叉死叉 50
MACrossStrategy TREND_FOLLOWING 双均线交叉 60
TrendChannelStrategy TREND_FOLLOWING 通道突破 + ATR 止损 50
BollingerBandsStrategy MEAN_REVERSION 布林带均值回归 50
LowVolatilityStrategy VOLATILITY 低波动率选股 50
VolumeSpikeStrategy VOLUME 成交量异动检测 50
RSIStrategy MOMENTUM RSI 超买超卖(旧版) 50
MovingAverageCrossoverStrategy TREND_FOLLOWING 均线交叉(旧版) 50

pandas-ta 技术指标集成

Fire 集成了专业的技术分析库 pandas-ta,提供 130+ 种技术指标。详细实现参见 策略系统架构

集成架构

graph TB
    subgraph "策略层"
        Strategy[策略实例]
        GetInd[get_indicator方法]
    end

    subgraph "指标缓存层"
        L1[L1 全局缓存<br/>IndicatorCache]
        L2[L2 实例缓存<br/>_indicator_cache]
    end

    subgraph "pandas-ta 层"
        PTA[pandas-ta库]
        RSI[ta.rsi]
        SMA[ta.sma]
        MACD[ta.macd]
        ATR[ta.atr]
        BBAND[ta.bbands]
    end

    subgraph "数据层"
        DF[DataFrame<br/>OHLCV数据]
    end

    Strategy --> GetInd
    GetInd --> L2
    L2 --> L1
    L1 --> PTA
    PTA --> RSI
    PTA --> SMA
    PTA --> MACD
    PTA --> ATR
    PTA --> BBAND
    DF --> PTA

支持的指标类别

类别 指标数量 典型指标
趋势指标 30+ SMA, EMA, WMA, DEMA, TEMA, ADX, Aroon
动量指标 20+ RSI, MACD, Stochastic, CCI, CMO, ROC
波动率指标 15+ ATR, Bollinger Bands, Keltner Channel, Donchian
成交量指标 15+ OBV, CMF, MFI, AD, VWAP, PVT
统计指标 10+ ZSCORE, STDEV, VAR, MAD, Skew, Kurt
其他指标 40+ Ichimoku, Supertrend, Fibonacci, Pivot Points

市场数据管理器 Pub/Sub 架构

Fire 使用 ChannelManager 直接分发模式,不使用独立的消息代理,保持架构简洁高效。

市场数据分发架构

graph TB
    subgraph "数据源层"
        DS[TradingSessionEngine<br/>接收市场数据]
    end

    subgraph "分发层"
        CM[ChannelManager<br/>distribute_market_data]
    end

    subgraph "通道层"
        CH1[激进通道<br/>TradingChannel]
        CH2[稳健通道<br/>TradingChannel]
        CH3[保守通道<br/>TradingChannel]
    end

    subgraph "策略层"
        SE1[StrategyEngine<br/>策略组1]
        SE2[StrategyEngine<br/>策略组2]
        SE3[StrategyEngine<br/>策略组3]
    end

    DS --> CM
    CM -->|并行分发| CH1
    CM -->|并行分发| CH2
    CM -->|并行分发| CH3

    CH1 --> SE1
    CH2 --> SE2
    CH3 --> SE3

    SE1 -->|投票信号| CH1
    SE2 -->|投票信号| CH2
    SE3 -->|投票信号| CH3

    CH1 -->|聚合信号| CM
    CH2 -->|聚合信号| CM
    CH3 -->|聚合信号| CM

数据流程(实际实现)

sequenceDiagram
    participant Engine as TradingSessionEngine
    participant CM as ChannelManager
    participant CH as TradingChannel
    participant SE as StrategyEngine
    participant S as Strategy

    Engine->>CM: distribute_market_data(data)
    Note over CM: 遍历所有活跃通道

    par 并行分发到3个通道
        CM->>CH: process_market_data(data)
        CH->>SE: on_market_data(data)

        loop 每个策略
            SE->>S: on_market_data(data, is_warmup)
            S->>S: 计算指标
            S->>S: 生成信号
            S-->>SE: 返回投票
        end

        SE-->>CH: 返回策略组投票
        CH->>CH: aggregate_votes()
        CH-->>CM: 返回聚合信号
    end

    CM->>CM: collect_signals()
    Note over CM: 收集所有通道信号

数据分发机制

Fire 使用 ChannelManager 直接处理市场数据分发,无需单独的订阅管理器。详细实现参见 Trading 模块架构Data Pipeline 模块架构

核心特性

策略生命周期管理

完整的策略生命周期包括:注册、创建、初始化、运行、暂停、恢复、停止和销毁。详细实现参见 策略系统架构

生命周期状态图

stateDiagram-v2
    [*] --> 已注册: @register装饰器
    已注册 --> 已创建: create_strategy()
    已创建 --> 已初始化: initialize()
    已初始化 --> 预热中: warmup()
    预热中 --> 运行中: start()
    运行中 --> 暂停中: pause()
    暂停中 --> 运行中: resume()
    运行中 --> 已停止: stop()
    暂停中 --> 已停止: stop()
    已停止 --> 已销毁: destroy()
    已销毁 --> [*]

    预热中 --> 错误: 异常
    运行中 --> 错误: 异常
    错误 --> 已停止: error_handler()

主要生命周期阶段

状态 触发方法 描述
已注册 @register装饰器 策略类注册到系统
已创建 create_strategy() 创建策略实例
已初始化 initialize() 初始化策略配置
预热中 warmup() 使用历史数据预热
运行中 start() 策略正常运行
暂停中 pause() 暂停交易信号
已停止 stop() 停止策略运行
已销毁 destroy() 释放资源

信号聚合机制

graph LR
    subgraph "策略信号"
        S1[MACD: 买入]
        S2[RSI: 卖出]
        S3[MA: 买入]
        S4[BOLL: 持有]
    end

    subgraph "权重分配"
        W1[MACD: 30%]
        W2[RSI: 25%]
        W3[MA: 25%]
        W4[BOLL: 20%]
    end

    subgraph "投票系统"
        V[加权投票<br/>买入: 55%<br/>卖出: 25%<br/>持有: 20%]
    end

    subgraph "最终信号"
        F[买入信号<br/>置信度: 0.55]
    end

    S1 --> W1
    S2 --> W2
    S3 --> W3
    S4 --> W4
    W1 --> V
    W2 --> V
    W3 --> V
    W4 --> V
    V --> F

💼 仓位管理

虚拟仓位系统

每个交易通道维护独立的虚拟仓位,最后合并为实际仓位。

graph TD
    subgraph "虚拟仓位"
        VP1[激进通道<br/>AAPL: 1000<br/>GOOGL: 500]
        VP2[平衡通道<br/>AAPL: 500<br/>MSFT: 800]
        VP3[保守通道<br/>AAPL: 300<br/>SPY: 1000]
    end

    subgraph "仓位合并"
        PN[仓位净额计算<br/>Position Netting]
    end

    subgraph "实际仓位"
        RP[实际持仓<br/>AAPL: 1800<br/>GOOGL: 500<br/>MSFT: 800<br/>SPY: 1000]
    end

    VP1 --> PN
    VP2 --> PN
    VP3 --> PN
    PN --> RP

仓位调整策略

市场状态 总仓位 激进通道 平衡通道 保守通道
强势上涨 90-95% 50% 35% 15%
温和上涨 70-80% 35% 35% 20%
震荡整理 50-60% 20% 30% 25%
温和下跌 30-40% 10% 20% 30%
急速下跌 10-20% 0% 5% 35%

回测与优化

回测架构

graph TB
    subgraph "数据准备"
        DS[数据源选择]
        DP[数据预处理]
        DV[数据验证]
    end

    subgraph "回测执行"
        BE[回测引擎]
        TSR[交易模拟]
        CM[成本模型]
    end

    subgraph "结果分析"
        PM[绩效指标]
        RA[风险分析]
        VIS[可视化]
    end

    subgraph "参数优化"
        GO[网格搜索]
        BO[贝叶斯优化]
        GA[遗传算法]
    end

    DS --> DP
    DP --> DV
    DV --> BE
    BE --> TSR
    TSR --> CM
    CM --> PM
    PM --> RA
    RA --> VIS
    PM --> GO
    GO --> BO
    BO --> GA
    GA --> BE

绩效评估指标

指标类别 具体指标 计算方法 评价标准
收益指标 年化收益率 (1+总收益)^(365/天数)-1 >15%
风险指标 夏普比率 (收益-无风险)/标准差 >1.5
回撤指标 最大回撤 max(峰值-谷值)/峰值 <20%
稳定性 胜率 盈利次数/总次数 >55%
效率指标 盈亏比 平均盈利/平均亏损 >1.5

参数优化机制

参数优化功能当前支持手动调优。自动化优化工具尚未实现。

相关文档