# 主流币信号系统完整落地方案 > **作者**:Manus AI | **版本**:v2.0 | **更新日期**:2026-03-06 > **参考源码**:tradehk `indicators.ts`(第 481 行 EWO 穿越逻辑) > **核心目标**:在 `indicators.ts` 第 481 行附近为 EWO 穿越判断加入品种阈值过滤,消除 SOL/DOGE 类微弱穿越假信号 --- ## 一、为什么需要品种专项优化 EWO(Elliott Wave Oscillator,艾略特波浪振荡器)的计算公式为 `EMA(5) - EMA(35)`,其绝对值与**价格基数**成正比。这导致一个根本性问题: > 同样的"红→绿"转换信号,BTC 的 EWO 变化幅度可能是 `-29 → +33`(绝对变化 62),而 SOL 的变化仅为 `-0.037 → +0.007`(绝对变化 0.044)。两者在现有系统中获得完全相同的 `bullishCount += 2` 评分,但信号质量存在本质差异。 以下表格展示了各主流币在不同周期的 EWO 典型绝对值范围(基于 2025 年实测数据): | 品种 | 价格区间(2025) | 1d EWO 典型范围 | 4h EWO 典型范围 | 1h EWO 典型范围 | 15m EWO 典型范围 | |------|--------------|----------------|----------------|----------------|-----------------| | BTC | $74,500~$126,000 | ±3,000~±8,000 | ±500~±2,000 | ±200~±800 | ±50~±300 | | ETH | $1,400~$4,956 | ±80~±250 | ±15~±60 | ±5~±25 | ±1~±8 | | BNB | $450~$1,369 | ±15~±60 | ±5~±20 | ±2~±8 | ±0.5~±3 | | SOL | $80~$293 | ±3~±15 | ±0.5~±4 | ±0.2~±1.5 | ±0.05~±0.5 | | DOGE | $0.06~$0.48 | ±0.003~±0.015 | ±0.001~±0.005 | ±0.0003~±0.002 | ±0.00005~±0.0005 | | XAUT | $2,600~$3,200 | ±20~±80 | ±5~±25 | ±2~±10 | ±0.5~±3 | --- ## 二、完整落地代码(TypeScript) 以下代码可**直接替换** `indicators.ts` 中相关部分,向后兼容现有 `IndicatorParams` 接口。 ### 2.1 在 `types.ts` 中新增品种配置类型 ```typescript // 在 client/src/lib/types.ts 中新增以下类型定义 /** * 品种专项 EWO 阈值配置 * 用于区分强力穿越(+2分)与微弱穿越(+1分,附带警告) */ export interface SymbolEwoConfig { /** EWO 强力穿越阈值:穿越后 |EWO| 必须大于此值才计为强力穿越(+2分)*/ strongThreshold: Record; /** EWO 最小有效阈值:低于此值的穿越直接忽略(不计分)*/ minValidThreshold: Record; /** 前阶段持续时间奖励阈值:前阶段 K 线数 >= 此值时额外 +1 */ phaseDurationBonus: number; /** 品种说明 */ description: string; } /** * 全局品种 EWO 配置表 * 基于 2025 年实测数据(EWO 绝对值 P25 分位数)校准 */ export const SYMBOL_EWO_CONFIGS: Record = { BTCUSDT: { description: 'BTC - 价格基数最高,EWO 绝对值最大', strongThreshold: { '1m': 50, '3m': 80, '5m': 100, '10m': 150, '15m': 180, '30m': 280, '1h': 390, '4h': 530, '12h': 900, '1d': 1800, '1w': 3500, }, minValidThreshold: { '1m': 10, '3m': 15, '5m': 20, '10m': 30, '15m': 40, '30m': 60, '1h': 80, '4h': 120, '12h': 200, '1d': 400, '1w': 800, }, phaseDurationBonus: 20, }, ETHUSDT: { description: 'ETH - 中等价格基数,波动率高于 BTC', strongThreshold: { '1m': 1.5, '3m': 2.5, '5m': 3.5, '10m': 5.0, '15m': 7.0, '30m': 10, '1h': 15, '4h': 25, '12h': 50, '1d': 100, '1w': 200, }, minValidThreshold: { '1m': 0.3, '3m': 0.5, '5m': 0.8, '10m': 1.0, '15m': 1.5, '30m': 2.5, '1h': 3.5, '4h': 6.0, '12h': 12, '1d': 25, '1w': 50, }, phaseDurationBonus: 18, }, BNBUSDT: { description: 'BNB - 中等价格,跟随 BTC 但有独立行情', strongThreshold: { '1m': 0.5, '3m': 0.8, '5m': 1.2, '10m': 1.8, '15m': 2.5, '30m': 3.5, '1h': 5.0, '4h': 10, '12h': 20, '1d': 40, '1w': 80, }, minValidThreshold: { '1m': 0.1, '3m': 0.15, '5m': 0.25, '10m': 0.35, '15m': 0.5, '30m': 0.8, '1h': 1.2, '4h': 2.5, '12h': 5.0, '1d': 10, '1w': 20, }, phaseDurationBonus: 16, }, SOLUSDT: { description: 'SOL - 价格较低,EWO 绝对值小,最易产生假信号', strongThreshold: { '1m': 0.02, '3m': 0.04, '5m': 0.06, '10m': 0.10, '15m': 0.15,'30m': 0.25,'1h': 0.40, '4h': 0.80, '12h': 1.5, '1d': 3.0, '1w': 6.0, }, minValidThreshold: { '1m': 0.005,'3m': 0.008,'5m': 0.012,'10m': 0.02, '15m': 0.03,'30m': 0.05,'1h': 0.08, '4h': 0.18, '12h': 0.35,'1d': 0.7, '1w': 1.5, }, phaseDurationBonus: 22, // SOL 假信号多,需要更长的前阶段确认 }, DOGEUSDT: { description: 'DOGE - 价格极低($0.06~$0.48),EWO 绝对值极小,需特殊处理', strongThreshold: { '1m': 0.00005,'3m': 0.00008,'5m': 0.00012,'10m': 0.0002, '15m': 0.0003,'30m': 0.0005,'1h': 0.0008, '4h': 0.0015, '12h': 0.003, '1d': 0.006, '1w': 0.012, }, minValidThreshold: { '1m': 0.00001,'3m': 0.00002,'5m': 0.00003,'10m': 0.00005, '15m': 0.00008,'30m': 0.00012,'1h': 0.0002,'4h': 0.0004, '12h': 0.0008,'1d': 0.0015, '1w': 0.003, }, phaseDurationBonus: 25, // DOGE 受市场情绪影响大,需要更长确认 }, XAUTUSDT: { description: 'XAUT - 黄金代币,低波动率,信号频率低', strongThreshold: { '1m': 0.3, '3m': 0.5, '5m': 0.8, '10m': 1.2, '15m': 1.8, '30m': 2.5, '1h': 4.0, '4h': 8.0, '12h': 15, '1d': 30, '1w': 60, }, minValidThreshold: { '1m': 0.06, '3m': 0.1, '5m': 0.15, '10m': 0.25, '15m': 0.4, '30m': 0.6, '1h': 1.0, '4h': 2.0, '12h': 4.0, '1d': 8.0, '1w': 15, }, phaseDurationBonus: 15, }, }; /** * 获取品种 EWO 配置(支持模糊匹配,如 BTC/USDT → BTCUSDT) */ export function getSymbolEwoConfig(symbol: string): SymbolEwoConfig { const normalized = symbol.replace('/', '').toUpperCase(); // 精确匹配 if (SYMBOL_EWO_CONFIGS[normalized]) return SYMBOL_EWO_CONFIGS[normalized]; // 前缀匹配(如 BTCUSDT 匹配 BTC) for (const key of Object.keys(SYMBOL_EWO_CONFIGS)) { if (normalized.startsWith(key.replace('USDT', ''))) return SYMBOL_EWO_CONFIGS[key]; } // 默认配置(通用中等价格品种) return SYMBOL_EWO_CONFIGS['ETHUSDT']; } ``` ### 2.2 修改 `indicators.ts` 中的 EWO 评分逻辑 **修改位置**:`indicators.ts` 第 460-510 行(EWO 评分部分) ```typescript // ============================================================ // 在文件顶部导入新类型(如果 types.ts 在同目录) // ============================================================ import { getSymbolEwoConfig, type TimeInterval } from './types'; // ============================================================ // 新增辅助函数:计算 EWO 前阶段持续时间 // ============================================================ /** * 计算 EWO 在穿越前,上一阶段(正/负)持续了多少根 K 线 * @param ewoArr EWO 数组 * @param crossIdx 穿越发生的索引(当前 K 线) * @returns 前阶段持续 K 线数 */ function countEwoPhaseDuration(ewoArr: number[], crossIdx: number): number { if (crossIdx <= 0) return 0; // 前一根 K 线的符号(即将结束的阶段) const prevSign = ewoArr[crossIdx - 1] >= 0 ? 1 : -1; let count = 0; for (let i = crossIdx - 1; i >= 0; i--) { const sign = ewoArr[i] >= 0 ? 1 : -1; if (sign === prevSign) { count++; } else { break; } } return count; } /** * EWO 穿越质量评估(优化版) * 替换原有的简单正负判断,加入幅度过滤和持续时间奖励 * * @param ewoNow 当前 K 线 EWO 值 * @param ewoPrev 前一根 K 线 EWO 值 * @param ewoArr 完整 EWO 数组(用于计算持续时间) * @param currentIdx 当前 K 线在数组中的索引 * @param symbol 交易对(用于获取品种阈值) * @param interval K 线周期 * @returns { bullishScore, bearishScore, reasons, ewoQuality } */ function assessEwoSignal( ewoNow: number, ewoPrev: number, ewoArr: number[], currentIdx: number, symbol: string, interval: TimeInterval ): { bullishScore: number; bearishScore: number; reasons: string[]; ewoQuality: 'STRONG' | 'WEAK' | 'NONE' } { const config = getSymbolEwoConfig(symbol); const strongThresh = config.strongThreshold[interval] ?? config.strongThreshold['1h']; const minThresh = config.minValidThreshold[interval] ?? config.minValidThreshold['1h']; const phaseBonusThresh = config.phaseDurationBonus; let bullishScore = 0; let bearishScore = 0; const reasons: string[] = []; let ewoQuality: 'STRONG' | 'WEAK' | 'NONE' = 'NONE'; const ewoAbsNow = Math.abs(ewoNow); // ── 情形 1:上穿零轴(红→绿)── if (ewoNow > 0 && ewoPrev <= 0) { if (ewoAbsNow < minThresh) { // 低于最小有效阈值:完全忽略,不计分 reasons.push(`EWO 穿越幅度过小 (${ewoNow.toFixed(6)}) < 最小阈值 ${minThresh},忽略`); ewoQuality = 'NONE'; } else if (ewoAbsNow >= strongThresh) { // 强力穿越:+2 分 bullishScore += 2; ewoQuality = 'STRONG'; reasons.push(`EWO 强力上穿零轴 (${ewoNow.toFixed(4)} ≥ 阈值 ${strongThresh}) [+2]`); // 持续时间奖励 const prevDuration = countEwoPhaseDuration(ewoArr, currentIdx); if (prevDuration >= phaseBonusThresh) { bullishScore += 1; reasons.push(` ↳ 前空头阶段持续 ${prevDuration} 根K线 ≥ ${phaseBonusThresh},反转可信度高 [+1]`); } } else { // 微弱穿越:+1 分,附带警告 bullishScore += 1; ewoQuality = 'WEAK'; reasons.push(`EWO 微弱上穿零轴 (${ewoNow.toFixed(6)}) < 强力阈值 ${strongThresh} ⚠️ 注意假突破 [+1]`); } } // ── 情形 2:下穿零轴(绿→红)── else if (ewoNow < 0 && ewoPrev >= 0) { if (ewoAbsNow < minThresh) { reasons.push(`EWO 穿越幅度过小 (${ewoNow.toFixed(6)}),忽略`); ewoQuality = 'NONE'; } else if (ewoAbsNow >= strongThresh) { bearishScore += 2; ewoQuality = 'STRONG'; reasons.push(`EWO 强力下穿零轴 (${ewoNow.toFixed(4)}) [+2]`); const prevDuration = countEwoPhaseDuration(ewoArr, currentIdx); if (prevDuration >= phaseBonusThresh) { bearishScore += 1; reasons.push(` ↳ 前多头阶段持续 ${prevDuration} 根K线,反转可信度高 [+1]`); } } else { bearishScore += 1; ewoQuality = 'WEAK'; reasons.push(`EWO 微弱下穿零轴 (${ewoNow.toFixed(6)}) ⚠️ [+1]`); } } // ── 情形 3:持续在零轴上方(多头动能延续)── else if (ewoNow > 0) { if (ewoAbsNow >= minThresh) { bullishScore += 1; reasons.push(`EWO 在零轴上方 (${ewoNow.toFixed(4)}) [+1]`); } } // ── 情形 4:持续在零轴下方(空头动能延续)── else if (ewoNow < 0) { if (ewoAbsNow >= minThresh) { bearishScore += 1; reasons.push(`EWO 在零轴下方 (${ewoNow.toFixed(4)}) [+1]`); } } return { bullishScore, bearishScore, reasons, ewoQuality }; } ``` ### 2.3 在 `generateSignal` 函数中替换原有 EWO 评分代码 **原有代码**(第 460-510 行附近,需要替换): ```typescript // ❌ 原有代码(需要删除/替换) // EWO Analysis const ewo = calculateEWO(closes); const ewoNow = ewo[last]; const ewoPrev = ewo[prev]; if (!isNaN(ewoNow) && !isNaN(ewoPrev)) { if (ewoNow > 0 && ewoPrev <= 0) { bullishCount += 2; reasons.push('EWO 上穿零轴(看多)'); } else if (ewoNow < 0 && ewoPrev >= 0) { bearishCount += 2; reasons.push('EWO 下穿零轴(看空)'); } else if (ewoNow > 0) { bullishCount += 1; reasons.push('EWO 在零轴上方(看多)'); } else if (ewoNow < 0) { bearishCount += 1; reasons.push('EWO 在零轴下方(看空)'); } } ``` **替换为**(优化版): ```typescript // ✅ 优化版 EWO 评分(带品种阈值过滤 + 持续时间奖励) const ewoArr = calculateEWO(closes); const ewoNow = ewoArr[last]; const ewoPrev = ewoArr[prev]; if (!isNaN(ewoNow) && !isNaN(ewoPrev)) { const ewoResult = assessEwoSignal( ewoNow, ewoPrev, ewoArr, last, symbol, interval // ← 需要确保 generateSignal 接收 symbol 和 interval 参数 ); bullishCount += ewoResult.bullishScore; bearishCount += ewoResult.bearishScore; reasons.push(...ewoResult.reasons); // 可选:将 ewoQuality 存入信号对象,用于通知增强 // ewoQualityForNotification = ewoResult.ewoQuality; } ``` ### 2.4 周期自适应信号强度阈值(替换第 716-721 行) ```typescript // ❌ 原有代码(第 716-721 行) const activeOptionalCount = [ params?.signalUseRsi, params?.signalUseKdj, params?.signalUseStoch, params?.signalUseBollinger, params?.signalUseSuperTrend, params?.signalUseDmi ].filter(Boolean).length; const strongThreshold = 5 + Math.floor(activeOptionalCount * 0.5); const moderateThreshold = 3 + Math.floor(activeOptionalCount * 0.3); // ✅ 优化版:周期自适应阈值 const INTERVAL_MULTIPLIER: Record = { '1m': 1.5, '3m': 1.4, '5m': 1.3, '10m': 1.2, '15m': 1.1, '30m': 1.0, '1h': 0.9, '4h': 0.8, '12h': 0.7, '1d': 0.6, '1w': 0.5, }; const activeOptionalCount = [ params?.signalUseRsi, params?.signalUseKdj, params?.signalUseStoch, params?.signalUseBollinger, params?.signalUseSuperTrend, params?.signalUseDmi ].filter(Boolean).length; const mult = INTERVAL_MULTIPLIER[interval] ?? 1.0; const strongThreshold = Math.ceil((5 + activeOptionalCount * 0.5) * mult); const moderateThreshold = Math.ceil((3 + activeOptionalCount * 0.3) * mult); // 示例:10m 周期,3个可选指标 → strong=ceil(6.5*1.2)=8, moderate=ceil(3.9*1.2)=5 // 示例:4h 周期,3个可选指标 → strong=ceil(6.5*0.8)=6, moderate=ceil(3.9*0.8)=4 ``` --- ## 三、各币种专项参数配置详解 ### 3.1 BTC(比特币)专项配置 **品种特性**:价格基数最高($74,500~$126,000),机构主导,与宏观政策高度相关,EWO 绝对值在所有品种中最大。 **推荐信号参数**: | 参数 | 5m | 15m | 1h | 4h | 1d | |------|-----|-----|-----|-----|-----| | EWO 强力阈值 | 100 | 180 | 390 | 530 | 1800 | | EWO 最小阈值 | 20 | 40 | 80 | 120 | 400 | | MACD 参数 | (10,20,10) | (10,20,10) | (12,26,9) | (12,26,9) | (12,26,9) | | RSI 超卖/超买 | 28/72 | 30/70 | 30/70 | 32/68 | 35/65 | | SuperTrend | ATR10×3 | ATR10×3 | ATR14×3 | ATR14×3 | ATR14×3.5 | | 持续时间奖励 | ≥20根 | ≥20根 | ≥20根 | ≥15根 | ≥10根 | | 强度阈值乘数 | ×1.3 | ×1.1 | ×0.9 | ×0.8 | ×0.6 | **BTC 专项注意事项**: 1. **CME 交易时段**:美国东部时间 09:30~16:00 期间,BTC 信号可靠性更高(机构主导),建议对此时段内的信号权重加成 +1。 2. **ETF 资金流向**:BlackRock IBIT 等 ETF 净流入为正时,大周期偏向倾向 BULLISH,可降低 BEARISH 信号权重。 3. **关税/宏观事件**:2025 年两次关税战均触发 BTC 快速下跌,建议接入宏观事件日历,在重大事件前后 24 小时内提高信号强度要求(`strongThreshold × 1.3`)。 ### 3.2 ETH(以太坊)专项配置 **品种特性**:年化波动率高于 BTC(2025 年约 73%),受 Gas 费用、DeFi TVL、ETF 资金流向多重影响。2025 年 8 月 ATH $4,956,但全年收跌 12%,表现弱于 BTC。 **推荐信号参数**: | 参数 | 5m | 15m | 1h | 4h | 1d | |------|-----|-----|-----|-----|-----| | EWO 强力阈值 | 3.5 | 7.0 | 15 | 25 | 100 | | EWO 最小阈值 | 0.8 | 1.5 | 3.5 | 6.0 | 25 | | RSI 超卖/超买 | 25/75 | 28/72 | 30/70 | 30/70 | 32/68 | | MFI 权重 | 启用 | 启用 | 启用 | 启用 | 启用 | | 持续时间奖励 | ≥18根 | ≥18根 | ≥18根 | ≥15根 | ≥10根 | **ETH 专项注意事项**: 1. **Gas 费用异常**:Gas 费用突然暴涨(>100 Gwei)通常意味着链上活动激增,可能是大行情前兆,建议将 Gas 数据作为辅助信号。 2. **ETH/BTC 比值**:当 ETH/BTC 比值处于历史低位时,ETH 反弹信号可靠性更高。2025 年 ETH/BTC 持续走低是 ETH 全年跑输的核心原因。 3. **Pectra 升级效应**:以太坊重大升级(如 Pectra)前后通常有明显行情,建议在升级前 2 周内提高做多信号权重。 ### 3.3 BNB(币安币)专项配置 **品种特性**:与 Binance 平台生态强绑定,2025 年 10 月创 ATH $1,369。受 Binance 平台事件(如监管、上新)影响大,但整体跟随 BTC 趋势。 **推荐信号参数**: | 参数 | 5m | 15m | 1h | 4h | 1d | |------|-----|-----|-----|-----|-----| | EWO 强力阈值 | 1.2 | 2.5 | 5.0 | 10 | 40 | | EWO 最小阈值 | 0.25 | 0.5 | 1.2 | 2.5 | 10 | | 大周期过滤 | 4h | 4h | 4h | 12h | — | | 持续时间奖励 | ≥16根 | ≥16根 | ≥16根 | ≥12根 | ≥8根 | **BNB 专项注意事项**: 1. **季度销毁效应**:Binance 每季度销毁 BNB,销毁前后通常有 1-2 周的上涨行情,可作为做多偏向参考。 2. **平台代币特性**:BNB 在市场恐慌期通常比 BTC 跌幅更小(2026 年 3 月 2 日数据:BNB -1.15% vs ETH -1.96% vs SOL -3.84%),空头信号需要更高的确认分数。 ### 3.4 SOL(Solana)专项配置 **品种特性**:2025 年 1 月 ATH $293,年末跌至 $120(跌幅 59%)。EWO 绝对值极小,是假信号最多的主流币之一。高 TPS 特性使其受 DeFi/NFT 活动影响大。 **推荐信号参数**: | 参数 | 5m | 15m | 1h | 4h | 1d | |------|-----|-----|-----|-----|-----| | EWO 强力阈值 | 0.06 | 0.15 | 0.40 | 0.80 | 3.0 | | EWO 最小阈值 | 0.012 | 0.03 | 0.08 | 0.18 | 0.7 | | Stoch RSI | 启用 | 启用 | 启用 | 启用 | 启用 | | KDJ 低位金叉 | ≤25 | ≤25 | ≤30 | ≤30 | ≤35 | | 持续时间奖励 | ≥22根 | ≥22根 | ≥20根 | ≥18根 | ≥12根 | **SOL 专项注意事项**: 1. **EWO 幅度过滤是最高优先级**:如本文档开头的真实案例所示,SOL 的 EWO 从 -0.037 变为 +0.007 不应计为强信号。必须启用 `minValidThreshold`。 2. **链上活跃度**:SOL 链上 DEX 交易量(Jupiter、Raydium)是重要的领先指标,链上活跃度上升时做多信号可靠性提升。 3. **Meme 币效应**:2025 年 SOL 链上 Meme 币爆发期间,SOL 本身也有明显上涨,但随后回调剧烈,建议在 Meme 币热度高峰期提高止损标准。 ### 3.5 DOGE(狗狗币)专项配置 **品种特性**:价格极低($0.06~$0.48),受社交媒体情绪和名人言论(特别是马斯克)影响极大,EWO 绝对值在所有主流币中最小,技术分析有效性相对较低。 **推荐信号参数**: | 参数 | 5m | 15m | 1h | 4h | 1d | |------|-----|-----|-----|-----|-----| | EWO 强力阈值 | 0.00012 | 0.0003 | 0.0008 | 0.0015 | 0.006 | | EWO 最小阈值 | 0.00003 | 0.00008 | 0.0002 | 0.0004 | 0.0015 | | 持续时间奖励 | ≥25根 | ≥25根 | ≥22根 | ≥20根 | ≥15根 | | 情绪过滤 | 强制启用 | 强制启用 | 启用 | 可选 | 可选 | **DOGE 专项注意事项**: 1. **情绪主导**:DOGE 的技术信号可靠性显著低于其他主流币,建议将信号强度要求提高 50%(`strongThreshold × 1.5`)。 2. **DOGE 部门效应**:2025 年特朗普政府成立 DOGE(政府效率部)后,DOGE 价格出现多次政策驱动的急涨,这类行情无法通过技术指标预测,建议设置较宽的止损。 3. **只做趋势**:DOGE 不适合高频交易,建议只在 4h 及以上周期操作,且必须有大周期偏向过滤。 --- ## 四、各周期通用配置矩阵 以下矩阵适用于所有品种,展示了不同周期的推荐指标组合和参数: | 周期 | EWO | MACD | AO | MA | RSI | KDJ | Stoch | BB | SuperTrend | DMI | 强度乘数 | ATR止损 | |------|-----|------|----|----|-----|-----|-------|----|------------|-----|---------|--------| | 1m | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ×1.5 | 1.5x | | 3m | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ×1.4 | 1.5x | | 5m | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ×1.3 | 2.0x | | 10m | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ×1.2 | 2.0x | | 15m | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ×1.1 | 2.5x | | 30m | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ×1.0 | 2.5x | | 1h | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ×0.9 | 3.0x | | 4h | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ×0.8 | 3.5x | | 12h | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ×0.7 | 4.0x | | 1d | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ×0.6 | 4.0x | --- ## 五、EWO 通知系统增强方案(飞书 Webhook) 在现有 `EwoTurnAlertRule` 基础上,建议扩展通知内容,加入品种阈值判断结果: ```typescript // 建议的增强版通知消息格式(在 lark webhook 发送时使用) function buildEnhancedEwoNotification( symbol: string, interval: TimeInterval, ewoNow: number, ewoPrev: number, phaseDuration: number, direction: 'red_to_green' | 'green_to_red', macdConfirmed: boolean, bigBias: TrendBias, isVolumeExpanding: boolean, ): string { const config = getSymbolEwoConfig(symbol); const strongThresh = config.strongThreshold[interval]; const ewoAbsNow = Math.abs(ewoNow); const isStrong = ewoAbsNow >= strongThresh; const dirEmoji = direction === 'red_to_green' ? '🟢' : '🔴'; const dirText = direction === 'red_to_green' ? '红→绿(多头)' : '绿→红(空头)'; const qualityEmoji = isStrong ? '✅ 强力穿越' : '⚠️ 微弱穿越'; const macdEmoji = macdConfirmed ? '✅ MACD确认' : '❌ MACD未确认'; const biasEmoji = bigBias === 'BULLISH' ? '📈 大周期多头' : bigBias === 'BEARISH' ? '📉 大周期空头' : '➡️ 大周期中性'; const volEmoji = isVolumeExpanding ? '📊 放量' : '📉 缩量'; return `${dirEmoji} EWO转换提醒 ${symbol}/${interval} 方向:${dirText} EWO:${ewoPrev.toFixed(6)} → ${ewoNow.toFixed(6)} 穿越质量:${qualityEmoji}(阈值 ${strongThresh}) 前阶段:持续 ${phaseDuration} 根K线 ${macdEmoji} | ${biasEmoji} | ${volEmoji} ${!isStrong ? '⚠️ 注意:EWO 幅度较小,建议等待 MACD 金叉确认后再操作' : ''}`; } ``` --- ## 六、知识点:为什么 EWO 幅度过滤有效 ### 6.1 EWO 的数学本质 EWO = EMA(5) - EMA(35),本质上是**短期动能与中期趋势的偏差**。当 EWO 绝对值较大时,意味着短期动能与中期趋势存在显著背离,这种背离的修复(即穿越零轴)往往伴随着真实的趋势反转。 相反,当 EWO 绝对值极小(如 SOL 的 0.007)时,短期与中期几乎没有偏差,"穿越"只是随机噪声,没有实质意义。 ### 6.2 为什么不同品种需要不同阈值 EWO 的绝对值与价格成正比,因为 EMA 是价格的线性函数: ``` EWO = EMA(close, 5) - EMA(close, 35) ≈ close × (1 - 相关系数) ``` 因此,BTC(价格 $71,000)的 EWO 绝对值天然是 DOGE(价格 $0.09)的约 78 万倍。这就是为什么必须按品种设置独立阈值,而不能使用统一的固定值。 ### 6.3 P25 分位数作为阈值的合理性 将历史 EWO 绝对值的 P25 分位数作为"强力穿越"阈值,意味着: - 只有 75% 以上强度的穿越才被认定为强力信号(+2 分) - 25%~75% 之间的穿越为微弱信号(+1 分) - 低于 P10 的穿越直接忽略(0 分) 这种设计使得信号系统能够自适应市场状态:在高波动期,阈值自动升高;在低波动期,阈值自动降低。 --- ## 七、参考资料 [1] tradehk `indicators.ts` 源码:EWO 评分逻辑(第 460-510 行) [2] tradehk `types.ts` 源码:`EwoTurnAlertRule`、`IndicatorParams` 类型定义 [3] ForkLog 2025 年加密市场年度复盘:https://forklog.com/en/the-year-in-crypto-2025-record-highs-extreme-fear-and-the-biggest-hack-on-record/ [4] arXiv 2503.21422:From Deep Learning to LLMs: A Survey of AI in Quantitative Investment [5] Binance API 文档:https://binance-docs.github.io/apidocs/spot/en/ [6] TradingView Pine Script 文档(EWO 实现参考):https://www.tradingview.com/pine-script-docs/