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

Fire 策略与风控

市场状态

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% 明确下降趋势

策略体系

Fire 采用 Director-Executor 双层策略架构:大周期定方向,小周期找时机。

MarketData → Director (4h) → 市场状态 → PositionManager
                                            ↓
MarketData → Executor (15m) → 入场信号 → PositionManager → 最终决策
角色 策略数量 时间框架 职责
Director 4 大周期 (4h, 1d) 判断市场状态和方向
Executor 4 小周期 (15m, 1h) 寻找精确入场时机

Director 策略

策略 ID 核心指标 详细文档
MACDDirector MACD 柱状图 MACD 策略
MACrossDirector 快慢均线 均线交叉策略
TrendChannelDirector ATR, Donchian 趋势通道策略
LowVolatilityDirector ATR 低波动率策略

Executor 策略

策略 ID 核心指标 详细文档
RSIMomentumExecutor RSI, EMA RSI 动量策略
MomentumBreakoutExecutor BBANDS, Volume 动量突破策略
VolumeSpikeExecutor Volume MA 成交量异动策略

策略注册系统

策略通过 @register 装饰器自动注册:

from core.trading.mtf.base_strategy import DirectorStrategy
from core.trading.mtf.registry import register

@register(
    strategy_id="macd_director",
    display_name="MACD 方向判定",
    category="trend",
    role="director",
    parameters=[
        {"name": "fast_period", "type": "int", "default": 12},
        {"name": "slow_period", "type": "int", "default": 26},
    ]
)
class MACDDirector(DirectorStrategy):
    def analyze(self, ohlcv: pd.DataFrame) -> StrategyVote:
        pass

策略元数据

参数 类型 说明
category StrategyCategory 策略分类(MOMENTUM/TREND_FOLLOWING 等)
description str 策略描述
min_history_bars int 最少历史数据条数,默认 100
supports_realtime bool 是否支持实时交易,默认 True
supports_backtest bool 是否支持回测,默认 True

策略生命周期

创建 → 初始化 → 预热(积累历史数据)→ 运行(生成信号)→ 停止

指标计算

Fire 集成 pandas-ta 库,通过 PandasTAWrapper 提供常用技术指标:

两级缓存机制:L1 全局缓存(跨策略共享)+ L2 实例缓存,避免重复计算。

仓位管理

PositionManager 约束层叠

PositionManager 按优先级顺序应用 8 层约束:

优先级 约束类型 触发条件
1 止损 价格触及止损线
2 Director 反转 Director 方向反转
3 止盈 价格触及止盈目标
4 移动止损 价格回撤超过阈值
5 Director 约束 超过 max_long/max_short
6 做空模式 short_mode=disabled
7 互斥约束 互斥标的已有仓位
8 SizingPolicy 接受建议仓位
flowchart TD
    Input[输入信号] --> SL{止损?}
    SL -->|是| Force[强制平仓]
    SL -->|否| Rev{Director 反转?}
    Rev -->|是| Clear[清空仓位]
    Rev -->|否| TP{止盈?}
    TP -->|是| Reduce[减仓]
    TP -->|否| Dir{Director 约束?}
    Dir -->|是| Limit[限制仓位]
    Dir -->|否| Accept[接受建议仓位]

    Force --> Output[最终决策]
    Clear --> Output
    Reduce --> Output
    Limit --> Output
    Accept --> Output

    style SL fill:#ff6b6b
    style Force fill:#ff6b6b

状态持久化

PositionManager 状态持久化在 Redis,键格式:pm_state:{session_id}:{symbol}

风险控制

四级风险体系

层级 类型 监控指标 触发动作
1 仓位风险 单股占比 <30% 限制加仓
2 杠杆风险 总杠杆率 <3x 降低杠杆
3 回撤风险 最大回撤 <15% 减仓或停止
4 集中度风险 行业集中度 <50% 分散配置

RiskEngine(预交易检查)

检查项 默认阈值
单股持仓比例 ≤10%
单笔订单比例 ≤5%
最小现金比例 ≥10%
最大杠杆 ≤1x

RiskGuard(实时监控)

指标 默认阈值 告警响应
回撤 ≤15% WARNING → ERROR → CRITICAL
日损失 ≤2% 限制新仓位 → 自动平仓
持仓集中度 ≤30% 记录日志

风险配置示例

risk_config = {
    "max_position_ratio": 0.1,
    "max_drawdown": 0.15,
    "allowed_symbols": ["AAPL", "GOOGL", "MSFT"],
    "stop_loss_ratio": 0.05,
    "take_profit_ratio": 0.15,
}

策略开发指南

自定义 Director 策略

from core.trading.mtf.base_strategy import DirectorStrategy
from core.trading.mtf.registry import register

@register(
    strategy_id="custom_director",
    display_name="自定义方向判定",
    category="custom",
    role="director",
    parameters=[{"name": "period", "type": "int", "default": 20}]
)
class CustomDirector(DirectorStrategy):
    def analyze(self, ohlcv: pd.DataFrame) -> StrategyVote:
        momentum = self._calculate_momentum(ohlcv)
        return StrategyVote(
            strategy_id=self.strategy_id,
            momentum=momentum,
            confidence=0.8,
        )

自定义 Executor 策略

from core.trading.mtf.base_strategy import ExecutorStrategy
from core.trading.mtf.registry import register

@register(
    strategy_id="custom_executor",
    display_name="自定义入场判定",
    category="custom",
    role="executor",
)
class CustomExecutor(ExecutorStrategy):
    def analyze(self, ohlcv: pd.DataFrame) -> StrategyVote:
        target_ratio = self._calculate_entry_signal(ohlcv)
        return StrategyVote(
            strategy_id=self.strategy_id,
            momentum=target_ratio,
            confidence=0.75,
        )

测试策略

测试文件位于 backend/tests/unit/strategies/,验证:策略初始化、信号生成、预热管理、边界条件。

REST API

方法 路径 说明
GET /api/v1/strategies/mtf/metadata 获取所有策略元数据
GET /api/v1/strategies/mtf/metadata/{strategy_id} 获取指定策略元数据

相关文档

文档 内容
系统概览 系统简介、技术栈、核心概念
工程架构 分层架构、目录结构、数据层设计
交易架构 DEP 核心架构、FlowRuntime、交易数据流
市场数据规范 数据缺失处理规则

具体策略文档

Director 策略

Executor 策略