DEV Community

Henry Lin
Henry Lin

Posted on

第 7 课:Freqtrade多时间框架回测

第 7 课:多时间框架回测

⏱ 课时:2 小时
🎯 学习目标:理解时间框架对策略的影响
📚 难度:⭐⭐ 回测实战


📖 课程概览

同一个策略在不同时间框架下的表现可能截然不同。本课将通过实际测试,帮助你理解时间框架的选择原则,找到最适合你策略的时间周期。


7.1 时间框架的选择原则

三大核心原则

原则 1:交易风格匹配

你的时间投入 → 决定时间框架

全职盯盘(8h+/天)  → 1m-5m(超短线)
兼职盯盘(2-4h/天) → 15m-1h(短线)
偶尔查看(< 1h/天) → 4h-1d(波段)
完全自动化         → 任意时间框架
Enter fullscreen mode Exit fullscreen mode

原则 2:风险承受能力

单笔波动幅度随时间框架增大

1m:  单笔波动 0.1-0.5%  → 风险低,压力小
5m:  单笔波动 0.3-1%    → 风险适中
1h:  单笔波动 1-3%      → 风险较高
1d:  单笔波动 3-10%     → 风险高,心理压力大
Enter fullscreen mode Exit fullscreen mode

原则 3:策略类型适配

趋势跟踪策略    → 长周期(1h-1d)
均值回归策略    → 中短周期(5m-1h)
突破策略        → 中周期(15m-4h)
高频套利策略    → 超短周期(1m-5m)
Enter fullscreen mode Exit fullscreen mode

时间框架特征对比

时间框架 信号频率 信号质量 手续费占比 数据需求 执行要求
1m 极高 低(噪音多) 很高(15-30%) 海量 毫秒级
5m 中低 高(8-15%) 秒级
15m 中高 适中(5-10%) 分钟级
1h 中高 低(2-5%) 适中 小时级
4h 很低(< 2%) 小时级
1d 很低 很高 极低(< 1%) 很小 天级

7.2 不同时间框架的特点

1. 超短线(1m - 5m)

特点详解

优点

  • ✅ 交易机会极多(每天几十到上百笔)
  • ✅ 资金周转快,利用率高
  • ✅ 单笔风险小(止损幅度小)
  • ✅ 快速验证策略(几天就能看到效果)

缺点

  • ❌ 噪音信号多,假突破频繁
  • ❌ 手续费成本高(可能吃掉 30-50% 利润)
  • ❌ 对执行速度要求高(延迟 1 秒都可能影响收益)
  • ❌ 数据量大(1 年 1m 数据 > 500MB/交易对)
  • ❌ 回测速度慢
  • ❌ 滑点影响显著

手续费影响案例

5m 时间框架,30 天回测

交易次数:150 次
平均每笔收益:+0.6%
手续费:0.2% × 150 = 30%

毛利润:0.6% × 150 = 90%
净利润:90% - 30% = 60%

手续费侵蚀:33.3% 的利润!
Enter fullscreen mode Exit fullscreen mode

适合人群

  • 全职交易员
  • 有交易所手续费折扣(VIP 用户)
  • 高频算法交易系统
  • 对延迟和执行有充分准备

风险警告

⚠️ 新手不推荐:回测表现好 ≠ 实盘表现好(滑点和延迟会大幅降低收益)


2. 短线(15m - 1h)

特点详解

优点

  • ✅ 信号质量较好(噪音过滤)
  • ✅ 交易频率适中(每天 5-20 笔)
  • ✅ 手续费影响可控(5-10%)
  • ✅ 数据量适中,回测速度快
  • ✅ 执行要求宽松(几分钟的延迟可接受)
  • ✅ 适合新手练习

缺点

  • ⚠️ 仍需定期监控(不能完全自动化)
  • ⚠️ 日内波动需要承受
  • ⚠️ 隔夜风险(1h 可能跨夜)

最佳实践

