文件
quantKonwledge/wiki/tradehk/EWO转换检测机制.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

11 KiB
原始文件 Blame 文件历史

tradehk EWO 转换检测机制

返回:tradehk 文档中心 源函数:evaluateEwoTurnForUser()server/_core/marketEngine.ts 第 611-700 行

概述

EWO 转换检测是 tradehk 最核心的通知功能。当 EWO 指标发生颜色转换(红→绿或绿→红)时,系统会自动检测并通过飞书 Webhook 推送通知。

触发条件

EWO 颜色定义:

  • 绿色(多头)EWO 值 >= 0
  • 红色(空头)EWO 值 < 0

转换方向:

  • red_to_greenEWO 由负转正(空头转多头)
  • green_to_redEWO 由正转负(多头转空头)

检测流程(逐步说明)

第一步:获取已收线的 K 线

取最后两根已收线 K 线的索引:
- lastClosedIndex最新已收线 K 线
- prevClosedIndex倒数第二根已收线 K 线

"已收线"判断candle.time + intervalSeconds <= nowSeconds

为什么只用已收线?

未收线的 K 线 EWO 值会随价格变化而变化,使用未收线数据会导致大量假通知。tradehk 严格使用已收线确认,确保通知的可靠性。

第二步:计算 EWO 值

对截至 lastClosedIndex 的所有 K 线计算 EWO 序列
ewoPrev = ewoSeries[prevClosedIndex]
ewoNow  = ewoSeries[lastClosedIndex]

第三步:判断颜色是否转换

prevColor = ewoPrev >= 0 ? "green" : "red"
nowColor  = ewoNow  >= 0 ? "green" : "red"

如果 prevColor === nowColor → 无转换,跳过

第四步:计算上一阶段持续时间

prevClosedIndex 向前遍历,找到上一阶段(同颜色)的起始点:

runStartIndex = prevClosedIndex
向前遍历:
  if ewoSeries[i] 颜色 === prevColor → runStartIndex = i
  else → 停止

runStartTs = candles[runStartIndex].time × 1000
runEndTs   = candles[prevClosedIndex].time × 1000 + intervalMs
runCandles = prevClosedIndex - runStartIndex + 1
runDurationMs = max(intervalMs, runEndTs - runStartTs)

第五步:去重检查

dedupeKey = "ewo_turn:{symbol}:{interval}:{direction}:{transitionBucketTs}"

consumeSharedEwoTurnDedupeSlot(dedupeKey, transitionBucketTs)
→ 同一根K线的同方向转换只推送一次

去重的必要性引擎每30秒轮询一次,同一根K线可能被检测多次,去重确保每次转换只通知一次。

第六步:构建并推送通知

通知内容格式(以实际案例为例):

标题EWO转换提醒 BTC/10m EWO 红 -> 绿

内容:
触发规则: EWO 红 -> 绿
币对: BTC/10m
转换确认: 已收线确认
转换收线: 2026/03/06 10:10:00 (Asia/Shanghai)
EWO: -29.048617 -> 33.320837
上一阶段: 红(空头)
持续: 4小时30分钟 (27根10mK)
区间: 2026/03/06 05:30:00 ~ 2026/03/06 10:00:00
当前: 绿(多头)

通知字段说明

字段 说明 示例
触发规则 转换方向 EWO 红 -> 绿
币对 交易对/周期 BTC/10m
转换确认 确认方式 已收线确认
转换收线 触发转换的K线收线时间 2026/03/06 10:10:00
EWO 前值 → 当前值 -29.048617 -> 33.320837
上一阶段 转换前的颜色和含义 红(空头)
持续 上一阶段持续时间和K线数 4小时30分钟 (27根10mK)
区间 上一阶段的时间范围 05:30 ~ 10:00
当前 转换后的颜色和含义 绿(多头)

默认监控规则

系统默认对以下 5 个币对的 10m 周期监控 red_to_green 方向:

const DEFAULT_EWO_RULE_SYMBOLS = [
  "BTCUSDT", "ETHUSDT", "BNBUSDT", "SOLUSDT", "DOGEUSDT"
]

用户可在设置中自定义规则(币对、周期、方向)。

规则配置结构

interface EwoTurnAlertRule {
  id: string;
  enabled: boolean;
  symbol: string;           // 如 "BTCUSDT"
  interval: TimeInterval;   // 如 "10m"
  direction: EwoTurnDirection; // "red_to_green" | "green_to_red"
}

与信号通知的区别

对比项 EWO 转换通知 信号通知
触发条件 EWO 颜色转换(已收线) 多指标评分超过阈值
通知模式 始终推送larkWebhookEnabled=true 需要 larkSignalNotifyMode="all_signals"
频控 去重(同转换只推一次) 频控同币同方向最短N分钟
信息量 包含持续时间、区间等上下文 包含评分原因列表
适用场景 趋势转换的早期预警 多指标共振的入场信号

已知问题与优化建议

问题:无法区分强弱穿越

当前系统对 BTCEWO 穿越幅度 62.37)和 SOL穿越幅度 0.044)发出完全相同格式的通知,没有质量评级。

优化方案:在通知中加入穿越强度评级(强/中/弱),或对微弱穿越添加警告标记。

详见:→ EWO 阈值过滤完整流程

问题:通知无法区分市场环境

EWO 红→绿在大周期空头环境中可能是假反弹,但通知不包含大周期偏向信息。

优化方案:在通知中加入 4h 大周期 EWO 方向,帮助用户快速判断信号可靠性。

相关文档


附录:数据说明与补充

本附录旨在对 EWO 转换检测机制中的关键概念、数据结构及实际应用进行详细阐述,以帮助用户更深入地理解并有效利用此功能。

