feat: 新增 Wiki 基础理论和流程图解模块
基础理论: - 量化交易入门指南(零基础友好,含学习路径) 流程图解(3个完整流程图): - 信号系统完整流程图(总体/评分/EWO转换/大周期过滤) - 交易策略执行流程(通用流程/EWO决策树/MTF协同/风控) - 数据采集与处理流程(API获取/缓存管理/指标计算/质量检查) 所有内部链接均指向仓库内文档,无外部链接
这个提交包含在:
339
wiki/流程图解/信号系统完整流程图.md
普通文件
339
wiki/流程图解/信号系统完整流程图.md
普通文件
@@ -0,0 +1,339 @@
|
||||
# 信号系统完整流程图
|
||||
|
||||
> 返回:[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) — 优化方案
|
||||
在新工单中引用
屏蔽一个用户