DEV Community

Henry Lin
Henry Lin

Posted on

第 19 课:Freqtrade可视化分析工具

第 19 课:可视化分析工具

⏱ 课时:1.5 小时
🎯 学习目标:学会使用图表分析工具,通过可视化手段深入理解策略信号和市场行为

📚 课程大纲

  • 19.1 plot-dataframe 生成图表
  • 19.2 图表解读

课程概述

可视化是理解交易策略的强大工具。通过图表,你可以直观地看到:

  • 买卖信号在 K 线图上的位置
  • 技术指标的变化趋势
  • 策略在不同市场条件下的表现
  • 信号质量和时机的准确性

Freqtrade 提供的 plot-dataframeplot-profit 命令可以生成交互式 HTML 图表,帮助你从视觉角度分析策略。


19.1 plot-dataframe 生成图表

19.1.1 基础用法

plot-dataframe 命令可以为指定的交易对生成 K 线图和指标图表。

基本命令格式

freqtrade plot-dataframe \
    -c config.json \
    --strategy YourStrategy \
    --pairs BTC/USDT ETH/USDT \
    --timerange 20230101-20230131 \
    --no-trades
Enter fullscreen mode Exit fullscreen mode

参数说明

  • -c config.json: 指定配置文件
  • --strategy: 要分析的策略名称
  • --pairs: 要绘制的交易对(可指定多个)
  • --timerange: 时间范围(格式:YYYYMMDD-YYYYMMDD)

示例:绘制单个交易对

freqtrade plot-dataframe \
    -c config.json \
    --strategy Strategy001 \
    --pairs BTC/USDT \
    --timerange 20250601-20251001 \
    --no-trades
Enter fullscreen mode Exit fullscreen mode

输出:

Loading data from 2023-01-01 to 2023-02-01 ...
Analyzing Strategy001 on BTC/USDT ...
Generating plot ...
Saved plot to user_data/plot/freqtrade-plot-BTC_USDT-5m.html
Enter fullscreen mode Exit fullscreen mode

19.1.2 高级参数

1. 指定指标

使用 --indicators1--indicators2 参数可以控制显示哪些指标:

freqtrade plot-dataframe \
    -c config.json \
    --strategy MovingAverageCrossStrategy \
    --pairs BTC/USDT \
    --indicators1 ema_fast ema_slow \
    --indicators2 rsi macd \
    --timerange 20251001-20251015 \
    --no-trades
Enter fullscreen mode Exit fullscreen mode

指标分组说明

  • --indicators1: 显示在主图(K 线图)上的指标(如均线)
  • --indicators2: 显示在副图上的指标(如 RSI、MACD)

2. 包含交易信号

添加 --trade-source 参数可以在图表上标注实际的交易:

# 从回测结果中加载交易
freqtrade plot-dataframe \
    -c config.json \
    --strategy Strategy001 \
    --pairs BTC/USDT \
    --trade-source file \
    --export-filename user_data/backtest_results/backtest-result-2023-01-15.json
Enter fullscreen mode Exit fullscreen mode

3. 绘制多个时间周期

freqtrade plot-dataframe \
    -c config.json \
    --strategy MultiTimeframeTrendStrategy \
    --pairs BTC/USDT \
    --timeframe 5m \
    --timerange 20230101-20230107 \
    --no-trades
Enter fullscreen mode Exit fullscreen mode

19.1.3 完整示例

# 绘制带有完整交易信号的图表
freqtrade plot-dataframe \
    -c config.json \
    --strategy MovingAverageCrossStrategy \
    --pairs BTC/USDT ETH/USDT BNB/USDT \
    --timerange 20230101-20230131 \
    --indicators1 ema_fast ema_slow \
    --indicators2 rsi volume \
    --trade-source file \
    --export-filename user_data/backtest_results/backtest-result-2023-01-20.json
Enter fullscreen mode Exit fullscreen mode

19.1.4 plot-profit 利润图表

除了 K 线图,还可以生成利润曲线图:


# 使用回测结果查看:
freqtrade backtesting-show -c config.json --backtest-filename user_data/backtest_results/backtest-result-2025-11-03_15-55-45.zip
# 查看具体交易记录:
freqtrade show-trades -c config.json --db-url sqlite:///tradesv3.dryrun.sqlite

freqtrade plot-profit \
    -c config.json \
    --strategy Strategy001 \
    --pairs BTC/USDT ETH/USDT \
    --timerange 20250101-20250331 \
    --export-filename user_data/backtest_results/backtest-result-2025-01-20.json
