第 6 篇:《量化使用看图说话!plot-dataframe 图表可视化教程》

📘 第 6 篇:《量化使用看图说话!plot-dataframe 图表可视化教程》

在策略开发过程中,回测结果常常以表格形式呈现,难以快速定位问题。而 plot-dataframe 命令可以将回测的买卖点、指标线、价格走势可视化为图表,助你一眼看出策略表现。


🚀 想学量化交易?

👉 点击访问:www.itrade.icu 这里有 Freqtrade 基础教程策略实战指标解析 等丰富内容,助你轻松掌握量化交易技巧!


🎯 1. 基础用法:绘制图表

bash 复制代码
freqtrade plot-dataframe \
  --config user_data/config.json \
  --strategy MyStrategy \
  --timerange 20230101-20230201

执行后会在 user_data/plot/ 下生成一个 .html 文件,可直接双击浏览器查看,包含以下内容:

  • K线价格走势
  • 买卖点(Buy/Sell 箭头)
  • 技术指标(如 EMA、MACD 等)

🧾 2. 参数详解

参数 含义
--config 配置文件路径,需包含交易对、时间周期等
--strategy 策略类名(如 MyStrategy
--timerange 指定绘图时间段,格式如 20230101-20230201
--indicators1 绘制在主图上的指标(如 EMA、close)
--indicators2 副图指标(如 RSI、MACD)
--exportfilename 导出文件路径(支持 .html.png
--userdir 自定义 user_data 路径(默认即可)

📐 3. 添加自定义指标

你可以在图表中加入额外的指标,以验证信号逻辑:

代码示例:

python 复制代码
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
    dataframe['ema'] = ta.EMA(dataframe['close'], timeperiod=20)
    dataframe['fast_ema'] = ta.EMA(dataframe['close'], timeperiod=10)
    dataframe['slow_ema'] = ta.EMA(dataframe['close'], timeperiod=50)
    dataframe['rsi'] = ta.RSI(dataframe['close'], timeperiod=14)
    macd, macdsignal, macdhist = ta.MACD(dataframe['close'])
    dataframe['macd'] = macd
    return dataframe
  • --indicators1 会绘制在主图(价格图)上,比如 EMA 线。
  • --indicators2 会绘制在副图中,比如 RSI、MACD。

完整示例:

bash 复制代码
freqtrade plot-dataframe \
  --config user_data/config.json \
  --strategy MyStrategy \
  --timerange 20230101-20230201 \
  --indicators1 close ema fast_ema slow_ema \
  --indicators2 rsi macd
❗注意:

这些指标名称必须是你在策略类的 populate_indicators() 方法中通过 ta 或自定义计算出来并添加进 dataframe 的列名(即 DataFrame 的列名)。否则,它们不会显示在图表上。

  • 这些名称必须和你 dataframe 中的列名完全一致。
  • 否则运行不会报错,但图表不会显示你想看的线。
  • 指标需先在策略的 populate_indicators() 中定义,否则不会生效。

💾 4. 导出为 HTML / PNG

默认输出为 HTML 文件,如需指定:

bash 复制代码
--exportfilename user_data/plot/myplot.html

如需导出 PNG(静态图):

bash 复制代码
--exportfilename user_data/plot/myplot.png

📌 注意:导出 PNG 需要额外安装如 Puppeteer 或 headless Chrome,初学者建议使用 HTML 格式查看。

🐳 5. Docker 环境运行示例

在 Docker 中使用该命令如下:

bash 复制代码
docker compose run --rm freqtrade plot-dataframe \
  --config /quants/freqtrade/user_data/config.json \
  --strategy MyStrategy \
  --timerange 20230101-20230201

确保 docker-compose.yml 中正确挂载了 /quants/freqtrade/user_data 目录。

✅ 6. 使用建议

用途 方法
检查策略逻辑是否合理 查看买卖点是否在合适位置
辅助调试 比对指标与信号关系
策略分享 生成图表后输出为 HTML,方便演示
评估指标表现 同时绘制多个指标看是否冗余

📌 总结

plot-dataframe 是 Freqtrade 提供的可视化利器,尤其适合调试复杂策略和验证买卖逻辑。

推荐使用流程:
  1. 回测策略:
bash 复制代码
freqtrade backtesting \
  --config user_data/config.json \
  --strategy MyStrategy \
  --timeframe 15m \
  --timerange 20220101-20230101
  1. 绘制图表:
bash 复制代码
freqtrade plot-dataframe \
  --config user_data/config.json \
  --strategy MyStrategy \
  --timerange 20250601-20250626
  1. 分析图表:
  • 判断策略买入是否太早/太晚?
  • 是否频繁误报信号?
  • 各种指标是否有效? 掌握 plot-dataframe,从此策略优化有据可依、调优更高效!
相关推荐
钢门狂鸭1 小时前
关于rust的crates.io
开发语言·后端·rust
脑子慢且灵3 小时前
[JavaWeb]模拟一个简易的Tomcat服务(Servlet注解)
java·后端·servlet·tomcat·intellij-idea·web
华仔啊4 小时前
SpringBoot 中 6 种数据脱敏方案,第 5 种太强了,支持深度递归!
java·后端
勇敢牛牛_6 小时前
使用Rust实现服务配置/注册中心
开发语言·后端·rust·注册中心·配置中心
deepwater_zone6 小时前
Go语言核心技术
后端·golang
Rhys..7 小时前
.gitignore文件的作用及用法
python·github
CoderJia程序员甲8 小时前
GitHub 热榜项目 - 日榜(2025-09-12)
ai·github·开源项目·github热榜
爱干饭的boy9 小时前
手写Spring底层机制的实现【初始化IOC容器+依赖注入+BeanPostProcesson机制+AOP】
java·数据结构·后端·算法·spring
蝎子莱莱爱打怪10 小时前
🚀🚀🚀嗨,一起来开发 开源IM系统呀!
前端·后端·github
豌豆花下猫10 小时前
Python 潮流周刊#119:Google 停止开发 Pytype!
后端·python·ai