文件
quantKonwledge/wiki/tradehk/系统架构总览.md
Manus Quant Agent baf10a9e91 feat: 新增 tradehk 专属 Wiki 文档体系(10个文档)
- 系统架构总览:技术栈、目录结构、数据流向
- 指标引擎详解:16个指标完整原理与参数(含源码行号)
- 信号评分引擎:多指标共振评分机制、动态阈值、案例分析
- 大周期偏向判定:assessBigTimeframeBias 完整说明
- EWO转换检测机制:evaluateEwoTurnForUser 逐步流程
- 飞书通知格式规范:三类通知完整格式模板
- 类型系统参考:所有 TypeScript 类型完整文档
- 数据库与存储:MySQL 表结构、缓存机制、维护指南
- 部署运维指南:Docker Compose、Nginx、飞书配置
- 开发历史与TODO:功能状态表、优先级路线图
- 优化建议汇总:9项优化建议含源码位置和预期效果
2026-03-05 23:14:31 -05:00

131 行
4.7 KiB
Markdown
原始文件 Blame 文件历史

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# tradehk 系统架构总览
> 返回:[tradehk 文档中心](./README.md)
## 技术栈
| 层次 | 技术 | 说明 |
|------|------|------|
| 前端框架 | React + TypeScript + Vite | 单页应用,实时更新 |
| UI 组件 | TailwindCSS + shadcn/ui | 深色专业交易终端风格 |
| 图表库 | lightweight-charts | TradingView 同款 K 线图库 |
| 后端框架 | Node.js + tRPC | 类型安全的 API 层 |
| 数据库 | MySQLDrizzle ORM | 信号持久化、用户配置 |
| 实时数据 | Binance WebSocket + REST API | K 线、行情、账户数据 |
| 通知推送 | 飞书 WebhookLark | EWO 转换通知、信号通知 |
| 部署 | Docker Compose + Nginx | Node.js + MySQL + 反向代理 |
| 字体 | JetBrains Mono + Inter | 数字等宽字体 + 界面字体 |
## 目录结构
```
tradehk/
├── client/ # 前端代码
│ └── src/
│ ├── lib/
│ │ ├── indicators.ts # ★ 核心:所有技术指标计算 + 信号引擎
│ │ ├── types.ts # ★ 核心:所有 TypeScript 类型定义
│ │ ├── binanceApi.ts # Binance API 封装(前端)
│ │ ├── tradeService.ts # 交易服务(下单、持仓管理)
│ │ └── store.ts # 全局状态管理
│ ├── components/ # UI 组件
│ └── pages/ # 页面Home、Login、NotFound
├── server/
│ ├── _core/
│ │ ├── marketEngine.ts # ★ 核心市场引擎轮询、信号、EWO通知
│ │ ├── marketData.ts # Binance API 封装(服务端)
│ │ ├── notification.ts # 通知服务基础层
│ │ ├── lark.ts # 飞书 Webhook 推送
│ │ └── dataApi.ts # 数据 API 路由
│ ├── db.ts # 数据库操作层
│ └── storage.ts # 存储抽象层
├── shared/
│ └── types.ts # 共享类型(数据库 schema 导出)
├── drizzle/
│ ├── schema.ts # ★ 数据库表结构定义
│ └── *.sql # 迁移文件
├── deploy/
│ ├── deploy.sh # 一键部署脚本
│ ├── nginx.conf # Nginx 反向代理配置
│ └── mysql/my.cnf # MySQL 配置
└── docker-compose.yml # 生产环境容器编排
```
## 数据流向
### 1. 实时行情流(前端)
```
Binance WebSocket
↓ 订阅 K 线流kline_10m 等)
useMarketData Hook
↓ 更新 K 线缓存最新300根
K 线图组件lightweight-charts
↓ 同步渲染
指标子图EWO / MACD / AO / RSI 等)
```
### 2. 信号检测流(服务端)
```
setInterval每30秒,可配置 MARKET_ENGINE_POLL_MS
buildUserRuntimeConfigs() ← 从 MySQL 读取用户配置和监控列表
refreshCacheForPairs() ← 从 Binance REST API 拉取最新220根K线
evaluateSignalsForUser() ← 调用 generateSignal() 计算信号
hasSignalRecord() ← 去重检查(同币同方向同时间戳)
saveSignal() ← 持久化到 MySQL signals 表
maybePushSignalLark() ← 频控后推送飞书通知
```
### 3. EWO 转换检测流(服务端)
```
每次引擎轮询
evaluateEwoTurnForUser()
取最后两根已收线K线的 EWO 值
比较颜色red/green是否发生变化
计算上一阶段持续时间和K线根数
consumeSharedEwoTurnDedupeSlot() ← 去重(同币同方向同时间戳只推一次)
pushLarkWebhookMessage() ← 推送飞书通知
```
## 关键配置参数
| 参数 | 默认值 | 说明 |
|------|--------|------|
| `MARKET_ENGINE_POLL_MS` | 30000 | 引擎轮询间隔毫秒,最小10秒 |
| `MARKET_SUMMARY_INTERVAL_HOURS` | 4 | 定期汇总推送间隔(小时) |
| `CACHE_CANDLE_LIMIT` | 300 | 每对缓存K线数量上限 |
| `DEFAULT_SYMBOL_INTERVAL` | 10m | 默认K线周期 |
| `signalLarkThrottleMinutes` | 10 | 信号推送频控(分钟) |
## 设计风格
tradehk 采用**精英深色仪表盘**风格Elite Dark Dashboard
- **主背景**`#0A0E17`(深海蓝黑)
- **主色调**`#F0B90B`Binance 黄金)
- **涨势色**`#0ECB81`(清新绿)
- **跌势色**`#F6465D`(警示红)
- **数字字体**JetBrains Mono等宽,确保对齐
- **界面字体**Inter清晰易读
## 相关文档
- [指标引擎详解](./指标引擎详解.md)
- [信号评分引擎](./信号评分引擎.md)
- [EWO转换检测机制](./EWO转换检测机制.md)
- [部署运维指南](./部署运维指南.md)