15m 时间框架

  • 每根 K 线 15 分钟
  • 每天 96 根 K 线
  • 适合日内交易(早 8:00 - 晚 12:00)
  • 典型持仓时间:1-6 小时

1h 时间框架

  • 每根 K 线 1 小时
  • 每天 24 根 K 线
  • 适合短波段交易
  • 典型持仓时间:4-24 小时

手续费影响案例

1h 时间框架,30 天回测

交易次数:40 次
平均每笔收益:+1.5%
手续费:0.2% × 40 = 8%

毛利润:1.5% × 40 = 60%
净利润:60% - 8% = 52%

手续费侵蚀:13.3% 的利润(可接受)
Enter fullscreen mode Exit fullscreen mode

适合人群

  • 量化交易新手(强烈推荐)
  • 兼职交易者(每天 2-4 小时)
  • 希望快速看到结果
  • 平衡收益和风险

3. 中长线(4h - 1d)

特点详解

优点

  • ✅ 信号质量高(大趋势明确)
  • ✅ 手续费占比极低(< 2%)
  • ✅ 单笔收益高(平均 3-10%)
  • ✅ 无需频繁监控
  • ✅ 滑点影响小
  • ✅ 心理压力小(不用盯盘)

缺点

  • ❌ 交易机会少(每周几笔)
  • ❌ 资金利用率低(长时间占用)
  • ❌ 单笔波动大(需要较大止损空间)
  • ❌ 隔夜风险(周末、节假日风险)
  • ❌ 验证周期长(需要几个月数据)

隔夜风险分析

风险来源

  1. 美股闭市影响:美股大跌 → 加密货币跟跌
  2. 亚洲开盘波动:中国市场开盘时间波动大
  3. 突发新闻:监管政策、黑客攻击、交易所暂停
  4. 周末缺口:周五收盘到周一开盘的价格跳空

应对策略

# 周末前强制平仓(高级用法)
def custom_exit(self, pair, trade, current_time, **kwargs):
    # 如果是周五晚上 22:00 后,强制平仓
    if current_time.weekday() == 4 and current_time.hour >= 22:
        return 'weekend_exit'
Enter fullscreen mode Exit fullscreen mode

适合人群

  • 兼职交易者(每天 < 1 小时)
  • 不喜欢频繁操作
  • 资金量较大(单笔波动承受力强)
  • 长期投资心态

7.3 时间框架与交易风格匹配

交易风格分类

1. 日内交易者(Day Trader)

特征

  • 当天开仓,当天平仓
  • 不持仓过夜
  • 每天 5-20 笔交易

推荐时间框架:5m - 15m
推荐策略:均值回归、突破策略
关键设置

# 确保不过夜(在策略中设置)
minimal_roi = {
    "0": 0.02,   # 2% 立即止盈
    "60": 0.01,  # 1 小时后 1% 止盈
    "300": 0     # 5 小时后平仓
}
Enter fullscreen mode Exit fullscreen mode

2. 波段交易者(Swing Trader)

特征

  • 持仓几天到几周
  • 捕捉中期趋势
  • 每周 2-10 笔交易

推荐时间框架:1h - 4h
推荐策略:趋势跟踪、动量策略
关键设置

minimal_roi = {
    "0": 0.10,      # 10% 立即止盈
    "1440": 0.05,   # 1 天后 5% 止盈
    "4320": 0.02    # 3 天后 2% 止盈
}
Enter fullscreen mode Exit fullscreen mode

3. 趋势交易者(Trend Trader)

特征

  • 持仓几周到几个月
  • 捕捉大级别趋势
  • 每月 1-5 笔交易

推荐时间框架:1d
推荐策略:趋势跟踪、突破策略
关键设置

minimal_roi = {
    "0": 0.30,      # 30% 立即止盈
    "10080": 0.15,  # 1 周后 15% 止盈
    "43200": 0.08   # 1 月后 8% 止盈
}
Enter fullscreen mode Exit fullscreen mode

