文件
quantKonwledge/wiki/流程图解/信号系统完整流程图.md
Manus Quant Agent e75a2340d9 feat: 新增 Wiki 基础理论和流程图解模块
基础理论:
- 量化交易入门指南(零基础友好,含学习路径)

流程图解(3个完整流程图):
- 信号系统完整流程图(总体/评分/EWO转换/大周期过滤)
- 交易策略执行流程(通用流程/EWO决策树/MTF协同/风控)
- 数据采集与处理流程(API获取/缓存管理/指标计算/质量检查)

所有内部链接均指向仓库内文档,无外部链接
2026-03-05 23:18:29 -05:00

18 KiB

信号系统完整流程图

返回:Wiki 主索引 相关文档:tradehk 信号评分引擎

概述

本文档用流程图和文字说明 tradehk 信号系统从数据获取到通知推送的完整流程,适合快速理解整个系统的工作原理。


一、总体流程

┌─────────────────────────────────────────────────────────────┐
│                    Binance API                               │
│              (REST API / WebSocket)                          │
└──────────────────────┬──────────────────────────────────────┘
                       │ K线数据每30秒轮询 + 实时推送)
                       ▼
┌─────────────────────────────────────────────────────────────┐
│                  内存缓存层                                   │
│  pairCache: Map<"BTCUSDT__10m", {candles[], updatedAt}>     │
│  tickerCache: Map<"BTCUSDT", {price, change24h, volume}>    │
└──────────────────────┬──────────────────────────────────────┘
                       │
          ┌────────────┴────────────┐
          ▼                         ▼
┌─────────────────┐       ┌──────────────────────┐
│  信号检测流程    │       │  EWO转换检测流程       │
│  (每30秒)       │       │  (每30秒)             │
└────────┬────────┘       └──────────┬───────────┘
         │                           │
         ▼                           ▼
┌─────────────────┐       ┌──────────────────────┐
│  generateSignal │       │  evaluateEwoTurn      │
│  (多指标评分)   │       │  (颜色转换检测)        │
└────────┬────────┘       └──────────┬───────────┘
         │                           │
         ▼                           ▼
┌─────────────────┐       ┌──────────────────────┐
│  MySQL 持久化   │       │  去重检查              │
│  (signals 表)   │       │  (dedup slot)         │
└────────┬────────┘       └──────────┬───────────┘
         │                           │
         ▼                           ▼
┌─────────────────┐       ┌──────────────────────┐
│  频控检查        │       │  飞书 Webhook 推送    │
│  (冷却时间)     │       │  (EWO转换通知)        │
└────────┬────────┘       └──────────────────────┘
         │
         ▼
┌─────────────────┐
│  飞书 Webhook   │
│  (信号通知)     │
└─────────────────┘

二、信号评分详细流程

输入:已收线的 K 线数组至少35根
        │
        ▼
┌───────────────────────────────────────┐
│  计算所有指标                          │
│  EWO = EMA(5) - EMA(35)              │
│  MACD = EMA(10) - EMA(20)            │
│  AO = SMA(中间价,5) - SMA(中间价,34) │
│  MA10, MA100                          │
│  RSI(14)(若启用)                    │
│  布林带(若启用)                      │
│  ... 其他可选指标                      │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  多空评分计算                          │
│                                       │
│  bullishCount = 0                     │
│  bearishCount = 0                     │
│                                       │
│  EWO 穿越零轴?                        │
│  ├─ 红→绿 → bullishCount += 2        │
│  ├─ 绿→红 → bearishCount += 2        │
│  ├─ EWO > 0 → bullishCount += 1      │
│  └─ EWO < 0 → bearishCount += 1      │
│                                       │
│  MACD 金叉/死叉?                      │
│  ├─ 金叉 → bullishCount += 2         │
│  ├─ 死叉 → bearishCount += 2         │
│  ├─ 柱>0扩大 → bullishCount += 1     │
│  └─ 柱<0扩大 → bearishCount += 1     │
│                                       │
│  AO 穿越零轴?                         │
│  ├─ 上穿 → bullishCount += 1         │
│  └─ 下穿 → bearishCount += 1         │
│                                       │
│  MA 排列?                             │
│  ├─ 多头排列 → bullishCount += 1      │
│  └─ 空头排列 → bearishCount += 1      │
│                                       │
│  ... 可选指标评分                      │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  计算动态阈值                          │
│  strongThreshold = 5 + floor(可选数×0.5)│
│  moderateThreshold = 3 + floor(可选数×0.3)│
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  判断信号方向                          │
│                                       │
│  bullishCount > bearishCount?        │
│  ├─ 是 → type = BUY                  │
│  │        bullishCount >= strong?    │
│  │        ├─ 是 → STRONG             │
│  │        ├─ >= moderate? → MODERATE │
│  │        └─ 否 → WEAK               │
│  ├─ bearishCount > bullishCount?     │
│  │  └─ 是 → type = SELL同上逻辑  │
│  └─ 相等 → return null无信号      │
└──────────────────┬────────────────────┘
                   │
                   ▼
        输出TradingSignal 或 null

三、EWO 转换检测流程

