多策略接入流程图,设计自动化交易时候可以看看

303
  • niulai

    多策略接入流程图

    总体思路

    现有“原始信号 + 策略共振”可以视为第一套策略:共振策略。

    新增打板策略时,不建议把打板信号塞进共振池。更好的方式是:

    • 共振策略保留自己的信号池和共振池。
    • 打板策略新增自己的前池、观察池、触发池。
    • 两个策略最终都输出统一的交易意图。
    • 统一策略协调器负责去重、仲裁、风控、额度控制,再写入订单队列。

    并行流程图

    flowchart TD
        subgraph R["共振策略"]
            R1["量化云原始信号"] --> R2["信号清洗/去重<br/>proc_signal_listener"]
            R2 --> R3["原始信号池<br/>raw_signals / cleaned_signals"]
            R3 --> R4["共振候选池<br/>resonance_detailed"]
            R4 --> R5["共振策略判断<br/>共振次数/积分/概念过滤/档位"]
            R5 --> R6["共振交易意图<br/>strategy_intents"]
        end
    
        subgraph L["打板策略"]
            L1["打板候选来源<br/>涨幅榜/昨日涨停/竞价强/手动池/共振候选"]
            L1 --> L2["打板前池<br/>limit_up_pre_pool"]
            L2 --> L3["基础过滤<br/>价格/市值/ST/新股/流动性/黑名单"]
            L3 --> L4["打板观察池<br/>limit_up_watch_pool"]
            L4 --> L5["实时盯板<br/>接近涨停/封板/炸板/回封/封单变化"]
            L5 --> L6["打板触发池<br/>limit_up_triggered"]
            L6 --> L7["打板策略判断<br/>封板强度/回封速度/炸板次数/时间窗口"]
            L7 --> L8["打板交易意图<br/>strategy_intents"]
        end
    
        R6 --> C["统一策略协调器<br/>proc_strategy_router"]
        L8 --> C
    
        C --> C1["同票去重"]
        C1 --> C2["策略优先级仲裁"]
        C2 --> C3["统一风控<br/>黑名单/价格/市值/涨幅/仓位"]
        C3 --> C4["额度控制<br/>单策略限额/总买入次数/资金预算"]
        C4 --> O["订单队列<br/>order_queue"]
        O --> E["执行引擎<br/>proc_execution_engine"]
        E --> T["同花顺交易"]

    两套策略对比

    阶段共振策略打板策略
    数据来源量化云原始信号涨幅榜、昨日涨停、竞价强、手动池、共振候选
    前池raw_signals / cleaned_signalslimit_up_pre_pool
    策略池resonance_detailedlimit_up_watch_pool
    触发池共振次数/积分达标limit_up_triggered
    判断重点多源共振、权重积分、概念强度封板强度、炸板回封、封单、时间窗口
    输出strategy_intentsstrategy_intents
    下单协调proc_strategy_routerproc_strategy_router

    WebUI 展示建议

    策略观察区
    ├── 共振策略
    │   ├── 原始信号
    │   └── 策略共振
    │
    ├── 打板策略
    │   ├── 打板前池
    │   ├── 打板观察
    │   └── 打板触发
    │
    └── 统一交易意图
        ├── 待仲裁
        ├── 已通过
        └── 已下单

    关键原则

    共振策略和打板策略各有自己的池;
    只有最终交易意图进入统一协调器。

    这样做的好处:

    • 不污染现有共振池语义。
    • 打板策略可以拥有独立的高频观察逻辑。
    • WebUI 可以横向对比不同策略状态。
    • 多策略同时命中同一只股票时,由统一协调器仲裁。
    • 后续添加第三个策略时,不需要再改执行引擎。

    建议新增模块

    模块作用
    proc_limit_up_strategy.py打板策略引擎,维护打板前池、观察池、触发池
    proc_strategy_router.py多策略统一协调器,负责去重、优先级、风控、额度
    strategy_intentsRedis 统一交易意图池
    limit_up_pre_pool打板前池
    limit_up_watch_pool打板观察池
    limit_up_triggered打板触发池
    limit_up_detailedWebUI 打板策略详情展示

    统一交易意图示例

    共振策略输出:

    {
      "strategy_id": "resonance_v1",
      "strategy_type": "resonance",
      "symbol": "002170",
      "side": "buy",
      "intent": "open",
      "priority": 10,
      "score": 4.8,
      "suggested_amount": 100,
      "reason": "多源共振,积分达基础档",
      "tags": ["共振", "T+1量化", "强势"],
      "raw": {}
    }

    打板策略输出:

    {
      "strategy_id": "limit_up_v1",
      "strategy_type": "limit_up",
      "symbol": "600388",
      "side": "buy",
      "intent": "open",
      "priority": 12,
      "score": 87,
      "suggested_amount": 100,
      "reason": "首次封板,回封强,封单充足",
      "tags": ["打板", "首板", "回封"],
      "raw": {
        "seal_amount": 83000000,
        "open_board_count": 1,
        "first_seal_time": "09:42:16",
        "last_reseal_time": "09:48:03"
      }
    }

    接入顺序建议

    第一阶段:先可视化和最小接入。

    1. 新增 proc_limit_up_strategy.py
    2. 新增 limit_up_pre_pool / limit_up_watch_pool / limit_up_triggered / limit_up_detailed
    3. WebUI 增加打板策略展示区
    4. 打板策略先只输出观察和触发,不急着实盘下单

    第二阶段:加入统一协调器。

    1. 新增 strategy_intents
    2. 新增 proc_strategy_router.py
    3. 共振策略和打板策略都只提交交易意图
    4. router 统一决定是否写入 order_queue

    第三阶段:实盘运行。

    1. 配置每个策略的 enabled / priority / max_daily_buys / buy_amount
    2. 打开打板策略下单开关
    3. 观察同票冲突、资金占用、下单延迟
    4. 再逐步优化打板评分模型
  • ostaer_summar
    #1

    同一只股票同时被多个策略命中时,更推荐合并成一笔订单并按比例归属,还是选一个主策略负责持仓和退出、其他策略只保留命中标签?这部分会直接影响后续卖出规则和策略收益统计。

  • niulai
    #2

    @ostaer_summar #1 多个策略命中的时候属于共振,的确是要只算一笔委托。
    精细化的做法是给每个策略设置分值,共振的时候加起来的分值,按分值的比例买入。
    比如竞价多头5分,阿尔法6分,T+1是3分(只是打个比方)

  • abner-hoo
    #3

    标记一处地点📍

发表回复

登录后回复