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

4.2 KiB
Raw Blame History

Backtest 使用指南 (crypto-t-monitor v2.0.0)

概述

backtest.py 用 OKX 历史 K 线模拟做T策略,验证参数在历史数据上的胜率和盈亏。

适用: 验证 atr_multiplier / t_qty / bar 参数组合,不是高频回测引擎(单 symbol, 单次模拟)。

快速开始

# 默认 (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%

参数调优示例

# 测试不同 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)