匹配测试表

你的情况 推荐时间框架 预期交易频率
每天能盯盘 6h+ 5m - 15m 10-50 次/天
每天能看盘 2-4h 15m - 1h 5-20 次/天
每天只能看 1h 1h - 4h 2-10 次/天
每周只看几次 4h - 1d 5-20 次/月
完全自动化 根据策略类型 任意

7.4 多时间框架对比分析

实战测试流程

步骤 1:准备数据

# 下载多个时间框架的数据
freqtrade download-data \
  -c config.json \
  --pairs BTC/USDT \
  --days 90 \
  --timeframes 5m 15m 1h 4h 1d
Enter fullscreen mode Exit fullscreen mode

步骤 2:批量回测

# 测试 5m
freqtrade backtesting -c config.json --strategy Strategy001 --timeframe 5m --timerange 20250701-20250930

# 测试 15m
freqtrade backtesting -c config.json --strategy Strategy001 --timeframe 15m --timerange 20250701-20250930

# 测试 1h
freqtrade backtesting -c config.json --strategy Strategy001 --timeframe 1h --timerange 20250701-20250930

# 测试 1d
freqtrade backtesting -c config.json --strategy Strategy001 --timeframe 1d --timerange 20250701-20250930
Enter fullscreen mode Exit fullscreen mode

步骤 3:使用 Shell 脚本批量测试

创建 test_timeframes.sh

#!/bin/bash

STRATEGY="Strategy001"
CONFIG="config.json"
TIMERANGE="20250701-20250930"

for TIMEFRAME in 5m 15m 1h 4h 1d
do
  echo "========================================"
  echo "Testing $STRATEGY on $TIMEFRAME"
  echo "========================================"

  freqtrade backtesting \
    -c $CONFIG \
    --strategy $STRATEGY \
    --timeframe $TIMEFRAME \
    --timerange $TIMERANGE

  echo ""
  echo "Finished $TIMEFRAME, press Enter to continue..."
  read
done

echo "All tests completed!"
Enter fullscreen mode Exit fullscreen mode

运行脚本:

chmod +x test_timeframes.sh
./test_timeframes.sh
Enter fullscreen mode Exit fullscreen mode

对比分析模板

创建对比表格记录结果:

指标 5m 15m 1h 4h 1d
交易次数
胜率 %
总收益 %
平均收益 %
最大回撤 %
Sharpe Ratio
ROI 退出占比
止损退出占比
平均持仓时间
手续费占比

真实案例分析

假设 Strategy001 在不同时间框架的表现

时间框架 交易次数 胜率 总收益 平均收益 最大回撤 Sharpe 手续费占比 评分
5m 247 68% +12.5% +0.05% -8.2% 1.85 19.8% ⭐⭐
15m 89 75% +18.3% +0.21% -6.5% 2.65 9.7% ⭐⭐⭐⭐
1h 31 81% +15.7% +0.51% -4.8% 3.12 3.9% ⭐⭐⭐⭐⭐
4h 12 83% +9.2% +0.77% -3.2% 2.88 2.6% ⭐⭐⭐⭐
1d 4 100% +6.8% +1.70% -2.1% 3.45 1.2% ⭐⭐⭐

分析结论

5m 时间框架

  • ❌ 交易过于频繁(247 次)
  • ❌ 手续费侵蚀严重(19.8%)
  • ❌ 平均收益极低(0.05%)
  • ❌ Sharpe Ratio 偏低(1.85)
  • 结论:不适合此策略

15m 时间框架

  • ✅ 交易次数适中(89 次)
  • ✅ 胜率良好(75%)
  • ✅ 总收益高(18.3%)
  • ✅ 手续费可控(9.7%)
  • ✅ Sharpe Ratio 优秀(2.65)
  • 结论:非常适合,平衡了收益和频率

