系统架构说明
整体架构
系统采用分层架构,核心分为:数据层 → 服务层 → 策略层 → 执行层。
┌─────────────────────────────────────────────────────────────────────────┐
│ Hyperliquid WebSocket API │
│ (K线 5m/1h/4h + L2 Book + 订单) │
└────────────────────────────────┬────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ EnhancedWebSocketManager │
│ (假活检测、自动重连、指数退避、状态机) │
└────────────────────────────────┬────────────────────────────────────────┘
│
┌───────────────────────┼───────────────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────────────┐
│ K线 on_message │ │ L2 Book 缓存 │ │ 订单/仓位事件 │
│ (kline_buffer) │ │ (供执行层使用) │ │ (供交易模块订阅) │
└────────┬────────┘ └──────────────────┘ └─────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ RealtimeKlineServiceBase / RealtimeKlineServiceHypePurr │
│ • 批量写入 TimescaleDB (COPY) │
│ • 5m 推送触发分析 → analyze_multi_period → Z-score + 相关性 │
│ • 去重窗口保护 (ENQUEUE_DEDUP / DEDUP_WINDOWS) │
│ • KlineDataFillerLazy 补充缺失 K 线 │
└────────────────────────────────┬────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ TradingOrchestrator │
│ • process_analysis() 接收分析结果 │
│ • 调用 AdaptiveBollingerStrategy.process_tick() 获取入场/出场信号 │
│ • on_entry_signal / on_exit_signal 执行开仓/平仓 │
└────────────────────────────────┬────────────────────────────────────────┘
│
┌───────────────────────┼───────────────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────────────┐
│ PositionManager │ │ RiskManager │ │ HyperliquidExecutor │
│ 仓位管理/同步 │ │ 风控/止损/熔断 │ │ REST + WebSocket 下单 │
└─────────────────┘ └──────────────────┘ └─────────────────────────┘
核心模块说明
1. 实时 K 线服务
| 组件 |
文件 |
说明 |
| 入口 |
src/services/realtime_kline_service_hype.py |
HYPE/PURR 配对专用服务(类名 RealtimeKlineServiceHypePurr),订阅 6 个 K 线流(2 币种 × 3 周期) |
| 基类 |
src/services/realtime_kline_service_base.py |
抽象基类,包含 90% 公共逻辑;子类实现 4 个抽象方法 |
| 通用 |
src/services/realtime_kline_service.py |
全币种通用监控服务(RealtimeKlineService) |
| 分析 |
src/utils/analysis/analysis_core.py |
多周期分析:相关性、协整、Z-score、异常检测 |
数据流:
- WebSocket 收到 K 线 → 入队
kline_buffer
- 批量写入线程
_batch_writer 异步写入 TimescaleDB
- 5m K 线到达时(受去重保护)→ 触发
_analyze_and_alert
analyze_multi_period() 计算 5m/1h/4h Z-score、相关性
- 若交易启用,调用
TradingOrchestrator.process_analysis()
2. 交易模块
| 组件 |
文件 |
说明 |
| 编排器 |
src/trading/orchestrator.py |
统一入口:初始化、信号分发、监控线程 |
| 策略 |
src/trading/strategy.py |
AdaptiveBollingerStrategy:z4h 缓冲区 → EMA → Welford std → adaptive_z 突破检测 |
| 仓位 |
src/trading/position_manager.py |
仓位恢复、交易所同步、孤儿仓位收纳 |
| 风控 |
src/trading/risk_manager.py |
固定止损、移动止损、持仓超时、熔断 |
| 执行 |
src/trading/executor.py |
HyperliquidExecutor:REST 下单 + WebSocket 订单追踪 |
策略逻辑:
- 入场:
abs(adaptive_z) >= threshold 且突破检测,并受 min_zscore_abs 过滤;策略参数支持按币种覆盖(StrategyParams / TRADING_STRATEGY_OVERRIDE_SYMBOLS)
- 出场:均值回归(
adaptive_z 回归到 entry_adaptive_z * reversion_factor)
- 冷却:
strategy_cooldown_minutes 内不重复入场
3. 数据自愈
| 组件 |
文件 |
说明 |
| 编排 |
src/utils/data_healing/orchestrator.py |
heal_and_prepare() 四阶段:加载 → 诊断 → 修复 → 评估 |
| 检测 |
src/utils/data_healing/continuity_checker.py |
检测 gap / stale / shortfall |
| 修复 |
src/utils/data_healing/repair_executor.py |
通过 REST API 补全缺失 K 线 |
| 评估 |
src/utils/data_healing/quality_assessor.py |
质量等级(ready / warmup / degraded / failed) |
交易模块启动前会先执行数据自愈,将历史 zscore_4h 灌入策略引擎,避免冷启动无效信号。
4. WebSocket 管理器
| 组件 |
文件 |
说明 |
| 管理器 |
src/utils/websocket/enhanced_ws_manager.py |
双重健康检测、指数退避重连、事件发布 |
| 事件 |
src/events/ |
EventBus、PositionUpdatedEvent、OrderFilledEvent、CandleUpdatedEvent 等 |
5. 数据库
| 组件 |
文件 |
说明 |
| 客户端 |
src/utils/database/timescaledb.py |
连接池(psycopg 3.x)、COPY 批量写入 |
| 仓库 |
同文件 |
KlineRepository、SymbolMetadataRepository、AnalysisResultRepository |
数据流概要
Hyperliquid WS → K线 → kline_buffer → _batch_writer → TimescaleDB
→ 5m 触发 → analyze_multi_period → Z-score/相关性
→ process_analysis → strategy.process_tick → 信号
→ on_entry/on_exit → executor → 交易所
配置层次
- 全局配置
src/config.py:TimescaleDB、WebSocket、分析参数、队列、飞书
- 交易配置
src/trading/config.py:从 .env 加载,load_trading_config() 返回 TradingConfig
- 服务配置
ServiceConfig:基类中由子类 _get_config_params() 提供