darkeril

V5 短线交易信号系统方案

V5 短线交易信号系统方案

版本:v5.0 | 日期:2026-02-27 | 状态:方案定稿,待开发

来源:露露(Opus 4.6)× 小周(GPT-5.3-Codex)10轮讨论


1. 目标

将 aggTrades 成交流数据转化为可执行的短线做多/做空交易信号,实现从"监控工具"到"交易工具"的升级。

2. 信号体系

2.1 核心门槛(3/3 必须全部满足)

#条件做多做空
1CVD_fast (30m 滚动)> 0 且斜率正< 0 且斜率负
2CVD_mid (4h 滚动)> 0< 0
3VWAP 位置price > VWAP_30mprice < VWAP_30m

说明:CVD = Cumulative Volume Delta(累计买卖差额),是成交流分析最核心的指标。

  • CVD_fast:30分钟滚动窗口,捕捉短线动量
  • CVD_mid:4小时滚动窗口,确认大方向
  • CVD_day:UTC日内重置,作为盘中强弱基线参考(不作为入场条件)

⚠️ CVD_fast 在剧烈波动时自适应:当1m成交量超过均值3倍时,窗口自动拉长到60m,防噪音误判。

2.2 加分条件(决定仓位大小,满分60分)

条件分值说明
ATR 压缩→扩张+255m 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_1m1分钟聚合(前端默认读此表)长期
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-4signal-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-v42026-02-27权限管控+aggTrades采集+成交流面板
v5.02026-02-27短线交易信号系统方案定稿

On this page