# Bb Scalper

> BB 双向套利策略：加密合约 10x 杠杆布林带均值回归。布林带收窄=横盘→在下轨买、上轨卖；三重过滤器(1h趋势/RSI/BB甜区)确认碗平放，轨对轨止盈(RR 2:1~4:1)。含实时WebSocket模拟盘(paper)、历史回测(simulate/backtest_daily)、币安永续实盘CLI(trade_exec)。触发：'bb套利'、'布林带'、'bollinger'、'横盘策略'、'NEAR'、'回测'、'模拟盘'、'paper trading'。

- Skill: `aaaaqwq/bb-scalper` (Agent Skill, multi-file: 25 files)
- Install (CLI): `npx skillmds@latest add aaaaqwq/bb-scalper`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aaaaqwq/bb-scalper/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: aAAaqwq (https://skillmd.com/u/aaaaqwq)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/aaaaqwq/bb-scalper

---


# 🎯 BB 双向套利策略 — 完整策略文档

> **版本**: v2.0 三重过滤 | **更新**: 2026-08-11
> **定位**: 加密合约 10x 杠杆双向套利 Skill
> **适配币种**: USDT 永续合约（主流优先）

---

## 零、一句话说清楚

> **布林带收窄 = 横盘震荡 → 在下轨买、上轨卖；在上轨卖、下轨买。
>   不赌方向，只吃区间振荡的统计优势。**

---

## 一、策略直觉：硬币在碗里滚

想象一个碗——左边是下轨、右边是上轨。硬币在里面滚来滚去：

```
        上轨 ═══════════ 🔴 做空入场 ────
        │                                │
        │   价格在碗里来回弹                │
        │                                │
        下轨 ═══════════ 🟢 做多入场 ─────
```

**做多逻辑**：硬币滚到碗左边（%B < 0.15）→ 大概率弹回去 → 买入，等它滚到右边再卖

**做空逻辑**：硬币滚到碗右边（%B > 0.85）→ 大概率弹回去 → 卖出，等它滚到左边再买

但市场的碗会变形——有时变窄（没空间赚）、有时倾斜（趋势中不能做）。所以需要**三重过滤器**确认碗是稳定平的。

---

## 二、核心数学：为什么「轨对轨」是唯一解

### ❌ 错误方案：止盈放中轨（我们踩的第一个坑）

```
做多: 入场=下轨 → 止盈=中轨 → 收益=1σ
      止损=下轨下面 → 风险=1σ + 缓冲
      RR = 1σ / (1σ + 0.15%) < 1  ← 永远亏多赚少！
```

**扫了 20 个币，15 个在震荡，RR 没一个超过 1.1。** 数学死结，不是参数问题。

### ✅ 正确方案：轨对轨（解法一）

```
做多: 入场=下轨 → 止盈=上轨 → 收益=2σ
      止损=下轨外 0.15% → 风险 ≈ 1σ + 0.15%
      RR = 2σ / (1σ + 0.15%) ≈ 2:1 到 4:1 ✅
```

**一句话**：止盈必须放到对侧轨道——吃整个区间，而不是只吃到中轨。

---

## 三、三重过滤器（v2.0 核心）

### 🔴 过滤器一：趋势过滤

**检查**：1h K 线的布林带中轨斜率

```
做多: 1h 中轨不能明显下行（斜率 > -0.06%）
做空: 1h 中轨不能明显上行（斜率 < +0.06%）

斜率 < 0.03% = 走平 ✅ 最优
斜率 0.03%-0.06% = 弱趋势，顺方向可以做
斜率 > 0.06% = 明确趋势，禁止逆势
```

**为什么**：碗底在下陷 → 硬币碰到底不会弹 → 假突破扫止损。趋势过滤就是确认碗是平放的。

**实际效果**：刚才扫码，ETH/SOL/BTC/INJ 四个币做空信号全被「1h 中轨上行」拦下——这些恰好是 v1.0 里连续止损 6-8 根的元凶。

---

### 🟡 过滤器二：RSI 确认

**检查**：价格是否已经超买/超卖

```
做多: RSI < 55 才做（不在高位接盘）
       RSI 30-45 加分（超卖反弹概率大）

做空: RSI > 45 才做（不在低位砸盘）
       RSI 55-70 加分（超买回落概率大）
```

**直觉**：下轨 + RSI 70 = 趋势刚启动、还会继续跌，买就是接飞刀。

---

### 🟢 过滤器三：BB 甜区

**检查**：布林带宽度是否合适

```
< 0.8%:  太窄 → 10x 利润不够覆盖滑点+手续费 → 跳过
0.8-2.5%: 甜区 → 可以做
> 2.5%:  太宽 → 不是真横盘，是波动行情 → 跳过
```

**各币宽度速查**：

| 宽度 | 币种例子 | 判断 |
|------|---------|------|
| 0.71% | XRP | ❌ 太窄 |
| 0.87% | BTC | ⚠️ 刚够线 |
| 0.88% | AVAX | ✅ 甜区 |
| 1.13% | NEAR | ✅ 甜区中心 |
| 2.75% | ATOM | ❌ 太宽 |
| 47.5% | TUT | ❌ 崩溃行情 |

---

## 四、动态宽度适配（🎯 进阶）

> 当前固定甜区 0.8-2.5%。但能否根据 BB 宽度**动态调整**而非一刀切？

### 分析

```
BB宽度 1%:  10x 杠杆 → 轨对轨 10% 收益 | 止损 1.5% | RR 6.7:1
BB宽度 2%:  10x 杠杆 → 轨对轨 20% 收益 | 止损 2.3% | RR 8.7:1
BB宽度 3%:  10x 杠杆 → 轨对轨 30% 收益 | 止损 3.2% | RR 9.4:1
```

**RR 数字看上去更好看，但物理上不成立**：

1. **宽度越大 → 越不是真横盘**。3% 宽度的振荡区间，价格从下轨走到上轨需要更多时间 → 中途转向概率大增 → 实际胜率暴跌

2. **止损距离变大**。0.15% × 3% = 更大的绝对止损 → 单笔亏损变大 → 连续止损的杀伤力更大

3. **市场在 2-3% 宽度时通常不是 RANGING，是 TRENDING 的早期阶段**——RSI 已经给出方向，趋势过滤大概率拒掉

### 结论

| BB 宽度 | 状态 | 策略结论 |
|---------|------|---------|
| < 0.8% | 太窄 | 不做。等待 BB 张口。 |
| 0.8-1.5% | **最优** | NEAR 级别，标准策略 |
| 1.5-2.5% | 可做 | 接受更低胜率（~25-30%），但 RR 更高 |
| 2.5-4% | 观望 | 等收窄到 2.5% 以下再入场 |
| > 4% | 不做 | 波动行情，非套利模式 |

**建议**：当前 v2.0 的 0.8-2.5% 甜区是最优的——已经覆盖了最稳定的横盘区间。拓宽到 3-4% 会引入大量假信号，反而降低净收益。先在小范围验证，数据说话。

---

## 五、回测数据

### 表现汇总

| 币种 | 回测期 | 信号 | 胜率 | 均盈 | 均亏 | 累计 PnL |
|------|--------|------|------|------|------|-----------|
| NEAR | 168h | 31 | 35% | +13.2% | -2.5% | **+95.4%** |
| DOGE | 72h | 9 | 44% | +7.8% | -2.5% | +18.6% |
| INJ | 72h | 13 | 23% | +11.3% | -2.5% | +9.0% |

### TUTUSDT 反例

| 指标 | TUTUSDT | NEARUSDT |
|------|---------|----------|
| BB 宽度 | 47.5% | 1.13% |
| 信号数 | 100 | 31 |
| 胜率 | **1%** | 35% |
| 本金 $100 | **$-69（穿仓）** | **+$95** |
| 死因 | 宽度超大 + 单边下跌 = 被 BB 伪信号反复止损 |

---

## 六、交易参数表

| 参数 | 值 | 说明 |
|------|-----|------|
| BB 周期 | 20 | 20 根 K 线 |
| BB 标准差 | 2.0 | 2σ 布林带 |
| 入场触发 | %B < 0.15 (做多) / > 0.85 (做空) | 价格逼近轨道 |
| 止盈 | 对侧轨道（轨对轨） | 2σ 空间 |
| 止损 | 入场轨外 0.15% | 紧止损 |
| 杠杆 | 10x | 固定 |
| 单笔风险 | 2% of 本金 | |
| 最大仓位 | $100 名义价值 | |
| SL 冷却 | 连续止损后 3 根 K 线 | 防集群止损 |
| 最大持仓 | 12 根 K 线（3h） | 超时强制平仓 |

---

## 七、脚本框架

```
projects/bb-scalper/
├── SKILL.md              ← 你正在读的（策略文档）
├── cli/
│   ├── kline_fetch.py    → 查询合约 K 线数据
│   ├── trade_exec.py     → 对接币安交易接口（入场/止盈/止损）
│   ├── trade_log.py      → 记录 + 统计交易记录
│   └── simulate.py       → 模拟交易（不实际下单）
├── core/
│   ├── strategy.py       → 策略核心逻辑（BB + 三重过滤）
│   └── filters.py        → 趋势/RSI/甜区过滤器
└── config.yaml           → 可调参数（甜区/杠杆/仓位等）
```

### CLI 接口设计

```bash
# 1. K线查询
python cli/kline_fetch.py --symbol NEARUSDT --interval 15m --limit 100
python cli/kline_fetch.py --scan                          # 扫 20 主流合约

# 2. 交易执行
python cli/trade_exec.py --symbol NEARUSDT --side LONG \
  --entry 1.592 --tp 1.610 --sl 1.589 --qty 6

# 3. 交易记录
python cli/trade_log.py --list                            # 列出所有交易
python cli/trade_log.py --summary                         # 统计摘要
python cli/trade_log.py --export-csv trades.csv

# 4. 模拟交易
python cli/simulate.py --symbol NEARUSDT --hours 168      # 历史回测
python cli/simulate.py --paper                            # 实时模拟（不下单）
```

---

## 八、风险说明

| 风险 | 应对 |
|------|------|
| 假突破扫止损（65%频率） | 紧止损（-2.5%），小亏频繁但不致命 |
| 大行情打破区间 | 趋势过滤拦截 + 冷却机制 |
| 滑点（止损跳空） | 仅做主流合约（USDT 永续流动性好） |
| 手续费 | 轨对轨利润（~10%）远大于手续费（0.04%） |
| 过度交易 | 三重过滤 ≥ 筛掉 60% 噪音信号 |

---

## 九、使用原则

1. **仅用于横盘震荡市场**。趋势行情中 BB 套利 = 送钱。
2. **模拟盘验证优先**。先用 `simulate.py --paper` 跑一周，确认表现再实盘。
3. **分散币种**。不要只押一个币，NEAR/AVAX/INJ 各分一部分。
4. **每次执行前跑一次 scan**。确认三重过滤仍然通过。
5. **当 BB 宽度 > 4% 或 RSI 极端时暂停**。等市场平静再入场。

---

## 十、选币准则（月/周线过滤，🎯 2026-08-11 验证）

> 从 30/60/90 天回测 + 月线/周线分析得出。**选币比参数更重要**——同样策略，
> 横盘质量好的币月赚 500-1400%，差的币回撤 50%+ 拿不住。

### 核心规律

1. **「月线震荡」≠「适合」**。ETH/LINK 月净向≈0 但月振幅 44-49%，是"大振幅波动"不是"横盘"——BB 套利照样反复止损（ETH 90 天回撤 53%）。
2. **真横盘 = 小振幅 + 温和方向**。月线振幅 < 50% 且 |净向| < 25% 才适合。
3. **振幅比方向更重要**。月振幅 < 40% 的币（BTC/BNB）回撤天然低；月振幅 > 100%（NEAR 168%）波动大，短期好长期回撤飙。
4. **高回撤 ≠ 高收益可接受**。LINK(+739%回撤57%)/ARB(+636%回撤50%)/LTC(+401%回撤61%)——实盘会腰斩，多数人拿不住。

### 选币评分表（按月线）

| 月线特征 | 判断 | 示例 |
|---------|------|------|
| 振幅 < 40% + \|净向\| < 15% | ✅ 首选，横盘最稳 | BTC / BNB |
| 振幅 < 50% + \|净向\| < 25% | ✅ 适合 | SOL / XRP |
| 振幅 < 60% + 单一方向下行 | ⚠️ 可做，注意趋势过滤 | DOT / ATOM |
| 振幅 > 100% 或 \|净向\| > 40% | ❌ 波动/趋势行情，避开 | NEAR / INJ |
| 振幅 40-50% 但 \|净向\|≈0 | ⚠️ 大振幅震荡，伪横盘 | ETH / LINK |

### 操作流程

**A. 全市场扫描（🎯 2026-08-13 新增，替代手工选币）**

> 币安 USDT 永续合约 **527 个**，逐个人工看太慢。用「预筛 → 深度分析 → 推荐」三级漏斗：

1. **轻量预筛 527 个 → 30 个候选**
   - 拉币安 `exchangeInfo`，筛掉无流动性（24h 成交额过低）、非 USDT 永续、非 TRADING 状态的
   - 筛掉价格异常（市值太小/买卖盘太薄）的币
   - 只留流动性好、可交易的合约
2. **深度分析 30 个 → 推荐 3-5 个**
   - **布林带维度**：7 天 15m BB 宽度是否持续在甜区（0.8%-2.5%）且稳定（标准差低）；%B 能反复触轨（<0.15 或 >0.85）
   - **趋势/动量维度**：7 天 1h 中轨斜率接近 0（|斜率|<0.03%）；30 天净方向温和（|净向|<10%）；振幅适中（10-40%）；RSI 中枢 40-60
   - **回测维度**：跑 `cli/backtest_daily.py --days 7/30`，看累计 PnL 正、最大回撤 < 20%、日均交易 ≥ 2、有交易天数占比高
3. **交叉验证**：三个维度（布林带 + 趋势 + 回测）**一致看好**的币才入选；任一维度明显矛盾（如回测好但趋势强）则降级
4. **启动 testnet 模拟盘**：`python3 cli/paper_testnet.py --symbols <推荐币> --capital 500` 跑 7 天验证

**B. 月线过滤（原方法，作为补充确认）**

1. 拉月线（6 根）算**振幅 = (最高-最低)/起点** 与**净向 = (现价-起点)/起点**
2. 筛掉振幅 > 60% 或 |净向| > 30% 的币
3. 对剩余币跑 `cli/backtest_daily.py --days 30 --min-daily 2` 看**最大回撤 < 20%** 且日均交易 ≥ 2
4. 每次入场前仍跑 `scan` 确认 15m 三重过滤通过（选币是长期过滤，15m 是入场过滤）

---

*天枢 · 2026-08-11*

