文件
quantKonwledge/wiki/tradehk/信号评分引擎.md
Manus Quant Agent 790c0eaa0a feat: 全面优化迭代所有文档 - 增加数据说明+计算公式+名词解释+内部链接
变更统计:
- 70个文件变更 (39个新增 + 31个修改)
- 新增 6554 行内容

优化内容:
1. 30个核心文档增加附录(数据说明/计算公式/参数表/使用场景/常见误区)
   - 第一批: 量化基础/技术指标/策略/信号/品种/数据流/回测/风控/链上/EWO
   - 第二批: AI/案例复盘/多Agent/Hyperliquid/KOL/期权/RWA/券商/BTC/主流币
   - 第三批: ETH/SOL/BNB_DOGE/XAUT/代币化美股/信号优化/tradehk系统
2. 新增38个名词解释wiki条目(Delta对冲/Gamma/Theta/Vega/IV/VaR/CVaR等)
3. 更新全局术语表索引(79个术语/12大类/知识图谱/学习路径)
4. 新增内部链接体系(wiki式交叉引用)
2026-03-06 05:09:34 -05:00

280 行
15 KiB
Markdown
原始文件 Blame 文件历史

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# tradehk 信号评分引擎
> 返回:[tradehk 文档中心](./README.md)
> 源函数:`generateSignal()` — `client/src/lib/indicators.ts` 第 454-747 行
## 概述
`generateSignal` 是 tradehk 的核心信号生成函数。它采用**多指标共振评分机制**:对每根已收线的 K 线,计算各指标的多空得分,根据总分判断信号类型BUY/SELL/NEUTRAL和强度STRONG/MODERATE/WEAK
## 函数签名
```
generateSignal(
candles: Candle[], // K线数组至少需要35根
symbol: string, // 交易对(如 "BTCUSDT"
interval: TimeInterval, // 时间周期(如 "10m"
params?: IndicatorParams // 可选指标参数
) → TradingSignal | null
```
## 评分机制
### 常开指标评分表
| 指标 | 触发条件 | 分值 | 方向 |
|------|---------|------|------|
| EWO | 上穿零轴(红→绿) | +2 | 多头 |
| EWO | 下穿零轴(绿→红) | +2 | 空头 |
| EWO | 在零轴上方(未穿越) | +1 | 多头 |
| EWO | 在零轴下方(未穿越) | +1 | 空头 |
| MACD | 金叉MACD上穿信号线 | +2 | 多头 |
| MACD | 死叉MACD下穿信号线 | +2 | 空头 |
| MACD柱 | 柱状图>0且扩大 | +1 | 多头 |
| MACD柱 | 柱状图<0且扩大 | +1 | 空头 |
| AO | 上穿零轴 | +1 | 多头 |
| AO | 下穿零轴 | +1 | 空头 |
| MA排列 | 价格>MA10>MA100 | +1 | 多头 |
| MA排列 | 价格<MA10<MA100 | +1 | 空头 |
**常开指标最高可得分**:多头最高 7 分EWO穿越2 + MACD金叉2 + MACD柱1 + AO穿越1 + MA排列1
### 可选指标评分表
| 指标 | 触发条件 | 分值 | 方向 | 开关 |
|------|---------|------|------|------|
| RSI | RSI < 超卖线默认30 | +1 | 多头 | signalUseRsi |
| RSI | RSI > 超买线默认70 | +1 | 空头 | signalUseRsi |
| RSI | 从超卖区回升穿越30 | +1 | 多头 | signalUseRsi |
| RSI | 从超买区回落穿越70 | +1 | 空头 | signalUseRsi |
| KDJ | 低位金叉K<30时K上穿D | +2 | 多头 | signalUseKdj |
| KDJ | 普通金叉 | +1 | 多头 | signalUseKdj |
| KDJ | 高位死叉K>70时K下穿D | +2 | 空头 | signalUseKdj |
| KDJ | 普通死叉 | +1 | 空头 | signalUseKdj |
| Stoch | K<20且D<20 | +1 | 多头 | signalUseStoch |
| Stoch | K>80且D>80 | +1 | 空头 | signalUseStoch |
| 布林带 | 价格触及下轨 | +1 | 多头 | signalUseBollinger |
| 布林带 | 价格触及上轨 | +1 | 空头 | signalUseBollinger |
| SuperTrend | 方向由空转多 | +2 | 多头 | signalUseSuperTrend |
| SuperTrend | 多头趋势中 | +1 | 多头 | signalUseSuperTrend |
| SuperTrend | 方向由多转空 | +2 | 空头 | signalUseSuperTrend |
| SuperTrend | 空头趋势中 | +1 | 空头 | signalUseSuperTrend |
| DMI/ADX | ADX>25时+DI上穿-DI | +2 | 多头 | signalUseDmi |
| DMI/ADX | ADX>25时+DI>-DI | +1 | 多头 | signalUseDmi |
| DMI/ADX | ADX>25时-DI上穿+DI | +2 | 空头 | signalUseDmi |
| DMI/ADX | ADX>25时-DI>+DI | +1 | 空头 | signalUseDmi |
## 强度判定阈值(动态)
强度阈值根据**已启用的可选指标数量**动态调整,避免指标越多越容易触发强信号:
```
activeOptionalCount = 已启用的可选指标组数0-6
strongThreshold = 5 + floor(activeOptionalCount × 0.5)
moderateThreshold = 3 + floor(activeOptionalCount × 0.3)
```
| 启用可选指标数 | STRONG 阈值 | MODERATE 阈值 |
|--------------|-------------|---------------|
| 0仅常开 | 5 分 | 3 分 |
| 2 个可选 | 6 分 | 3 分 |
| 4 个可选 | 7 分 | 4 分 |
| 6 个可选(全开)| 8 分 | 4 分 |
## 信号类型判定
```
if (bullishCount > bearishCount):
type = BUY
if bullishCount >= strongThreshold: strength = STRONG
elif bullishCount >= moderateThreshold: strength = MODERATE
else: strength = WEAK
elif (bearishCount > bullishCount):
type = SELL
(同上逻辑)
else:
return null多空平衡,不产生信号
```
## 输出结构TradingSignal
```typescript
{
id: string, // nanoid 生成的唯一 ID
timestamp: number, // 信号时间戳(毫秒)
symbol: string, // 交易对
interval: TimeInterval, // K线周期
type: 'BUY' | 'SELL', // 信号方向
strength: 'STRONG' | 'MODERATE' | 'WEAK', // 信号强度
price: number, // 当前收盘价
indicators: { // 当前指标值快照
ma10, ma100, ewo, macd, macdSignal, macdHistogram, ao
},
reasons: string[], // 触发原因列表(中文)
isActive: boolean // 是否活跃
}
```
## 实际案例分析
### 案例2026-03-06 BTC/10m EWO 红→绿
**输入**
- EWO 前值:-29.048617(红色)
- EWO 当前:+33.320837(绿色)
- 假设 MACD 金叉、AO 上穿、MA 多头排列
**评分计算**
```
EWO 穿越:+2bullishCount
MACD 金叉:+2
MACD 柱扩大:+1
AO 上穿:+1
MA 多头排列:+1
bullishCount = 7
```
**强度判定**仅常开指标,strongThreshold=5
```
7 >= 5 → STRONG强信号
```
### 案例2026-03-06 SOL/10m EWO 红→绿
**输入**
- EWO 前值:-0.037316(红色)
- EWO 当前:+0.006745(绿色)
- 穿越幅度极小0.044061
**问题**:当前系统对 BTC穿越幅度62.37)和 SOL穿越幅度0.044)给出**相同的 +2 分**,无法区分信号质量。
**优化方案**:→ [EWO 阈值过滤完整流程](../../12_信号系统优化/EWO阈值过滤完整落地流程.md)
## 关键设计决策
**为什么 EWO 穿越给 +2 而不是 +1?**
EWO 是 tradehk 的核心指标,代表中短期动量的根本转变。穿越零轴意味着 EMA5 和 EMA35 的关系发生逆转,是趋势转换的重要信号,因此权重高于其他指标。
**为什么动态阈值?**
固定阈值在只开 2 个指标时太难触发,开 6 个指标时又太容易触发。动态阈值确保无论用户开了多少指标,信号质量保持一致。
**为什么 ADX > 25 才计算 DMI?**
ADX < 25 表示市场处于震荡状态,DMI 的 +DI/-DI 交叉在震荡市中产生大量假信号。只在强趋势ADX > 25时才使用 DMI,可以显著提高信号质量。
## 相关文档
- [指标引擎详解](./指标引擎详解.md) — 各指标计算原理
- [大周期偏向判定](./大周期偏向判定.md) — 趋势过滤机制
- [EWO转换检测机制](./EWO转换检测机制.md) — EWO 专项通知
- [类型系统参考](./类型系统参考.md) — 完整类型定义
---
## 附录:数据说明与补充
本附录旨在对信号评分引擎中涉及的关键指标、数据结构及核心概念进行详细阐述,以提升文档的完整性与专业性。内容涵盖了计算公式、应用场景、参数参考、数据格式规范、内部链接及常见误区,旨在帮助使用者更深刻地理解并有效运用该评分系统。
### 一、核心指标深度解析
信号评分引擎的有效性建立在对多个技术指标的综合运用之上。下表详细说明了各核心指标的计算方法、数据特性及数据来源,为策略的精细化调整与二次开发提供依据。
| 指标名称 | 计算公式 (LaTeX) | 数据范围 | 单位 | 精度要求 | 数据来源 |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **EWO** | `EMA(close, 5) - EMA(close, 35)` | (-∞, +∞) | 点 | 8位小数 | K线收盘价 `close` |
| **MACD** | `EMA(close, 12) - EMA(close, 26)` | (-∞, +∞) | 点 | 8位小数 | K线收盘价 `close` |
| **AO** | `SMA(median, 5) - SMA(median, 34)` | (-∞, +∞) | 点 | 8位小数 | K线中间价 `(H+L)/2` |
| **MA** | `SMA(close, N)` | (0, +∞) | 点 | 8位小数 | K线收盘价 `close` |
| **RSI** | `100 - (100 / (1 + RS))` | [0, 100] | % | 2位小数 | K线收盘价 `close` |
| **KDJ (K)** | `SMA(RSV, 3)` | [0, 100] | % | 2位小数 | K线 `H`, `L`, `C` |
| **SuperTrend** | `(H+L)/2 ± (Multiplier × ATR)` | (0, +∞) | 点 | 8位小数 | K线 `H`, `L`, `C` |
| **DMI (+DI/-DI)** | `SMA(±DM, 14) / SMA(TR, 14)` | [0, 100] | % | 2位小数 | K线 `H`, `L`, `C` |
*注:`EMA` 为指数移动平均,`SMA` 为简单移动平均,`RS` 为相对强度,`RSV` 为未成熟随机值,`ATR` 为平均真实波幅,`TR` 为真实波幅,`DM` 为动向。*
### 二、核心概念应用场景
理解各知识点在实际量化交易中的应用,是连接理论与实践的桥梁。
- **多指标共振评分机制**
1. **趋势确认过滤**:在趋势跟踪策略中,仅当多个趋势指标(如 [MA排列](../../wiki/名词解释/MA排列.md)、[SuperTrend](../../wiki/名词解释/SuperTrend.md))同时指向同一方向时,才接受入场信号,有效过滤掉由单一指标在震荡行情中产生的毛刺信号。
2. **动量增强识别**对于突破策略,可以将“强信号”STRONG作为核心入场条件。例如,当价格突破关键阻力位时,若同时获得 `STRONG BUY` 信号,表明突破动能充足,成功率更高。
- **动态强度阈值**
1. **策略回测与最优化**:在进行参数优化时,研究员可以增减可选指标组合,动态阈值机制能够确保不同组合下的信号强度具有可比性,从而更客观地评估不同指标对策略的贡献度。
2. **用户自定义策略面板**:在提供给终端用户的交易仪表盘中,允许用户根据个人偏好启用或禁用某些指标。动态阈值可以自动适配用户的选择,确保信号质量的稳定性,避免因用户误操作导致信号泛滥或枯竭。
- **ADX > 25 的 DMI 应用**
1. **趋势/震荡市识别**:构建一个市场状态分类器,当 [ADX](../../wiki/名词解释/ADX.md) 低于25时,启用网格交易或均值回归策略;当 ADX 高于25时,则切换至趋势跟踪策略,并使用 [DMI](../../wiki/名词解释/DMI.md) 的金叉/死叉作为主要入场依据。
2. **趋势末端预警**:在一段由 ADX > 25 确认的强趋势行情中,若 ADX 开始从高位回落并跌破25,即使 +DI 与 -DI 尚未交叉,也可将其视为趋势可能即将结束或进入盘整的预警信号,应考虑减仓或收紧止损。
### 三、可配置参数参考表
系统内置了行业标准的指标参数,但针对不同交易品种和时间周期,进行适当调整可能获得更优效果。下表整理了所有核心指标的可配置参数及其推荐值。
| 指标 | 参数 | 推荐值 | 取值范围 | 说明 |
| :--- | :--- | :--- | :--- | :--- |
| **EWO** | `fast`, `slow` | 5, 35 | 2-200 | 快慢速指数移动平均线周期 |
| **MACD** | `fast`, `slow`, `signal` | 12, 26, 9 | 2-200 | 快、慢速EMA及信号线周期 |
| **MA排列** | `short`, `long` | 10, 100 | 5-400 | 短期与长期均线周期 |
| **RSI** | `period`, `oversold`, `overbought` | 14, 30, 70 | 7-30, 10-40, 60-90 | RSI计算周期及超买超卖阈值 |
| **KDJ** | `n`, `m1`, `m2` | 9, 3, 3 | 5-30 | RSV, K值, D值的计算周期 |
| **SuperTrend** | `period`, `multiplier` | 10, 3 | 7-20, 1.5-5.0 | ATR计算周期和波动率乘数 |
| **DMI/ADX** | `adx`, `di` | 14, 14 | 7-30 | ADX 和 DI 的计算周期 |
| **布林带** | `period`, `stddev` | 20, 2 | 10-50, 1.0-3.0 | 均线周期和标准差倍数 |
### 四、数据格式规范
为确保系统各模块间的数据交互无误,特此明确核心数据对象的结构与格式。
- **K线数据 (`Candle[]`)**
输入给 `generateSignal` 函数的 [K线](../../wiki/名词解释/K线.md) 数组,其中每个 `Candle` 对象应遵循以下格式:
```json
{
"timestamp": 1678086000000, // {number} K线开盘时间的UNIX毫秒时间戳
"open": 22345.67, // {number} 开盘价
"high": 22398.12, // {number} 最高价
"low": 22340.05, // {number} 最低价
"close": 22389.88, // {number} 收盘价
"volume": 1234.567 // {number} 成交量
}
```
- **交易信号 (`TradingSignal`)**
函数成功执行后返回的信号对象,其结构定义如下:
```json
{
"id": "Abc123Xyz",
"timestamp": 1678086600000, // {number} 信号生成时间的UNIX毫秒时间戳
"symbol": "BTCUSDT",
"interval": "10m",
"type": "BUY",
"strength": "STRONG",
"price": 22389.88,
"indicators": { ... },
"reasons": ["EWO上穿零轴", "MACD金叉"],
"isActive": true
}
```
### 五、常见误区与正确理解
1. **误区:信号评分越高,盈利概率越大。**
**正确理解**:信号得分衡量的是**多空技术形态的共振强度**,而非直接的盈利概率。一个 `STRONG` 信号表示多个指标在当前 [K线](../../wiki/名词解释/K线.md) 上同时发出了强烈的看涨或看跌信号,这通常意味着一个显著的技术事件发生。它应该被视为一个高质量的“关注”或“入场考虑”点,但最终的交易决策还需结合仓位管理、风险报酬比以及[大周期偏向判定](../../wiki/tradehk/大周期偏向判定.md)来综合判断。
2. **误区WEAK信号没有交易价值。**
**正确理解**:弱信号虽然不适合作为主要的开仓依据,但它可以作为**仓位调整和风险管理的有效工具**。例如,在持有多头仓位时,若连续出现 `WEAK SELL` 信号,可能预示着上涨动能正在衰减,应考虑部分止盈或将止损位上移。反之,在空头趋势中出现 `WEAK BUY` 信号,可作为潜在的回调结束、趋势延续的信号。
3. **误区:指标参数使用默认值即可。**
**正确理解**:默认参数(如 MACD 的 12, 26, 9是基于传统日线级别市场统计得出的,具有广泛适用性,但不一定对所有交易品种和时间周期都是最优的。例如,对于波动性极高的新兴加密资产或在1分钟这样的超短周期上,可能需要更短的参数来提高指标的灵敏度。专业的量化交易者应对核心策略所涉及的品种和周期进行**参数回测与优化**,以找到最适合当前市场的参数组合。
4. **误区:信号一旦生成,就应立即执行。**
**正确理解**`generateSignal` 函数是在每根 K 线**收线时**进行计算的。信号的生成点是确定的,但执行点可以根据策略进行优化。例如,对于突破信号,可以等待价格小幅回调至突破位附近再入场,以获得更好的风险报酬比。对于趋势信号,可以结合盘口深度或订单流数据,选择在流动性较好的时机执行,以减少滑点成本。
5. **误区:可以完全依赖评分引擎,无需人工干预。**
**正确理解**:任何自动化交易系统都是基于历史数据的统计规律构建的,无法预见所有未来的市场极端情况(如“黑天鹅”事件)。该评分引擎是一个强大的决策**辅助**工具,而非全自动“印钞机”。建议将其作为半自动交易系统的核心,由交易员对 `STRONG` 级别的信号进行二次确认,并结合宏观经济日历、市场情绪等非结构化数据进行最终决策,实现人机结合的最佳效果。