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

Flow 配置模型

概述

Flow 配置模型用于多时间框架可视化编辑器中节点和连接的定义、存储和管理。每个 Flow 表示一个完整的交易策略配置,包含数据源节点、Director/Executor 核心处理节点、仓位管理节点和调试节点。

核心架构:Director-Executor-PositionManager 模式

数据模型

FlowConfig (Flow 配置)

class FlowConfig(BaseModel):
    id: str                      # Flow 唯一标识 (UUID)
    name: str                    # Flow 名称 (1-100 字符)
    description: Optional[str]   # 描述 (0-500 字符,可选)
    nodes: List[FlowNode]        # 节点列表
    edges: List[FlowEdge]        # 连接列表
    metadata: FlowMetadata       # 元数据
    created_at: datetime         # 创建时间
    updated_at: datetime         # 更新时间
    version: int                 # 版本号 (自动递增,从 1 开始)

FlowNode (流程节点)

class FlowNode(BaseModel):
    id: str                      # 节点唯一标识
    type: FlowNodeType           # 节点类型 (枚举)
    position: Position           # 画布坐标位置
    data: Dict[str, Any]         # 节点配置数据

FlowEdge (节点连接)

class FlowEdge(BaseModel):
    id: str                      # 连接唯一标识
    source: str                  # 源节点 ID
    sourceHandle: str            # 源节点端口 ID
    target: str                  # 目标节点 ID
    targetHandle: str            # 目标节点端口 ID

FlowMetadata (元数据)

class FlowMetadata(BaseModel):
    viewport: Optional[Dict[str, float]]  # 画布视口状态 (x, y, zoom)
    tags: List[str]              # 标签列表
    author: Optional[str]        # 作者
    notes: Optional[str]         # 备注

FlowNodeType (节点类型枚举)

class FlowNodeType(str, Enum):
    # 数据源节点
    MARKET_SOURCE = "marketSource"      # K线数据源
    TICK_SOURCE = "tickSource"          # Tick 数据源

    # 技术指标节点
    INDICATOR_MACD = "indicator_macd"
    INDICATOR_MA_CROSS = "indicator_ma_cross"
    INDICATOR_MOMENTUM_BREAKOUT = "indicator_momentum_breakout"
    INDICATOR_TREND_CHANNEL = "indicator_trend_channel"
    INDICATOR_LOW_VOLATILITY = "indicator_low_volatility"
    INDICATOR_RSI_MOMENTUM = "indicator_rsi_momentum"
    INDICATOR_BOLLINGER_BANDS = "indicator_bollinger_bands"
    INDICATOR_VOLUME_SPIKE = "indicator_volume_spike"
    ATR_INDICATOR = "atrIndicator"      # ATR 指标 (波动率/仓位计算)

    # 核心处理节点
    DIRECTOR = "director"               # 信号决策器
    EXECUTOR = "executor"               # 执行器
    SIZING_POLICY = "sizingPolicy"      # 仓位策略
    POSITION_MANAGER = "positionManager" # 持仓管理
    TRADE_EXECUTOR = "tradeExecutor"    # 交易执行

    # 调试节点
    CONSOLE_LOG = "consoleLog"          # 控制台日志
    CHART_PLOTTER = "chartPlotter"      # 图表绘制
    METRIC_GAUGE = "metricGauge"        # 指标仪表

Position (画布位置)

class Position(BaseModel):
    x: float                     # X 坐标
    y: float                     # Y 坐标

业务规则

Flow 管理

  1. 每个 Flow 有唯一的 UUID 标识
  2. Flow 名称长度限制 1-100 字符
  3. Flow 描述长度限制 0-500 字符
  4. 更新 Flow 时版本号自动递增
  5. 复制 Flow 时版本号重置为 1

节点连接规则

  1. 每个节点有明确的输入/输出端口
  2. 连接必须指定源和目标的端口 ID
  3. 不允许形成循环连接
  4. 某些节点类型有连接数量限制

版本控制

  1. 新建 Flow 版本号为 1
  2. 每次更新操作版本号 +1
  3. 复制 Flow 时版本号重置为 1
  4. 版本号用于乐观锁和变更追踪

存储设计

Redis 键设计

数据类型 Key 模式 存储类型 TTL
Flow 数据 flows:{flow_id} String (JSON) 永久
Flow 列表 flows:list Set 永久

存储策略

API 设计

Flow 管理

Flow 操作

验证规则

Flow 验证

  1. 必须包含至少一个数据源节点
  2. 必须包含至少一个核心处理节点
  3. 所有连接的节点必须存在
  4. 端口类型必须匹配
  5. 不允许存在孤立节点(无连接)

节点验证

  1. 节点 ID 必须唯一
  2. 节点类型必须为有效的枚举值
  3. 节点位置坐标必须为有效数值
  4. 节点配置数据必须符合类型要求

相关文档