1h 时间框架

  • ✅ 胜率最高(81%)
  • ✅ Sharpe Ratio 最高(3.12)
  • ✅ 回撤最小(4.8%)
  • ✅ 手续费极低(3.9%)
  • ⚠️ 总收益略低于 15m
  • 结论:最佳选择,风险收益比最优

4h 时间框架

  • ✅ 胜率高(83%)
  • ✅ 平均收益高(0.77%)
  • ⚠️ 交易次数少(12 次,样本小)
  • ⚠️ 总收益较低(9.2%)
  • 结论:可选,但需要更长时间验证

1d 时间框架

  • ✅ 胜率 100%(4 次全胜)
  • ✅ 平均收益最高(1.70%)
  • ❌ 交易次数过少(仅 4 次)
  • ❌ 样本不足,不具代表性
  • 结论:需要更长时间验证(至少 1 年数据)

最优时间框架判断标准

综合评分公式

总分 = 总收益(30%) + Sharpe(25%) + 胜率(20%) + 交易次数合理性(15%) + 手续费占比(10%)
Enter fullscreen mode Exit fullscreen mode

应用到案例

15m: (18.3×0.3) + (2.65×10×0.25) + (75×0.2) + (100×0.15) + ((100-9.7)×0.1) = 5.49 + 6.63 + 15 + 15 + 9.03 = 51.15
1h:  (15.7×0.3) + (3.12×10×0.25) + (81×0.2) + (90×0.15) + ((100-3.9)×0.1) = 4.71 + 7.80 + 16.2 + 13.5 + 9.61 = 51.82 ⭐

结论:1h 略胜一筹
Enter fullscreen mode Exit fullscreen mode

💡 实践任务

任务 1:数据准备

# 下载 BTC/USDT 多时间框架数据
conda activate freqtrade
freqtrade download-data \
  -c config.json \
  --pairs BTC/USDT \
  --days 90 \
  --timeframes 5m 15m 1h 1d
Enter fullscreen mode Exit fullscreen mode

任务 2:批量回测

选择一个策略(推荐 Strategy001),测试 4 个时间框架:

# 5m
freqtrade backtesting -c config.json --strategy Strategy001 --timeframe 5m --timerange 20250701-20250930

# 15m
freqtrade backtesting -c config.json --strategy Strategy001 --timeframe 15m --timerange 20250701-20250930

# 1h
freqtrade backtesting -c config.json --strategy Strategy001 --timeframe 1h --timerange 20250701-20250930

# 1d
freqtrade backtesting -c config.json --strategy Strategy001 --timeframe 1d --timerange 20250701-20250930
Enter fullscreen mode Exit fullscreen mode

任务 3:制作对比表格

创建 Excel 表格,记录以下信息:

指标 5m 15m 1h 1d
交易次数 ? ? ? ?
胜率 ? ? ? ?
总收益 % ? ? ? ?
平均收益 % ? ? ? ?
最大回撤 % ? ? ? ?
Sharpe Ratio ? ? ? ?
平均持仓时间 ? ? ? ?
手续费占比 % ? ? ? ?

任务 4:找出最优时间框架

根据你的对比表格,回答以下问题:

  1. 哪个时间框架总收益最高?
  2. 哪个时间框架 Sharpe Ratio 最高?
  3. 哪个时间框架回撤最小?
  4. 哪个时间框架手续费占比最低?
  5. 综合考虑,你认为哪个时间框架最适合这个策略?

任务 5:撰写分析报告

写一份 200-300 字的分析报告:

报告模板

策略名称:___________
测试时间范围:___________
测试交易对:___________

时间框架对比分析:
- 5m 表现:___________ (优点/缺点)
- 15m 表现:___________ (优点/缺点)
- 1h 表现:___________ (优点/缺点)
- 1d 表现:___________ (优点/缺点)

最优选择:___________
选择理由:___________

风险提示:___________
Enter fullscreen mode Exit fullscreen mode

📚 知识检查

