# ⚡ 跨交易所永续合约套利监控 Bitget ↔ HyperLiquid 跨交易所永续合约价差套利系统。支持模拟盘/实盘交易、价差监控、自动开仓/加仓/平仓、Web 仪表盘。 ## 功能特点 - **实时价差监控** — 200ms 扫描间隔,追踪 DOGE/LINK/ONDO/OP/WIF/ARB 六个币种 - **自动套利交易** — 价差超过阈值自动开仓,收敛自动平仓,支持多级加仓 - **模拟/实盘双模式** — `TestMode` 控制,模拟模式无需真实 API Key - **Web 仪表盘** — Go 内置 HTTP Server + Vite React 前端,SSE 实时推送 - **SQLite 持久化** — 交易记录、订单明细、手续费明细全量存储 - **手续费精确计算** — 逐笔累加实际 USD 手续费(开仓费+平仓费),非百分比估算 - **Telegram 通知** — 开仓/平仓/异常实时推送 ## 架构 ``` ┌─────────────────────────────────────────────────┐ │ scanner.go ← 每 200ms 扫描价差 │ │ ↓ 发现机会 (NetProfit > 阈值) │ │ trader.go ← 开仓/加仓/平仓逻辑 │ │ ↓ 持久化 │ │ db/ ← SQLite (trades / orders / system) │ │ ↓ SSE 推送 │ │ dashboard.go ← HTTP Server :8888 │ │ ↓ │ │ frontend/ ← Vite + React 仪表盘 │ └─────────────────────────────────────────────────┘ ``` ## 快速开始 ### 1. 配置 编辑 `config.json`: ```json { "scan_interval_ms": 200, "trade_enabled": true, "test_mode": true, "trade_threshold": 0.10, "take_profit_pct": 0.20, "trade_amount_usd": 5, "max_positions": 5, "taker_fee_bitget": 0.060, "taker_fee_hyperliquid": 0.045, "telegram_bot_token": "xxx", "telegram_chat_id": "xxx" } ``` ### 2. 启动 ```bash # 一键启动(自动清理旧进程 + 编译 + 运行) bash start.sh # 清空数据库 + 启动 bash start.sh --clean # 强制重新编译 + 启动 bash start.sh --rebuild ``` 仪表盘地址:http://localhost:8888 ### 3. 前端开发 ```bash cd frontend npm install npm run dev # 开发模式 (Vite HMR :5173) npm run build # 构建生产版本 ``` 后端优先从 `frontend/dist/` 读取静态文件(热加载),回退到 Go embed。 ## 配置参数 | 参数 | 说明 | 默认 | |------|------|------| | `scan_interval_ms` | 扫描间隔 (ms) | 200 | | `trade_threshold` | 开仓阈值 (%) | 0.10 | | `take_profit_pct` | 止盈净利 (%) | 0.20 | | `trade_amount_usd` | 每腿交易额 ($) | 5 | | `max_positions` | 最大并行持仓 | 5 | | `taker_fee_bitget` | Bitget 吃单费率 (%) | 0.060 | | `taker_fee_hyperliquid` | HyperLiquid 吃单费率 (%) | 0.045 | | `scale_step_pct` | 加仓步长 (%) | 0.10 | | `position_timeout` | 最长持仓时间 | 10m | | `leg_delay` | 两腿下单间隔 | 300ms | ## 数据库 SQLite (`data/trades.db`),三张核心表: | 表 | 说明 | |----|------| | `trades` | 交易主表 — 价差、PnL、手续费 ($) | | `orders` | 订单明细 — 每腿的开仓/加仓/平仓、手续费 ($) | | `system_orders` | 系统订单 — 双向关联 long↔short 订单 | ## 版本历史 ### v1.2 (当前) - ✨ `system_orders` 表,记录系统级开仓/加仓/平仓 - ✨ 手续费改为逐笔累加 USD,不再用百分比估算 - ✨ Vite + React 前端,支持热加载 - ✨ Web 仪表盘持仓 PnL 美元化显示 - 🐛 修复 `persistTrade` 费用在 `SaveTrade` 后才累加导致 fee=0 的 bug - 🗑 移除老版 Chart.js 图表