文件
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

15 KiB
原始文件 Blame 文件历史

tradehk 信号评分引擎

返回:tradehk 文档中心 源函数: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

{
  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 阈值过滤完整流程

关键设计决策

为什么 EWO 穿越给 +2 而不是 +1?

EWO 是 tradehk 的核心指标,代表中短期动量的根本转变。穿越零轴意味着 EMA5 和 EMA35 的关系发生逆转,是趋势转换的重要信号,因此权重高于其他指标。

为什么动态阈值?

固定阈值在只开 2 个指标时太难触发,开 6 个指标时又太容易触发。动态阈值确保无论用户开了多少指标,信号质量保持一致。

为什么 ADX > 25 才计算 DMI?

ADX < 25 表示市场处于震荡状态,DMI 的 +DI/-DI 交叉在震荡市中产生大量假信号。只在强趋势ADX > 25时才使用 DMI,可以显著提高信号质量。

相关文档


附录:数据说明与补充

本附录旨在对信号评分引擎中涉及的关键指标、数据结构及核心概念进行详细阐述,以提升文档的完整性与专业性。内容涵盖了计算公式、应用场景、参数参考、数据格式规范、内部链接及常见误区,旨在帮助使用者更深刻地理解并有效运用该评分系统。

一、核心指标深度解析

信号评分引擎的有效性建立在对多个技术指标的综合运用之上。下表详细说明了各核心指标的计算方法、数据特性及数据来源,为策略的精细化调整与二次开发提供依据。

指标名称 计算公式 (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排列SuperTrend)同时指向同一方向时,才接受入场信号,有效过滤掉由单一指标在震荡行情中产生的毛刺信号。
    2. 动量增强识别对于突破策略,可以将“强信号”STRONG作为核心入场条件。例如,当价格突破关键阻力位时,若同时获得 STRONG BUY 信号,表明突破动能充足,成功率更高。
  • 动态强度阈值

    1. 策略回测与最优化:在进行参数优化时,研究员可以增减可选指标组合,动态阈值机制能够确保不同组合下的信号强度具有可比性,从而更客观地评估不同指标对策略的贡献度。
    2. 用户自定义策略面板:在提供给终端用户的交易仪表盘中,允许用户根据个人偏好启用或禁用某些指标。动态阈值可以自动适配用户的选择,确保信号质量的稳定性,避免因用户误操作导致信号泛滥或枯竭。
  • ADX > 25 的 DMI 应用

    1. 趋势/震荡市识别:构建一个市场状态分类器,当 ADX 低于25时,启用网格交易或均值回归策略;当 ADX 高于25时,则切换至趋势跟踪策略,并使用 DMI 的金叉/死叉作为主要入场依据。
    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线 数组,其中每个 Candle 对象应遵循以下格式:

    {
      "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) 函数成功执行后返回的信号对象,其结构定义如下:

    {
      "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线 上同时发出了强烈的看涨或看跌信号,这通常意味着一个显著的技术事件发生。它应该被视为一个高质量的“关注”或“入场考虑”点,但最终的交易决策还需结合仓位管理、风险报酬比以及大周期偏向判定来综合判断。

  2. 误区WEAK信号没有交易价值。 正确理解:弱信号虽然不适合作为主要的开仓依据,但它可以作为仓位调整和风险管理的有效工具。例如,在持有多头仓位时,若连续出现 WEAK SELL 信号,可能预示着上涨动能正在衰减,应考虑部分止盈或将止损位上移。反之,在空头趋势中出现 WEAK BUY 信号,可作为潜在的回调结束、趋势延续的信号。

  3. 误区:指标参数使用默认值即可。 正确理解:默认参数(如 MACD 的 12, 26, 9是基于传统日线级别市场统计得出的,具有广泛适用性,但不一定对所有交易品种和时间周期都是最优的。例如,对于波动性极高的新兴加密资产或在1分钟这样的超短周期上,可能需要更短的参数来提高指标的灵敏度。专业的量化交易者应对核心策略所涉及的品种和周期进行参数回测与优化,以找到最适合当前市场的参数组合。

  4. 误区:信号一旦生成,就应立即执行。 正确理解generateSignal 函数是在每根 K 线收线时进行计算的。信号的生成点是确定的,但执行点可以根据策略进行优化。例如,对于突破信号,可以等待价格小幅回调至突破位附近再入场,以获得更好的风险报酬比。对于趋势信号,可以结合盘口深度或订单流数据,选择在流动性较好的时机执行,以减少滑点成本。

  5. 误区:可以完全依赖评分引擎,无需人工干预。 正确理解:任何自动化交易系统都是基于历史数据的统计规律构建的,无法预见所有未来的市场极端情况(如“黑天鹅”事件)。该评分引擎是一个强大的决策辅助工具,而非全自动“印钞机”。建议将其作为半自动交易系统的核心,由交易员对 STRONG 级别的信号进行二次确认,并结合宏观经济日历、市场情绪等非结构化数据进行最终决策,实现人机结合的最佳效果。