Enter fullscreen mode Exit fullscreen mode

输出:

Saved plot to user_data/plot/freqtrade-profit-plot.html
Enter fullscreen mode Exit fullscreen mode

利润图表包含

  • 累计利润曲线
  • 每日利润柱状图
  • 回撤曲线
  • 持仓数量变化

19.2 图表解读

19.2.1 K 线图解读

生成的 HTML 图表是交互式的,可以使用 Plotly 的功能进行缩放、平移和悬停查看数据。

图表结构

典型的 plot-dataframe 图表包含三个部分:

┌─────────────────────────────────────────┐
│  主图:K线 + 均线指标                      │
│  📈 蜡烛图 + EMA/SMA 曲线                 │
│  🟢 买入信号点 🔴 卖出信号点               │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│  副图1:震荡指标 (RSI, Stochastic)        │
│  📊 0-100 范围的指标                      │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│  副图2:MACD 或其他指标                   │
│  📉 柱状图 + 信号线                       │
└─────────────────────────────────────────┘
Enter fullscreen mode Exit fullscreen mode

信号标记

  • 🟢 绿色三角形(向上):买入信号
  • 🔴 红色三角形(向下):卖出信号
  • 蓝色实线区域:持仓期间

19.2.2 优质信号特征

通过可视化分析,可以识别优质的交易信号:

✅ 好的买入信号

特征:
1. 价格在支撑位附近反弹
2. 多个指标同时发出信号(EMA 金叉 + RSI 超卖恢复)
3. 成交量放大确认
4. 趋势与信号一致

示例场景:
- RSI 从 30 以下回升
- 快速 EMA 向上穿越慢速 EMA
- MACD 柱状图由负转正
- 价格突破短期下降趋势线
Enter fullscreen mode Exit fullscreen mode

❌ 差的买入信号

特征:
1. 横盘震荡中的假突破
2. 指标背离(价格新低,RSI 未创新低)
3. 成交量萎缩
4. 逆势交易(下跌趋势中买入)

示例场景:
- RSI 在 50-70 区间反复波动
- EMA 交叉频繁但价格横盘
- 下跌趋势中的短暂反弹
- MACD 柱状图变化微弱
Enter fullscreen mode Exit fullscreen mode

19.2.3 实际案例分析

案例1:趋势跟随策略

假设使用 MovingAverageCrossStrategy,查看图表:

观察要点

1. 金叉买入信号
   - EMA(20) 向上穿越 EMA(50)
   - 此时 RSI 应该在 50 以上(确认上涨动能)
   - 价格应该在均线之上运行

2. 死叉卖出信号
   - EMA(20) 向下穿越 EMA(50)
   - RSI 跌破 50(动能转弱)
   - 价格跌破均线支撑

3. 持仓期间
   - 价格沿着快速均线运行
   - RSI 保持在 40-70 区间(健康趋势)
   - 无大幅回撤
Enter fullscreen mode Exit fullscreen mode

图表示例分析

时间轴      │ K线价格    │ EMA20   │ EMA50   │ RSI   │ 信号
────────────┼───────────┼─────────┼─────────┼───────┼─────────
2023-01-05  │ 16500     │ 16450   │ 16600   │ 45    │ 空仓
2023-01-06  │ 16800  ↗  │ 16520 ↗ │ 16580 ↗ │ 58 ↗  │ 🟢 买入
2023-01-07  │ 17200     │ 16680   │ 16570   │ 65    │ 持仓
2023-01-08  │ 17500     │ 16890   │ 16560   │ 72    │ 持仓
2023-01-09  │ 17300     │ 17050   │ 16560   │ 68    │ 持仓
2023-01-10  │ 16900  ↘  │ 17100 ↘ │ 16570 ↗ │ 52 ↘  │ 🔴 卖出

分析:
- 金叉买入时,RSI 刚突破 50,动能确认
- 持仓期间,价格稳定运行在 EMA20 之上
- 死叉卖出时,RSI 回落至 50 附近,及时止盈
- 盈利:17300 - 16800 = +500 (+2.98%)
Enter fullscreen mode Exit fullscreen mode

案例2:震荡市场的假信号

观察要点

1. 频繁交叉
   - 短期内多次金叉死叉
   - 每次持仓时间很短(<10 根 K 线)
   - 价格上下反复,无明确方向

2. 指标混乱
   - RSI 在 40-60 区间反复
   - MACD 柱状图正负交替
   - 成交量无明显特征

3. 结果
   - 频繁交易,累计手续费高
   - 盈亏交替,整体收益差
