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

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

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

340 行
18 KiB
Markdown
原始文件 Blame 文件历史

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# 信号系统完整流程图
> 返回:[Wiki 主索引](../README.md)
> 相关文档:[tradehk 信号评分引擎](../tradehk/信号评分引擎.md)
## 概述
本文档用流程图和文字说明 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
```
## 相关文档
- [tradehk 信号评分引擎](../tradehk/信号评分引擎.md) — 评分机制详细说明
- [tradehk EWO转换检测机制](../tradehk/EWO转换检测机制.md) — 检测逻辑详细说明
- [tradehk 大周期偏向判定](../tradehk/大周期偏向判定.md) — 过滤机制详细说明
- [EWO 阈值过滤完整流程](../../12_信号系统优化/EWO阈值过滤完整落地流程.md) — 优化方案