变更统计: - 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式交叉引用)
31 KiB
主流币信号系统完整落地方案
作者: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 中新增品种配置类型
// 在 client/src/lib/types.ts 中新增以下类型定义
/**
* 品种专项 EWO 阈值配置
* 用于区分强力穿越(+2分)与微弱穿越(+1分,附带警告)
*/
export interface SymbolEwoConfig {
/** EWO 强力穿越阈值:穿越后 |EWO| 必须大于此值才计为强力穿越(+2分)*/
strongThreshold: Record<TimeInterval, number>;
/** EWO 最小有效阈值:低于此值的穿越直接忽略(不计分)*/
minValidThreshold: Record<TimeInterval, number>;
/** 前阶段持续时间奖励阈值:前阶段 K 线数 >= 此值时额外 +1 */
phaseDurationBonus: number;
/** 品种说明 */
description: string;
}
/**
* 全局品种 EWO 配置表
* 基于 2025 年实测数据(EWO 绝对值 P25 分位数)校准
*/
export const SYMBOL_EWO_CONFIGS: Record<string, SymbolEwoConfig> = {
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 评分部分)
// ============================================================
// 在文件顶部导入新类型(如果 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 行附近,需要替换):
// ❌ 原有代码(需要删除/替换)
// 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 在零轴下方(看空)');
}
}
替换为(优化版):
// ✅ 优化版 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 行)
// ❌ 原有代码(第 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<TimeInterval, number> = {
'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 专项注意事项:
- CME 交易时段:美国东部时间 09:30~16:00 期间,BTC 信号可靠性更高(机构主导),建议对此时段内的信号权重加成 +1。
- ETF 资金流向:BlackRock IBIT 等 ETF 净流入为正时,大周期偏向倾向 BULLISH,可降低 BEARISH 信号权重。
- 关税/宏观事件: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 专项注意事项:
- Gas 费用异常:Gas 费用突然暴涨(>100 Gwei)通常意味着链上活动激增,可能是大行情前兆,建议将 Gas 数据作为辅助信号。
- ETH/BTC 比值:当 ETH/BTC 比值处于历史低位时,ETH 反弹信号可靠性更高。2025 年 ETH/BTC 持续走低是 ETH 全年跑输的核心原因。
- 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 专项注意事项:
- 季度销毁效应:Binance 每季度销毁 BNB,销毁前后通常有 1-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 专项注意事项:
- EWO 幅度过滤是最高优先级:如本文档开头的真实案例所示,SOL 的 EWO 从 -0.037 变为 +0.007 不应计为强信号。必须启用
minValidThreshold。 - 链上活跃度:SOL 链上 DEX 交易量(Jupiter、Raydium)是重要的领先指标,链上活跃度上升时做多信号可靠性提升。
- 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 专项注意事项:
- 情绪主导:DOGE 的技术信号可靠性显著低于其他主流币,建议将信号强度要求提高 50%(
strongThreshold × 1.5)。 - DOGE 部门效应:2025 年特朗普政府成立 DOGE(政府效率部)后,DOGE 价格出现多次政策驱动的急涨,这类行情无法通过技术指标预测,建议设置较宽的止损。
- 只做趋势: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 基础上,建议扩展通知内容,加入品种阈值判断结果:
// 建议的增强版通知消息格式(在 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/
附录:数据说明与补充
本文档旨在对主流币信号系统中的核心指标、参数配置及应用场景进行详细阐述,以帮助使用者更深刻地理解和应用该系统。
1. 核心指标:EWO 数据说明
艾略特波浪振荡器(Elliott Wave Oscillator, EWO)是本信号系统的基石。它通过计算两条指数移动平均线(EMA)的差值,来衡量短期市场动能与中期趋势的偏离程度。对 EWO 的正确理解是有效运用本策略的前提。
1.1 计算公式与数据特征
EWO 的计算公式非常简洁,定义为周期为 5 的 EMA 与周期为 35 的 EMA 之差:
EWO = EMA(close, 5) - EMA(close, 35)
该指标的核心数据特征可总结如下:
| 特征 | 说明 |
|---|---|
| 计算公式 | EMA(close, 5) - EMA(close, 35) |
| 数据范围 | 理论上无界,实际范围与标的价格基数成正比。例如,BTC 的 EWO 范围可达 ±8000,而 DOGE 则在 ±0.015 以内。 |
| 单位 | 与标的资产的计价货币相同(例如,BTC/USDT 的 EWO 单位是 USDT)。 |
| 精度要求 | 建议至少保留小数点后 8 位,特别是对于 DOGE 这类低价资产,以避免丢失有效信号。 |
| 数据来源 | 基于交易所提供的 K 线收盘价(close)计算,数据源为实时或历史 K 线数据流。 |
1.2 内部概念链接
为了更好地理解 EWO 及其相关概念,您可以参考以下内部知识库链接:
2. EWO 信号优化应用场景
经过品种专项优化的 EWO 信号系统,可以灵活应用于多种量化交易场景,有效提升信号的信噪比。
场景一:高频趋势跟踪策略
在 1 分钟或 5 分钟等小周期图表上,交易机器人可以利用“强力穿越”信号进行快速的开仓操作。例如,当系统识别到 BTCUSDT 在 5m 周期上出现一次 EWO 强力上穿(ewoAbsNow >= 100),且前一阶段(空头)持续时间超过 phaseDurationBonus(20根K线),程序可以自动执行一笔市价买入订单。由于强力穿越信号过滤了大量噪声,这种策略的胜率相较于原始 EWO 穿越有显著提升。
场景二:波段交易的入场与离场点确认
对于在 4 小时或日线级别进行波段交易的投资者,EWO 信号可以作为重要的辅助判断依据。当价格接近关键支撑位,同时 4h 周期的 EWO 出现“微弱上穿”信号时,虽然不足以直接触发入场,但可以作为一个警示信号,提示交易员密切关注。如果随后 EWO 强度增加,或出现其他指标(如 MACD 金叉)的确认,将构成一个高确定性的入场机会。
场景三:多品种对冲组合的动态调仓
在一个包含多种主流币(如 BTC, ETH, SOL)的投资组合中,EWO 信号的强度可以作为动态调整各品种仓位的依据。当 ETHUSDT 的 EWO 信号持续强于 BTCUSDT 时,策略可以将部分 BTC 的仓位调整至 ETH,以捕捉更强的上涨动能。这种基于信号强度的调仓机制,使得投资组合能够自适应不同市场阶段的领涨品种。
3. 参数配置参考表
系统中的可配置参数是实现品种专项优化的关键。下表整理了核心参数的推荐值与设定逻辑。
| 参数 | 推荐值/范围 | 设定逻辑与说明 |
|---|---|---|
strongThreshold |
各异,见代码 | 强力穿越阈值。基于历史数据 EWO 绝对值的 P25 分位数设定。穿越后 EWO 绝对值高于此阈值,被视为高确定性信号,获得更高评分。 |
minValidThreshold |
各异,见代码 | 最小有效阈值。通常为 strongThreshold 的 20%-30%。低于此阈值的穿越被视为市场噪声,直接忽略,不产生任何信号。 |
phaseDurationBonus |
15 ~ 25 | 前阶段持续时间奖励阈值。前一趋势(多头或空头)持续的 K 线数量超过此值后发生穿越,意味着趋势能量耗尽后反转的可能性更大,因此给予额外加分。SOL 和 DOGE 等波动剧烈的品种需要更长的持续时间来确认。 |
4. 数据格式规范
为确保系统各模块间的数据交互无误,特此规范输入和输出的数据格式。
输入数据:OHLCV K线数组
系统依赖标准的 OHLCV 格式 K 线数据作为输入,通常以 JSON 数组形式提供。
[
{
"timestamp": 1677628800000, // UNIX 毫秒时间戳
"open": 23143.50,
"high": 23150.00,
"low": 23120.80,
"close": 23135.20,
"volume": 150.25
},
// ... more kline data
]
输出数据:信号评估结果
assessEwoSignal 函数返回一个包含评分、原因和信号质量的对象。
{
"bullishScore": 3,
"bearishScore": 0,
"reasons": [
"EWO 强力上穿零轴 (315.78 ≥ 阈值 280) [+2]",
" ↳ 前空头阶段持续 22 根K线 ≥ 20,反转可信度高 [+1]"
],
"ewoQuality": "STRONG"
}
5. 常见误区与正确理解
-
误区一:认为存在一个“万能”的 EWO 阈值。
- 正确理解:EWO 的绝对值与价格基数严格相关。BTC 和 DOGE 的 EWO 值差异可达数万倍。因此,必须为不同价格区间的品种设定独立的、经过数据回测验证的阈值,这也是本优化方案的核心。
-
误区二:将 EWO 穿越零轴视为一个独立的、可直接操作的买卖信号。
- 正确理解:任何单一指标都存在局限性。EWO 穿越仅代表短期动能相对于中期趋势的变化,它应被视为一个“信号”而非“指令”。一个高质量的交易决策,需要结合穿越的强度(
strongThreshold)、前序趋势的持续时间(phaseDurationBonus)以及其他辅助指标(如交易量、MACD)进行综合判断。
- 正确理解:任何单一指标都存在局限性。EWO 穿越仅代表短期动能相对于中期趋势的变化,它应被视为一个“信号”而非“指令”。一个高质量的交易决策,需要结合穿越的强度(
-
误区三:忽略微弱穿越信号的价值。
- 正确理解:虽然微弱穿越信号(
WEAK)不足以支持开仓,但它并非毫无价值。这类信号可以作为潜在趋势反转的“预警”,提示交易员需要提高关注度。在某些情况下,连续的微弱穿越可能预示着一次强力突破的到来。
- 正确理解:虽然微弱穿越信号(
-
误区四:认为 EWO 穿越后的绝对值越大越好。
- 正确理解:虽然穿越强度很重要,但一个远超
strongThreshold数倍的 EWO 值有时可能预示着市场的极端情绪或不可持续的“假突破”。策略上,超过强力阈值即可认为信号有效,无需过度追求极端的 EWO 数值。更重要的是趋势的确认和延续性。
- 正确理解:虽然穿越强度很重要,但一个远超