基础问题

  1. 为什么 5m 时间框架手续费占比高?
  2. 1d 时间框架的主要风险是什么?
  3. 如果你每天只能看盘 1 小时,应该选择什么时间框架?

答案

  1. 交易次数多,每次交易都要支付手续费,累计占比就高
  2. 隔夜风险(周末缺口、突发新闻)和样本少(验证周期长)
  3. 1h 或 4h,这样不需要频繁盯盘,也能捕捉到好的交易机会

进阶问题

  1. 为什么同一个策略在不同时间框架表现差异大?
  2. 如何判断时间框架测试的样本量是否足够?
  3. 短周期回测效果好,是否意味着实盘也会好?

思考题

  1. 如果一个策略在所有时间框架表现都差,说明什么?
  2. 是否可以同时在多个时间框架运行同一个策略?
  3. 多时间框架组合策略(如用 1h 确认趋势,5m 入场)有什么优势?

🔧 常见问题与解决

问题 1:回测时提示数据不足

错误信息

No data found for timeframe 1d in the specified timerange
Enter fullscreen mode Exit fullscreen mode

解决方案

# 确认已下载该时间框架数据
freqtrade list-data -c config.json

# 重新下载
freqtrade download-data -c config.json --timeframes 1d --days 90
Enter fullscreen mode Exit fullscreen mode

问题 2:1d 时间框架只有几笔交易

原因

  • 样本期太短(90 天 = 90 根 1d K 线)
  • 策略本身交易频率低

解决方案

# 下载更长时间的数据(1-2 年)
freqtrade download-data -c config.json --timeframes 1d --days 730
Enter fullscreen mode Exit fullscreen mode

问题 3:不同时间框架结果波动大

原因

  • 市场环境变化
  • 策略过拟合
  • 样本量不足

解决方案

  • 测试更长的时间范围
  • 测试不同的市场环境(牛市、熊市、震荡)
  • 进行样本外测试

📊 时间框架选择决策树

开始
  │
  ├─ 你能全职盯盘吗?
  │   ├─ 是 → 有手续费折扣吗?
  │   │        ├─ 是 → 5m(高频交易)
  │   │        └─ 否 → 15m(日内交易)
  │   │
  │   └─ 否 → 每天能看几次?
  │            ├─ 2-4 次 → 1h(短波段)
  │            ├─ 1-2 次 → 4h(中波段)
  │            └─ < 1 次 → 1d(长波段)
  │
  └─ 你的风险承受能力?
      ├─ 低 → 选择长周期(1h-1d)
      ├─ 中 → 选择中周期(15m-1h)
      └─ 高 → 选择短周期(5m-15m)
Enter fullscreen mode Exit fullscreen mode

🔗 参考资料

配套文档

推荐阅读


📌 核心要点总结

  1. 没有最好的时间框架,只有最合适的
  2. 短周期 = 高频率 + 高手续费 + 高噪音
  3. 长周期 = 低频率 + 低手续费 + 高质量
  4. 新手推荐 15m-1h:平衡收益、风险和操作频率
  5. 样本量很重要:1d 至少需要 1 年数据
  6. 回测好 ≠ 实盘好:短周期策略受滑点影响大

➡️ 下一课预告

第 8 课:策略批量对比

在下一课中,我们将:

  • 学习批量回测多个策略的方法
  • 快速对比策略性能
  • 掌握策略选择决策树
  • 制作策略推荐清单

准备工作

  • ✅ 确保有 5 个以上策略可用
  • ✅ 选定测试的时间框架(推荐 15m 或 1h)
  • ✅ 准备 90 天以上的数据

🎯 学习检验标准

  • ✅ 能独立测试策略在多个时间框架的表现
  • ✅ 理解不同时间框架的优缺点
  • ✅ 能根据自己的情况选择合适的时间框架
  • ✅ 会制作时间框架对比分析表

完成这些任务后,你已经掌握了时间框架选择的核心技能!准备进入策略对比的学习吧!🚀

Top comments (0)