Files
Hermes-Skills/crypto-t-monitor/references/backtest-usage.md
T
mikeandClaude 4aae222173 feat(crypto-t-monitor): v2.3.0 新币自动挑选池 (PICKS=2, POOL_MAX=6)
- NEW_COIN_PICKS=2: 每次扫描后筛 2 个 (按 24h vol 排序)
- NEW_COIN_POOL_MAX=6: 永久保留上限, 超限自动裁最早加入
- 30 天内新币 + 24h vol > $1M, 自动加入监控池
- 推 QQ 仅在变化时 (与 v2.1 C 方案一致)
- references/: 新增 backtest-usage.md, change-driven-push.md, symbol-coverage-pitfall.md

用户原话: 新币最多保留六个, 每次扫描后筛选

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-10 19:43:21 +08:00

129 lines
4.2 KiB
Markdown

# Backtest 使用指南 (crypto-t-monitor v2.0.0)
## 概述
`backtest.py` 用 OKX 历史 K 线模拟做T策略,验证参数在历史数据上的胜率和盈亏。
**适用**: 验证 `atr_multiplier` / `t_qty` / `bar` 参数组合,不是高频回测引擎(单 symbol, 单次模拟)。
## 快速开始
```bash
# 默认 (ETH, 短期 = 1H K线, 7 天) - 用户偏好
python3 ~/.hermes/scripts/crypto/backtest.py ETH
# 显式指定 4H/30 天 趋势模式
python3 ~/.hermes/scripts/crypto/backtest.py BTC --mode trend
# 自定义 ATR 系数 (默认 0.7)
python3 ~/.hermes/scripts/crypto/backtest.py ETH \
--days 14 --bar 4H --atr-multiplier 0.5 --t-qty 0.03
```
## 参数说明
| 参数 | 默认 | 选择 | 说明 |
|---|---|---|---|
| `symbol` (必填) | - | ETH/BTC/SOL/DOGE/XRP | OKX 永续合约 |
| `--mode` | **short** (用户偏好) | short/trend | short = 1H+7天 短线;trend = 4H+30天 趋势 |
| `--days` | mode 决定 | 1-90 | 回测窗口天数 |
| `--bar` | mode 决定 | 1H/4H/1D | K 线周期(以 mode 默认覆盖) |
| `--atr-multiplier` | 0.7 (实测甜点) | 0.3-2.0 | ATR 倍数,越大越保守 |
| `--t-qty` | 0.05 | 0.01-1 | 单笔张数 |
| `--leverage` | 25 | 5-125 | 杠杆倍数 |
| `--ct-val` | 0.1 | 看币种 | 合约面值(代码里 SYMBOL_SPECS) |
## ATR 倍数选择 (实测 2026-07-10, 200根 1H K线)
| ATR | 交易/7天 | 胜率 | 总盈亏 |
|-----|---------|------|-------|
| 0.5 | 124 | 79.0% | $16.36 |
| **0.7** | 适中 | **81.6%** ⭐ | **$16.41** |
| 1.0 | 偏少 | 78.8% | $11.54 |
| 1.5 | 很少 | 66.7% | $4.17 |
**结论**: 短期模式 ATR=0.7 是甜点(已落地 `crypto/okx_t_monitor.py` v2.0.0)。不要用 0.5(交易过度,手续费吃光)或 1.5(过保守,捕捉不到)。
## 输出解读
```
📊 ETH 1H 回测 (7 天, mode=short)
ATR=0.5 t_qty=0.05 lev=25x
📥 拉到 200 根 K 线
📈 回测结果:
买入: 62 次
卖出: 62 次
胜率: 79.0%
总盈亏: $16.36
最终仓位: 0 (全平)
```
**评估表**:
| 指标 | 达标 | 警告 |
|------|------|------|
| 胜率 | ≥ 60% | < 50% |
| 总盈亏 | > 0 | < -10 USDT |
| 交易频率(7天) | 20-50 次 | > 100 (手续费吃光) |
| 最大回撤 | < 15% 资金 | > 25% |
## 参数调优示例
```bash
# 测试不同 ATR 倍数
for m in 0.3 0.5 0.7 1.0 1.5; do
echo "=== ATR $m ==="
python3 ~/.hermes/scripts/crypto/backtest.py ETH --atr-multiplier $m
done
# 测试不同币种找参数稳健性 (避免过拟合单个币种)
for sym in ETH BTC SOL; do
echo "=== $sym ==="
python3 ~/.hermes/scripts/crypto/backtest.py $sym
done
# 找到最佳参数后才落盘到 okx_t_monitor.py
```
## 🛑 使用禁忌
- **不要过拟合**: 用 200 根 K 线找出来"最佳参数"对外样本(未来)很可能失效。**每月最多调一次参数**。
- **不要同时改多个参数**: 1 个 → 验证 → 再改下一个
- **不要在战斗日调参**: 周一调参, 周二之前观察,如果连续 2 单连亏 → 立即退回上次稳定参数
## 已知问题 + 临时绕路
### 1. Clash 抽风 → subprocess 20s timeout
**症状**: `[Command timed out after 20 seconds]`
**绕路**:
- 手动重试 (90% 概率下次成功)
- SSH 跑: `ssh openclaw@vps 'python3 ~/.hermes/scripts/crypto/backtest.py ETH'`
### 2. 4H K 线拉不够 30 天
**症状**: `--mode trend --days 30 --bar 4H` 报 "❌ 没拉到数据"
**原因**: OKX history-candles 4H 翻页逻辑当前代码有 bug
**绕路**: 用 `--mode short --days 28 --bar 1H` (200 根 K 线)
### 3. 回测假设市价滑点 = 0
实际 4H K 线内会有 0.05-0.1% 滑点 + taker 手续费 0.05%。**真实盈利 ≈ 回测盈利 × 0.85**。**避免把回测当实盘 max**。
## 实战工作流
1. 调参前 baseline: `python3 ~/.hermes/scripts/crypto/backtest.py ETH > /tmp/baseline.txt`
2.`atr_multiplier`,观察胜率和总盈亏
3. 找到最佳参数后,跑 BTC/SOL 验证(避免过拟合单个币种)
4. ≥ 3 个币种一致胜率 > 60% 才推到 `okx_t_monitor.py`
5. 实战**先用 0.01 张试水 2-3 天**,验证后再扩大规模
## 相关文件
- 脚本: `~/.hermes/scripts/crypto/backtest.py`
- 主监控: `~/.hermes/scripts/crypto/okx_t_monitor.py`
- ATR 算法详解: `references/level-dynamic-calculation.md` (TODO)
- 网络重试机制: `references/api-fallback.md` (TODO)