arbitrage-engine/docs/arbitrage-engine/v5-signal-system.mdx
dev-worker c8c2d801a2 docs: 同步套利引擎私有文档站内容
从private.darkerilclaw.com同步以下文档:
- requirements-v1.3.md: 需求定稿v1.3
- v5-signal-system.mdx: V5信号系统文档
- v2-v4-plan.mdx: V2-V4方案
- funding-rate-arbitrage-plan.md: 资金费率套利方案
- phase0-progress.md: Phase0进度
- index.mdx: 项目首页

后续工作流:git仓库先写 → 再同步到私有文档站
2026-03-03 05:26:27 +00:00

240 lines
7.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: V5 短线交易信号系统方案
---
# V5 短线交易信号系统方案
> 版本v5.0 | 日期2026-02-27 | 状态:方案定稿,待开发
>
> 来源露露Opus 4.6× 小周GPT-5.3-Codex10轮讨论
---
## 1. 目标
将 aggTrades 成交流数据转化为**可执行的短线做多/做空交易信号**,实现从"监控工具"到"交易工具"的升级。
## 2. 信号体系
### 2.1 核心门槛3/3 必须全部满足)
| # | 条件 | 做多 | 做空 |
|---|------|------|------|
| 1 | CVD_fast (30m 滚动) | > 0 且斜率正 | < 0 且斜率负 |
| 2 | CVD_mid (4h 滚动) | > 0 | < 0 |
| 3 | VWAP 位置 | price > VWAP_30m | price < VWAP_30m |
**说明**CVD = Cumulative Volume Delta累计买卖差额是成交流分析最核心的指标。
- **CVD_fast**30分钟滚动窗口捕捉短线动量
- **CVD_mid**4小时滚动窗口确认大方向
- **CVD_day**UTC日内重置作为盘中强弱基线参考不作为入场条件
> ⚠️ CVD_fast 在剧烈波动时自适应当1m成交量超过均值3倍时窗口自动拉长到60m防噪音误判。
### 2.2 加分条件决定仓位大小满分60分
| 条件 | 分值 | 说明 |
|------|------|------|
| ATR 压缩→扩张 | +25 | 5m ATR分位从 <40% 突破 >60%,波动开始放大 |
| 无反向 P99 超大单 | +20 | 最近15分钟内无极端反向成交 |
| 资金费率配合 | +15 | 做多时费率<0.01%,做空时费率>0.01% |
### 2.3 仓位映射
| 加分总分 | 仓位等级 | 占总资金 |
|----------|----------|----------|
| 0-15 | 最小仓 | 2% |
| 20-40 | 中仓 | 5% |
| 45-60 | 满仓 | 8% |
### 2.4 预估信号频率
核心3条件同时满足概率约 20-30%每5分钟检查一次。去掉冷却期重复后预计**日均 5-15 个有效信号**。
## 3. 指标计算
### 3.1 CVDCumulative Volume Delta
```
CVD = Σ(主动买量) - Σ(主动卖量)
三轨并行:
- CVD_fast滚动30m窗口入场信号
- CVD_mid滚动4h窗口方向过滤
- CVD_dayUTC日内重置盘中基线
```
入场优先看 fast方向必须与 mid 同向。
### 3.2 大单阈值(动态分位数)
```
基于最近24h成交量分布
- P99超大单阈值
- P95大单阈值
- 兜底下限max(P95, 5 BTC)
区分"大单买"和"大单卖"的不对称性:
- 上涨趋势中出现P99大卖单意义远大于P99大买单
```
### 3.3 ATRAverage True Range
```
周期5分钟K线14根
用于:
1. 波动压缩→扩张判断(分位数)
2. 止损距离计算
```
### 3.4 VWAPVolume Weighted Average Price
```
滚动30分钟VWAP_30m = Σ(price × qty) / Σ(qty)
用于:价格位置过滤(做多 price > VWAP做空 price < VWAP
```
## 4. 风控体系
### 4.1 止盈止损
| 参数 | 值 | 说明 |
|------|-----|------|
| 止损 (SL) | 1.2 × ATR(5m, 14) | 动态止损,适应波动 |
| 止盈1 (TP1) | 1.0R | 减仓50% |
| 止盈2 (TP2) | 2.0R | 剩余仓位移动止损 |
| 时间止损 | 30分钟 | 无延续即平仓,防磨损 |
> R = 1倍止损距离
### 4.2 冲突与冷却
- **信号冲突**:持仓中出现反向信号 → 先平仓 + 10分钟冷却再接受新信号
- **同方向冷却**10分钟内不重复入场
- **单币限频**每小时最多2次入场
### 4.3 多品种风控
- BTC / ETH 独立出信号
- 两个同时同向时,总仓位上限 10%
- 需要相关性过滤ETH Delta 经常跟 BTC 走)
## 5. 回测达标线
| 指标 | 达标线 |
|------|--------|
| 胜率 | ≥ 45% |
| 盈亏比 (Avg Win / Avg Loss) | ≥ 1.5 |
| 最大回撤 (MDD) | ≤ 5% |
| 日均信号数 | 2-8 个 |
| 扣手续费后 | 正收益 |
**手续费模型**
- Maker: 0.02%, Taker: 0.04%Portfolio Margin 档位)
- 按 Taker 0.04% 双向估算(保守)
- 回测报告必须包含净收益/毛收益对比
**额外统计**
- 持仓时长分布验证30min时间止损合理性
- Rate-limit 重试统计(回补脚本用)
## 6. 技术架构
### 6.1 进程拓扑
```
┌─────────────────┐
Binance WS ──────→ │ agg-collector │ ──→ agg_trades_YYYYMM
└─────────────────┘
┌─────────────────┐
│ signal-engine │ ──→ signal_indicators (5s)
│ │ ──→ signal_indicators_1m (聚合)
│ │ ──→ signal_trades
│ │ ──→ Discord推送
└─────────────────┘
┌─────────────────┐
│ backtest.py │ ──→ 回测报告
└─────────────────┘
```
- **agg-collector**:只做采集+落库,不动(已有)
- **signal-engine**:新建独立进程,指标计算 + 信号生成
- **backtest.py**:离线回测脚本
### 6.2 数据库新增表
| 表名 | 用途 | 保留策略 |
|------|------|----------|
| signal_indicators | 每5秒指标快照CVD/ATR/VWAP/P95等 | 30天 |
| signal_indicators_1m | 1分钟聚合前端默认读此表 | 长期 |
| signal_trades | 信号触发的开仓/平仓记录 | 长期 |
### 6.3 指标计算策略
- **内存滚动 + 增量更新**不是每次SQL全量聚合
- 启动时回灌历史窗口30m/4h/24h到内存
- 之后只处理新增 agg_id 增量
- 每5秒把快照落库幂等
### 6.4 冷启动处理
signal-engine 重启后:
1. 从DB回读最近4h的aggTrades重算所有指标
2. 前N根标记为 `warmup`,不出信号
3. warmup 完成后开始正常信号生成
## 7. 历史数据回补
### 7.1 回补脚本backfill_agg_trades.py
```
参数:--symbol BTCUSDT --days 7 --batch-size 1000
流程:
1. 查DB中最早的agg_id
2. 从最早agg_id向前REST分页补拉
3. 每次1000条sleep 200ms防限流
4. INSERT OR IGNORE 写入agg_trades_YYYYMM
5. 断点续传记录进度到meta表
6. 完成后输出统计+连续性检查
```
### 7.2 速率控制
- Binance aggTrades REST 限流weight 20/min
- 每请求 sleep 200ms实际约 3-5 req/s
- 带指数退避重试429后等60s
- 记录 rate-limit 统计429次数、退避次数
## 8. 开发时间线
| Day | 任务 | 交付物 | 负责 |
|-----|------|--------|------|
| 1 | 回补脚本 + 1天小样本 | backfill跑通BTC/ETH各1天入库 | 露露开发,小周部署 |
| 2 | 全量7天回补 + 连续性验证 | 完整7天aggTrades缺口=0 | 小周跑+验收 |
| 3-4 | signal-engine + 前端指标展示 | CVD三轨/ATR/VWAP/大单标记实时可视化 | 露露开发,小周部署 |
| 5 | 回测框架 + 首版回测报告 | 胜率/盈亏比/MDD/持仓分布/净收益 | 露露开发 |
| 6+ | 调参优化 → 达标后模拟盘 | 模拟交易记录 | 协同 |
## 9. 前置依赖
| 依赖 | 状态 | 影响范围 |
|------|------|----------|
| aggTrades 实时采集 | ✅ 已运行 | Phase 1-3 已满足 |
| 历史数据回补 | ⏳ Day 1-2 | 回测需要 |
| Binance API Key | ⏳ 等范总 | 仅Phase 4实盘 |
| Portfolio Margin | ⏳ 等范总 | 仅Phase 4实盘 |
| 资金准备 | ⏳ 等范总 | 仅Phase 4实盘 |
> Phase 1-3 不依赖范总,可立即开工。
## 10. 版本历史
| 版本 | 日期 | 内容 |
|------|------|------|
| v2-v4 | 2026-02-27 | 权限管控+aggTrades采集+成交流面板 |
| **v5.0** | **2026-02-27** | **短线交易信号系统方案定稿** |