Enter fullscreen mode Exit fullscreen mode

改进建议

1. 增加过滤条件
   - 要求趋势确认(ADX > 25)
   - 限制最小持仓时间
   - 增加成交量确认

2. 调整参数
   - 使用更长周期的均线(减少交叉频率)
   - 提高 RSI 阈值(70/30 改为 80/20)

3. 市场环境识别
   - 震荡市场暂停交易
   - 只在趋势明确时入场
Enter fullscreen mode Exit fullscreen mode

19.2.4 利润图表解读

plot-profit 生成的利润图表包含关键信息:

累计利润曲线

理想曲线特征:
✅ 稳定上升,斜率均匀
✅ 回撤幅度小且快速恢复
✅ 无长期横盘或下跌

需要警惕:
❌ 陡峭上升后急剧回撤(高风险)
❌ 长期横盘不涨(资金效率低)
❌ 频繁的小幅波动(过度交易)
Enter fullscreen mode Exit fullscreen mode

回撤分析

观察要点:
1. 最大回撤深度
   - 优秀:< 10%
   - 可接受:10-20%
   - 高风险:> 20%

2. 回撤持续时间
   - 短暂回撤(几天):正常波动
   - 长期回撤(数周):策略可能失效

3. 回撤频率
   - 偶尔回撤:健康
   - 频繁回撤:策略不稳定
Enter fullscreen mode Exit fullscreen mode

19.2.5 图表分析检查清单

使用图表时,按以下清单逐项检查:

信号质量检查

  • [ ] 买入信号是否出现在合理位置(支撑位、趋势起点)
  • [ ] 卖出信号是否及时(趋势反转、止盈位)
  • [ ] 多个指标是否相互确认(不矛盾)
  • [ ] 成交量是否支持信号的有效性

策略行为检查

  • [ ] 持仓时间是否合理(不过短或过长)
  • [ ] 止损是否有效触发
  • [ ] 盈利交易与亏损交易的比例
  • [ ] 在不同市场环境下的表现(趋势、震荡、暴跌)

指标设置检查

  • [ ] 均线周期是否适合时间框架
  • [ ] RSI 阈值是否合理(70/30 或 80/20)
  • [ ] MACD 参数是否匹配市场节奏
  • [ ] 是否有指标冗余(多个指标给出相同信号)

📝 实践任务

