量化交易系统快速启动
快速开始指南
环境要求
- Python: >= 3.12
- TimescaleDB: PostgreSQL 12+ 并启用 TimescaleDB 扩展
- uv: 推荐用于包管理(
pip install uv或brew install uv)
1. 克隆与安装
cd Trading-in-websocket
uv sync
# 或使用 pip
# pip install -e .
2. 配置环境变量
复制 .env.example 为 .env(若存在),或新建 .env 并填写:
# TimescaleDB
TIMESCALEDB_HOST=127.0.0.1
TIMESCALEDB_PORT=5432
TIMESCALEDB_NAME=crypto_data
TIMESCALEDB_USER=postgres
TIMESCALEDB_PASSWORD=your_password
# 飞书告警(必需)
LARKBOT_ID=your_lark_bot_webhook_id
# 可选:飞书告警邮箱
LARK_ALERT_EMAIL=your@email.com
若启用自动交易,还需配置:
TRADING_ENABLED=true
HYPERLIQUID_PRIVATE_KEY=your_64_hex_private_key
TRADING_NETWORK=testnet # 或 mainnet
3. 数据库初始化
确保 TimescaleDB 中已创建所需表和超表(hypertables)。项目可能提供迁移脚本,请参考项目根目录的 SQL 或迁移说明。典型表包括:
klines:K 线数据symbol_metadata:币种元数据analysis_results:分析结果(Z-score、相关性等)
4. 启动服务
仅分析模式(不执行交易)
HYPE/PURR 配对专用(推荐):
uv run python -m src.services.realtime_kline_service_hype
该命令会:
- 连接 Hyperliquid WebSocket
- 订阅 HYPE/USDC:USDC 与 PURR/USDC:USDC 的 5m/1h/4h K 线
- 实时分析并写入
analysis_results - Z-score 异常时发送飞书告警
全币种通用监控(多币种 K 线订阅与分析,不执行交易):
uv run python -m src.services.realtime_kline_service
启用交易(需配置私钥)
在 .env 中设置 TRADING_ENABLED=true 和 HYPERLIQUID_PRIVATE_KEY 后,运行 HYPE/PURR 服务:
uv run python -m src.services.realtime_kline_service_hype
服务启动时会:
- 执行数据自愈(检测并修复历史数据断层)
- 将历史 zscore_4h 灌入策略引擎
- 恢复本地记录的活跃仓位
- 启动止损监控和仓位同步线程
- 当策略产生入场/出场信号时执行交易
5. 常用脚本
| 脚本 | 说明 |
|---|---|
src/scripts/backfill_all_data.py |
回填历史 K 线数据 |
src/scripts/backfill_analysis_results.py |
回填分析结果 |
src/scripts/backtest_purr_hype_zscore_4h_hyperliquid.py |
HYPE/PURR 4h Z-score 回测 |
src/scripts/backtest_adaptive_zscore.py |
Adaptive Z-Score 策略回测 |
src/scripts/query_analyze_result/query_purr_zscore.py |
查询 PURR Z-score |
src/scripts/query_analyze_result/query_eth_zscore.py |
查询 ETH Z-score |
src/scripts/validate_data_consistency.py |
校验数据一致性 |
src/scripts/fix_buffer_loading.py |
缓冲区加载修复 |
6. 停止服务
在运行终端按 Ctrl+C 即可优雅关闭。服务会:
- 停止 WebSocket 订阅
- 等待队列中的批量写入完成
- 停止交易监控线程
7. 故障排查
| 问题 | 建议 |
|---|---|
| 连接 TimescaleDB 失败 | 检查 .env 中的数据库配置,确认 PostgreSQL/TimescaleDB 已启动 |
| 飞书告警无消息 | 确认 LARKBOT_ID 已正确配置 |
| 交易执行失败 | 检查 HYPERLIQUID_PRIVATE_KEY、TRADING_NETWORK,确认账户余额 |
| 数据自愈超时 | 增大 HEALING_TIMEOUT_SECONDS 或检查网络与 API 限流 |