一、核心指标详解

1. EWO (Elliott Wave Oscillator)

EWO 是衡量市场动量的核心指标,其数值反映了短期趋势与中期趋势之间的关系,常用于辅助判断趋势的强度和潜在的转折点。

  • 计算公式EWO 的计算基于两个不同周期的简单移动平均线 (SMA) 的差值。具体公式如下:

    EWO = SMA(Close, n_{short}) - SMA(Close, n_{long})
    

    在常见的配置中,短周期 n_short 通常取 5,长周期 n_long 通常取 35。tradehk 系统同样遵循此经典设置。

  • 数据范围:理论上无上下界,其数值范围取决于具体币对的价格波动幅度。对于高价币对(如 BTC,EWO 绝对值可能达到数千甚至数万;对于低价币对,其绝对值可能很小。

  • 单位:与币对的计价货币单位相同,例如,对于 BTC/USDT,EWO 的单位是 USDT。

  • 精度要求:为捕捉微小变化,系统计算和展示 EWO 值时,通常保留 6-8 位小数。

  • 数据来源EWO 值是基于从交易所获取的 K线 收盘价 (Close) 计算得出的,属于衍生数据。

2. K线 (Candlestick)

K线是承载市场价格信息的基础单元,EWO 的所有计算都源于 K线数据。

  • 数据来源:由中心化交易所(如 Binance, Bybit通过其 API 提供实时的或历史的 K 线数据。

  • 数据格式规范:系统内部处理 K 线数据时,通常采用 JSON 对象数组的形式。每个对象代表一根 K 线,其标准格式如下:

    {
      "time": 1678096200,      // K线开盘时间的 Unix 时间戳 (秒)
      "open": 22350.1,        // 开盘价 (Number)
      "high": 22365.8,        // 最高价 (Number)
      "low": 22345.0,         // 最低价 (Number)
      "close": 22360.5,       // 收盘价 (Number)
      "volume": 150.75        // 成交量 (Number)
    }
    

二、实际应用场景

EWO 转换信号在量化交易中具有多样化的应用,交易者应结合其他分析工具进行综合判断。

  1. 趋势反转早期预警:这是 EWO 转换最直接的应用。当一个币对在经历长期的下跌EWO 持续为负)后,首次出现 red_to_green 的转换,可能预示着下跌动能衰竭,多头 力量开始积聚。交易者可将此信号视为一个潜在的左侧或右侧入场观察点,并结合价格行为(如是否突破关键阻力位)来确认交易。

  2. 动量增强与趋势确认在已有的趋势判断基础上,EWO 转换可以作为强有力的确认信号。例如,某策略基于均线金叉产生了一个多头信号,但交易者希望等待市场动量配合。此时,若稍后出现 red_to_green 的 EWO 转换,则证明短期动量已与中期趋势方向一致,从而增强了原始信号的可靠性,可作为加仓或确认入场的依据。

  3. 识别市场情绪转变EWO 的正负状态可以被视为市场情绪的晴雨表。持续的绿色EWO > 0代表市场处于乐观或贪婪状态,而持续的红色EWO < 0则代表悲观或恐惧。EWO 的转换标志着市场主流情绪的根本性转变,有助于交易者调整其整体持仓偏向,例如从空头主导转向多头主导的策略集。

三、参数参考表

用户可在 tradehk 系统中自定义 EWO 转换的监控规则。以下是核心配置参数的说明与建议值。

参数 说明 推荐值 取值范围
symbol 监控的交易对 BTCUSDT, ETHUSDT 交易所支持的任何有效币对
interval K线的时间周期 10m, 15m 1m, 5m, 10m, 15m, 30m, 1h, 4h, 1d 等标准周期
direction 监控的转换方向 red_to_green red_to_green (空转多), green_to_red (多转空)

四、常见误区与正确理解

  1. 误区EWO 转换是精确的买卖点 正确理解EWO 转换是一个动量信号,而非精确的时机信号。它标志着动量方向的改变,但价格的最终反转可能滞后或提前。将它作为唯一的开仓依据风险极高,必须结合价格结构、支撑阻力位或其他指标进行综合判断。

  2. 误区:所有 EWO 转换信号都值得关注 正确理解信号的“质量”至关重要。在窄幅震荡行情中,EWO 可能频繁在 0 轴附近穿越,产生大量低质量的“毛刺”信号。有效的信号通常伴随着穿越 0 轴时 EWO 数值的显著变化,并且发生在关键的市场结构位置。

  3. 误区:忽略大周期背景 正确理解:小周期(如 10m的 EWO red_to_green 转换,如果发生在一个大的下跌趋势(如 4h 周期 EWO 仍为深度负值)中,极有可能是一次短暂的反弹而非趋势反转。因此,必须遵循“顺大势、逆小势”的原则,参考 大周期偏向判定 来过滤掉逆势的 EWO 转换信号。

  4. 误区EWO 数值越大越好 正确理解:极高的 EWO 数值(远离 0 轴通常表示趋势已经进入末期,市场处于超买或超卖状态。此时虽然动能强劲,但也预示着回调或反转的风险正在积聚。因此,EWO 的绝对值大小需要辩证看待,而非简单地认为越大越好。

  5. 误区:只看 EWO,不看价格 正确理解:技术分析的核心是价格行为,指标永远是辅助。一个常见的陷阱是出现“指标背离”时盲目交易。例如,价格创出新高而 EWO 未能创出新高(顶背离),这仅是一个警示信号,不构成直接的做空理由。必须等待价格行为的确认,如跌破关键的上升趋势线或支撑位。