任务 1:生成基础图表

  1. 选择一个已测试的策略(如 Strategy001
  2. 生成 BTC/USDT 的 K 线图表:
   freqtrade plot-dataframe \
       -c config.json \
       --strategy Strategy001 \
       --pairs BTC/USDT \
       --timerange 20230101-20230131
Enter fullscreen mode Exit fullscreen mode
  1. 在浏览器中打开生成的 HTML 文件
  2. 观察并记录:
    • 总共有多少个买入信号?
    • 总共有多少个卖出信号?
    • 最长持仓时间是多久?

任务 2:分析信号质量

  1. 在图表中找出 3 个最好的买入信号
  2. 分析为什么这些信号质量高:
    • 技术指标的配合情况
    • 价格所处的位置(支撑/阻力)
    • 市场趋势环境
  3. 找出 3 个最差的买入信号(导致亏损)
  4. 分析失败原因:
    • 是假突破吗?
    • 是逆势交易吗?
    • 止损设置是否合理?

任务 3:生成利润图表

  1. 运行回测并导出结果:
   freqtrade backtesting \
       -c config.json \
       --strategy Strategy001 \
       --timerange 20230101-20230331 \
       --export trades
Enter fullscreen mode Exit fullscreen mode
  1. 生成利润图表:
   freqtrade plot-profit \
       -c config.json \
       --strategy Strategy001 \
       --export-filename user_data/backtest_results/backtest-result-YYYY-MM-DD_HH-MM-SS.json
Enter fullscreen mode Exit fullscreen mode
  1. 分析利润曲线:
    • 最大回撤在哪个时间段?
    • 最大盈利在哪个时间段?
    • 曲线是否平滑上升?

任务 4:对比不同策略

  1. 分别绘制 3 个不同策略的图表
  2. 使用相同的交易对和时间范围
  3. 对比分析:
    • 哪个策略的信号最清晰?
    • 哪个策略的信号数量最合理?
    • 哪个策略在震荡市场中表现更好?

任务 5:优化指标显示

  1. 尝试只显示关键指标:
   freqtrade plot-dataframe \
       -c config.json \
       --strategy MovingAverageCrossStrategy \
       --pairs BTC/USDT \
       --indicators1 ema_fast ema_slow \
       --indicators2 rsi
Enter fullscreen mode Exit fullscreen mode
  1. 清理冗余指标,保持图表简洁
  2. 确保每个显示的指标都有明确作用

🧪 知识检查

选择题

  1. plot-dataframe 命令主要用于:

    • A. 下载历史数据
    • B. 生成 K 线和指标图表
    • C. 执行回测
    • D. 优化参数
  2. 图表中的绿色三角形表示:

    • A. 价格上涨
    • B. 买入信号
    • C. 指标超买
    • D. 止损触发
  3. --indicators1 参数用于指定:

    • A. 显示在主图上的指标
    • B. 显示在副图上的指标
    • C. 第一个交易对的指标
    • D. 最重要的指标
  4. 以下哪个是优质买入信号的特征?

    • A. 价格在阻力位附近
    • B. 多个指标同时确认
    • C. 成交量萎缩
    • D. RSI 处于超买区
  5. plot-profit 命令生成的图表不包括:

    • A. 累计利润曲线
    • B. 回撤曲线
    • C. K 线图
    • D. 每日利润柱状图

简答题

  1. 解释为什么可视化分析对策略开发很重要?

  2. 如何通过图表识别震荡市场中的假信号?

  3. 描述一个理想的买入信号应该具备哪些特征?

  4. 利润曲线中出现长期横盘说明什么问题?如何改进?

  5. 在图表中看到频繁的买卖信号交替时,应该如何调整策略?

实践题

  1. 生成 MeanReversionStrategy 的图表,分析:

    • 该策略在趋势市场中表现如何?
    • 是否有过多的逆势交易?
    • 如何通过图表优化进出场时机?
  2. 对比同一交易对在 5m、15m、1h 三个时间框架的图表:

    • 信号数量有何差异?
    • 哪个时间框架的信号更清晰?
    • 如何选择最佳时间框架?

📌 核心要点

关键命令

# 生成 K 线图表
freqtrade plot-dataframe \
    -c config.json \
    --strategy YourStrategy \
    --pairs BTC/USDT \
    --timerange 20230101-20230131

# 指定显示的指标
freqtrade plot-dataframe \
    -c config.json \
    --strategy YourStrategy \
    --pairs BTC/USDT \
    --indicators1 ema_fast ema_slow \
    --indicators2 rsi macd

# 生成利润图表
freqtrade plot-profit \
    -c config.json \
    --strategy YourStrategy \
    --export-filename user_data/backtest_results/backtest-result.json
Enter fullscreen mode Exit fullscreen mode

图表解读要点

  1. 信号位置:好的信号出现在支撑/阻力位、趋势起点
  2. 指标确认:多个指标同时给出信号,可靠性更高
  3. 成交量:放量确认信号有效性
  4. 趋势环境:顺势交易成功率更高

优质信号特征

✅ 买入信号:
   - 价格在支撑位反弹
   - RSI 从超卖区恢复
   - EMA 金叉确认
   - 成交量放大

✅ 卖出信号:
   - 价格触及阻力位
   - RSI 进入超买区
   - EMA 死叉确认
   - 上涨动能衰竭
Enter fullscreen mode Exit fullscreen mode

常见问题

问题 原因 解决方案
信号过多 参数过于敏感 增加均线周期,提高 RSI 阈值
信号过少 参数过于保守 降低均线周期,放宽条件
假信号频繁 震荡市场 增加趋势过滤(ADX),避免横盘交易
止损频繁触发 止损太紧 适当放宽止损,或使用 ATR 动态止损

🎯 下节预告

第 20 课:模拟交易验证

在下一课中,我们将学习:

  • 20.1 模拟交易的重要性
  • 20.2 监控指标与警报

关键内容

  • 如何运行长期 Dry-run(1-2 周)
  • 如何监控实时表现
  • 如何设置 Telegram 警报
  • 如何判断策略是否准备好实盘

可视化分析帮助你理解策略的历史表现,而模拟交易将验证策略在实时市场中的表现。两者结合,才能全面评估策略的可靠性。


🎓 学习建议

  1. 每个策略都应该生成图表分析
  2. 重点关注亏损交易,找出失败模式
  3. 对比不同时间周期,选择最佳设置
  4. 使用图表优化参数,而不是盲目调整
  5. 保存优秀和失败的案例,建立自己的分析库

通过反复的图表分析和优化,你将逐渐形成对市场和策略的直觉。记住:看懂图表,才能理解策略;理解策略,才能持续盈利

Top comments (0)