输入:用户的 EWO 转换规则列表
        │
        ▼
┌───────────────────────────────────────┐
│  按 symbol+interval 分组规则           │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  对每个 symbol+interval             │
│                                       │
│  取最后两根已收线 K 线                 │
│  lastClosedIndex = 最新已收线          │
│  prevClosedIndex = 倒数第二根          │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  计算 EWO 序列                         │
│  ewoPrev = ewoSeries[prevClosedIndex] │
│  ewoNow  = ewoSeries[lastClosedIndex] │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  颜色转换判断                          │
│  prevColor = ewoPrev >= 0 ? 绿 : 红   │
│  nowColor  = ewoNow  >= 0 ? 绿 : 红   │
│                                       │
│  prevColor === nowColor?             │
│  ├─ 是 → 跳过(无转换)               │
│  └─ 否 → 继续                         │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  计算上一阶段持续时间                  │
│  向前遍历找到同颜色起始点              │
│  runStartIndex = 起始 K 线索引         │
│  runCandles = 持续 K 线根数            │
│  runDurationMs = 持续时间(毫秒)      │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  去重检查                              │
│  key = "ewo_turn:{symbol}:{interval}  │
│         :{direction}:{bucketTs}"      │
│                                       │
│  已存在?                              │
│  ├─ 是 → 跳过(已推送过)             │
│  └─ 否 → 继续                         │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  构建通知内容                          │
│  标题EWO转换提醒 BTC/10m EWO 红->绿 │
│  内容:触发规则、币对、转换时间、       │
│        EWO值、持续时间、区间等         │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  推送飞书 Webhook                      │
│  pushLarkWebhookMessage()             │
└───────────────────────────────────────┘

四、大周期偏向过滤流程

小周期信号10m BUY
        │
        ▼
┌───────────────────────────────────────┐
│  大周期偏向过滤开关是否启用?           │
│  trendBias.enabled = true?           │
│  ├─ 否 → 直接使用信号                 │
│  └─ 是 → 继续                         │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  获取大周期 K 线4h 或 12h          │
│  计算 EWO、MACD、AO                   │
│                                       │
│  评分:                               │
│  EWO > 0 → bullish += 2              │
│  MACD > 信号线 → bullish += 1         │
│  柱状图 > 0 → bullish += 1            │
│  AO > 0 → bullish += 1               │
│  (空头方向同理)                      │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  大周期偏向判定                        │
│  bearishScore >= 4 → BEARISH          │
│  bullishScore >= 4 → BULLISH          │
│  其他 → NEUTRAL                       │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  过滤逻辑                              │
│  大周期 BEARISH + 小周期 BUY?         │
│  ├─ 是 → 过滤掉(逆势信号)           │
│  └─ 否 → 保留信号                     │
│                                       │
│  大周期 BULLISH + 小周期 SELL?        │
│  ├─ 是 → 过滤掉(逆势信号)           │
│  └─ 否 → 保留信号                     │
└───────────────────────────────────────┘

五、优化后的 EWO 阈值过滤流程(建议)

EWO 穿越检测
        │
        ▼
┌───────────────────────────────────────┐
│  第一层:绝对值阈值检查                │
│                                       │
│  获取品种阈值:                        │
│  BTC → 15.0                          │
│  ETH → 12.0                          │
│  SOL → 0.5                           │
│  BNB → 10.0                          │
│  DOGE → 0.002                        │
│                                       │
│  |ewoNow - ewoPrev| >= 阈值?         │
│  ├─ 是 → 强力穿越(+2分             │
│  └─ 否 → 微弱穿越(+1分 + ⚠️警告)   │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  第二层:阶段持续时间检查              │
│                                       │
│  上一阶段持续 K 线数:                 │
│  < 5 根 → -1分可能假穿越          │
│  5-19 根 → 不加减分                   │
│  >= 20 根 → +1分充分蓄势          │
└──────────────────┬────────────────────┘
                   │
                   ▼
┌───────────────────────────────────────┐
│  第三层:成交量确认(可选)            │
│                                       │
│  穿越时成交量 > 20日均量?             │
│  ├─ 是 → +1分放量确认             │
│  └─ 否 → 不加分                       │
└───────────────────────────────────────┘

六、数据流向总览

用户(浏览器)
    │ WebSocket 实时推送
    │ REST API 查询
    ▼
Nginx 反向代理(:80/:443
    │
    ▼
Node.js 应用(:3000
    ├── tRPC API 路由
    ├── marketEngine后台定时任务
    │       ├── 每30秒refreshCacheForPairs
    │       │           └── Binance REST API
    │       ├── 每30秒evaluateSignalsForUser
    │       │           └── generateSignal
    │       │               └── MySQL (signals 表)
    │       ├── 每30秒evaluateEwoTurnForUser
    │       │           └── 飞书 Webhook
    │       └── 每4小时buildPeriodicSummaryPayload
    │                   └── 飞书 Webhook
    └── 静态文件服务React 构建产物)
            │
MySQL:3306
    ├── users
    ├── user_settings
    ├── watchlist
    ├── signals
    └── dedup_slots

相关文档