从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仓库先写 → 再同步到私有文档站
240 lines
7.6 KiB
Plaintext
240 lines
7.6 KiB
Plaintext
---
|
||
title: V5 短线交易信号系统方案
|
||
---
|
||
|
||
# V5 短线交易信号系统方案
|
||
|
||
> 版本:v5.0 | 日期:2026-02-27 | 状态:方案定稿,待开发
|
||
>
|
||
> 来源:露露(Opus 4.6)× 小周(GPT-5.3-Codex)10轮讨论
|
||
|
||
---
|
||
|
||
## 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 CVD(Cumulative Volume Delta)
|
||
|
||
```
|
||
CVD = Σ(主动买量) - Σ(主动卖量)
|
||
|
||
三轨并行:
|
||
- CVD_fast:滚动30m窗口(入场信号)
|
||
- CVD_mid:滚动4h窗口(方向过滤)
|
||
- CVD_day:UTC日内重置(盘中基线)
|
||
```
|
||
|
||
入场优先看 fast,方向必须与 mid 同向。
|
||
|
||
### 3.2 大单阈值(动态分位数)
|
||
|
||
```
|
||
基于最近24h成交量分布:
|
||
- P99:超大单阈值
|
||
- P95:大单阈值
|
||
- 兜底下限:max(P95, 5 BTC)
|
||
|
||
区分"大单买"和"大单卖"的不对称性:
|
||
- 上涨趋势中出现P99大卖单,意义远大于P99大买单
|
||
```
|
||
|
||
### 3.3 ATR(Average True Range)
|
||
|
||
```
|
||
周期:5分钟K线,14根
|
||
用于:
|
||
1. 波动压缩→扩张判断(分位数)
|
||
2. 止损距离计算
|
||
```
|
||
|
||
### 3.4 VWAP(Volume 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** | **短线交易信号系统方案定稿** |
|