资讯动态

Freqtrade 数据分析指南:用 Jupyter Notebook 分析回测与真实交易数据

发布时间:2026/9/8 23:54:14 来源:尧图企业网站定制
Freqtrade 数据分析指南用 Jupyter Notebook 分析回测与真实交易数据【免费下载链接】freqtradeFree, open source crypto trading bot项目地址: https://gitcode.com/GitHub_Trending/fr/freqtrade本篇技术指南聚焦于 freqtrade 官方推荐的第三种工作流——用 Jupyter Notebook 做数据分析与可视化。回测backtest与实盘bot operations产生的数据量大、结构复杂纯靠命令行逐条查看效率极低本文会完整讲解如何通过 Docker 或虚拟环境快速启动 Jupyter Lab、如何加载经过完整初始化的 Freqtrade 配置、如何使用官方示例 notebook并给出可直接复制运行的实用代码片段帮助你基于源码理解数据读取与配置合并的底层机制。为什么需要 Notebook 分析层Freqtrade 的日常工作可以按任务类型拆分到三种工具上官方在 docs/data-analysis.md 中给出了清晰的推荐工作流任务类型推荐工具Bot 操作下载数据、回测、实盘、导出结果CLI重复性任务保存带参数的长命令、多步骤操作、自动化测试策略并准备分析数据Shell 脚本数据分析与可视化数据整理、绘图、洞察生成Notebook也就是说数据的获取与回测用 CLI 完成批量流程沉淀为 Shell 脚本而最终对结果的“打磨洞察”放到 Notebook 中完成。Notebook 尤其适合把原始 OHLCV、指标列、逐笔成交数据与回测成交记录放在一起反复切片、变形与绘图这也是它成为官方推荐分析工具的原因。准备工作初始化用户目录并获取示例 Notebook执行freqtrade create-userdir --userdir user_data完成用户目录初始化后示例 notebook 会被放置到user_data/notebooks/目录下。该命令对应的实现可在 freqtrade/commands/deploy_commands.py 与目录结构工具 freqtrade/configuration/directory_operations.py 中查看它会从模板目录复制预置文件。仓库内置的官方示例 notebook 位于 freqtrade/templates/strategy_analysis_example.ipynb对应其文档版 docs/strategy_analysis_example.md。初始化后你会得到一份同样的 notebook 副本可直接在 Jupyter 中逐格执行。Pro tip务必在编辑前复制一份示例 notebook。下次 freqtrade 升级重新初始化时未复制的原文件会被覆盖你的分析代码会丢失。方案一Docker 快速启动 Jupyter LabFreqtrade 仓库提供了一份专门用于数据分析的 docker-compose 文件。在当前工作目录仓库根目录执行docker compose -f docker/docker-compose-jupyter.yml up该命令会构建并启动一个运行 Jupyter Lab 的容器随后在浏览器访问https://127.0.0.1:8888/lab启动后请优先使用控制台打印出的登录链接其中带有一次性 token可简化登录流程。理解这份 compose 文件做了什么查看仓库根目录下的 docker/docker-compose-jupyter.yml可以看到它只做四件事使用 docker/Dockerfile.jupyter 构建镜像该镜像继承自freqtradeorg/freqtrade:develop_plot因此自带回测、绘图依赖并额外安装jupyterlab与jupyter-client同时将prompt-toolkit锁定到3.0.36以避免与questionary发生版本冲突通过ENTRYPOINT []清空镜像默认入口使容器可以直接运行jupyter lab命令将宿主机user_data目录挂载到容器内/freqtrade/user_data你在宿主机下载的数据、回测结果与 notebook 都可以被容器内直接读写端口只绑定到127.0.0.1:8888不会暴露到公网。数据更新的周期性重建由于该镜像的 Jupyter / freqtrade 层是在你的本机构建的建议隔一段时间执行一次无缓存重建以同步 freqtrade 及其依赖的更新docker compose -f docker/docker-compose-jupyter.yml build --no-cache关于该方案的更多说明可参考 docs/docker_quickstart.md 中 “Data analysis using docker compose” 一节。方案二虚拟环境中的 Notebook面向普通安装如果你采用 venv / conda 安装 freqtrade最简单的方式是直接在虚拟环境内安装并启动 Jupyter这也是 Freqtrade 团队推荐的默认做法遇到的问题最少# 激活你的虚拟环境venv / conda source .venv/bin/activate # 在环境内安装 jupyter或依赖 requirements-plot.txt 等组合 pip install jupyterlab # 启动 notebook / lab 服务器 jupyter lab在浏览器中打开打印出的地址后进入user_data/notebooks/打开示例 notebook 即可。Pro tips官方补充建议不要忘记在 Jupyter 启动前先激活 conda 或 venv 环境也可以在环境内安装ipykernel后把环境注册为 kernel再配合系统级安装的 Jupyter 使用任何时候都复制示例 notebook 再编辑避免下次 freqtrade 更新时你的改动被覆盖由于 notebook 默认以自身存储目录为工作目录涉及相对路径时要先切换到项目根见下文代码片段。方案三系统级 Jupyter 虚拟环境 Kernel进阶某些场景下你可能希望系统全局只安装一份 Jupyter而让 freqtrade 运行在独立的虚拟环境中通过 kernel 机制在两者之间切换避免在每台机器上重复安装整套 Jupyter也便于在 freqtrade 与其他分析任务间快速切换。# 1. 激活 freqtrade 所在虚拟环境 source .venv/bin/activate # 2. 安装 ipykernel 并将当前环境注册为名为 freqtrade 的 kernel pip install ipykernel ipython kernel install --user --namefreqtrade # 3. 重启 Jupyter (lab / notebook) # 4. 在 notebook 右上角选择 kernel freqtrade注意来自官方文档此方案仅作为完整性说明提供Freqtrade 团队不会对这种混合安装提供完整支持遇到问题时官方会建议直接改为在虚拟环境中安装 Jupyter。相关疑难请参考 Project Jupyter 自身的文档与社区支持渠道。注意来自官方文档notebook 环境对部分任务并不友好。例如任何依赖异步执行的逻辑在 Jupyter 中都会遇到问题同时 freqtrade 的主入口是 shell CLI在 notebook 里直接用纯 Python 会绕过 CLI 提供的参数解析导致部分辅助函数缺少必需的对象与参数——你需要手动补齐这些值或构造预期对象。常用工具代码片段以下片段均来自官方文档 docs/data-analysis.md可直接作为 notebook 的第一个 cell 使用。片段 1把工作目录切换到项目根Jupyter notebook 默认从 notebook 所在目录执行。下面的代码会向上逐级查找包含LICENSE文件的目录即项目根从而保证后续所有相对路径一致import os from pathlib import Path # Change directory # Modify this cell to insure that the output shows the correct path. # Define all paths relative to the project root shown in the cell output project_root somedir/freqtrade i0 try: os.chdir(project_root) assert Path(LICENSE).is_file() except: while i4 and (not Path(LICENSE).is_file()): os.chdir(Path(Path.cwd(), ../)) i1 project_root Path.cwd() print(Path.cwd())建议先修改project_root为你的实际路径即使路径不正确while循环最多向上回溯 4 层通常也能兜底定位到仓库根。片段 2一次性加载多个配置文件当需要复现“同时传入多个 config”时的运行结果或想在 notebook 中获得与 CLI 完全一致的配置环境时可以直接调用Configuration.from_files()import json from freqtrade.configuration import Configuration # Load config from multiple files config Configuration.from_files([config1.json, config2.json]) # Show the config in memory print(json.dumps(config[original_config], indent2))关键点这不是简单的 JSON 合并。查看 freqtrade/configuration/configuration.py 中的实现可知from_files是一个staticmethod内部用Configuration({config: files}, RunMode.OTHER)构造完整配置对象再调用get_config()它会走完整个 Configuration 初始化流程对应load_config()加载文件 → 合并环境变量 → 规范化配置等所以拿到的config字典与真实运行环境一致可直接传给后续方法多个文件按传入顺序依次加载后传入文件中的同名参数会覆盖先传入文件的值last definition wins。片段 3为交互式环境补充 user_data_dir在 Jupyter 这类交互式环境中Configuration的加载路径以 notebook 的存储位置为起点。官方建议额外准备一个只含user_data_dir的配置并把它作为最后一个参数传入这样就不必在运行 bot 的过程中反复切换目录{ user_data_dir: ~/.freqtrade/ }加载顺序变为from freqtrade.configuration import Configuration config Configuration.from_files([ config1.json, config2.json, notebook_config.json, # 内含上面的 user_data_dir ])由于后传入文件优先级更高user_data_dir会被正确覆盖。同时官方提醒尽量使用绝对路径因为除非显式切换目录否则相对路径都从 notebook 所在位置开始解析参考片段 1。从 Notebook 迈向深入分析在完成配置加载与数据路径确认后官方文档还推荐了三类更深入的分析资源全部可在当前仓库中找到配套文档与可执行样本策略调试与分析官方示例 notebookuser_data/notebooks/strategy_analysis_example.ipynb模板见 freqtrade/templates/strategy_analysis_example.ipynb演示了从零构造分析环境的过程。其中典型的初始化方式是先用Configuration.from_files([])拿到空配置对象再手工指定config[timeframe] 5m、config[strategy] SampleStrategy、pair BTC/USDT并通过config[datadir]定位数据目录——这正好承接了上文“交互环境需要手动补齐参数”的提醒绘图Plotting在 notebook 中调用 freqtrade 的绘图工具将指标、入场/出场点直接画在 K 线上对应 CLI 的plot-dataframe/plot-profit命令能力Tag 分析进阶回测基于回测结果中的 tag如 exit_reason、enter_tag做多维统计分析量化不同信号与退出条件的表现差异。小结与推荐实践把三份官方建议串起来一个可持续的数据分析流程是用 CLI 完成数据获取与回测freqtrade download-data、freqtrade backtesting并导出结果把上述重复操作固化为 Shell 脚本便于自动化测试策略与准备分析数据在 notebook 中加载配置、读取数据、绘图与提炼洞察——容器方式直接docker compose -f docker/docker-compose-jupyter.yml up本地方式则激活 venv 后jupyter lab记得先复制一份示例 notebook优先通过Configuration.from_files()获取与 CLI 一致的完整配置必要时用含user_data_dir的配置文件收尾覆盖路径。如果你有更好的数据分析思路欢迎通过提交 Issue 或 Pull Request 来完善 docs/data-analysis.md 本身。【免费下载链接】freqtradeFree, open source crypto trading bot项目地址: https://gitcode.com/GitHub_Trending/fr/freqtrade创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价