使用 Jupyter 笔记本分析机器人数据¶
你可以使用 Jupyter 笔记本来轻松分析回测结果和交易历史。在通过 freqtrade create-userdir --userdir user_data 初始化用户目录后,示例笔记本位于 user_data/notebooks/。
使用 Docker 快速开始¶
Freqtrade 提供了一个 docker-compose 文件,用于启动 Jupyter Lab 服务器。你可以使用以下命令运行该服务器:docker compose -f docker/docker-compose-jupyter.yml up
这将创建一个运行 Jupyter Lab 的 Docker 容器,可通过 https://127.0.0.1:8888/lab 访问。请使用启动后在控制台打印出的链接以简化登录过程。
更多信息,请访问 使用 Docker 进行数据分析 章节。
实用技巧¶
- 有关使用说明,请参阅 jupyter.org。
- 别忘了在 conda 或 venv 环境中启动 Jupyter Notebook 服务器,或使用 nb_conda_kernels*
- 在使用前复制示例笔记本,以免下次更新 freqtrade 时你的修改被覆盖。
在系统级 Jupyter 安装中使用虚拟环境¶
有时可能希望使用系统级安装的 Jupyter Notebook,并从虚拟环境中使用 Jupyter 内核。这样可以避免在系统中多次安装完整的 Jupyter 套件,并提供一种在不同任务(如 freqtrade / 其他分析任务)之间轻松切换的方法。
要实现这一点,请先激活你的虚拟环境并运行以下命令:
# Activate virtual environment
source .venv/bin/activate
pip install ipykernel
ipython kernel install --user --name=freqtrade
# Restart jupyter (lab / notebook)
# select kernel "freqtrade" in the notebook
注意
本节内容仅为完整性而提供,Freqtrade 团队不会为此配置的问题提供全面支持,并会建议直接在虚拟环境中安装 Jupyter,因为这是让 Jupyter 笔记本运行起来最简单的方式。有关此配置的帮助,请参考 Project Jupyter 的 文档 或 帮助渠道。
警告
某些任务在笔记本中表现不佳。例如,任何使用异步执行的操作对 Jupyter 来说都是问题。此外,freqtrade 的主要入口是命令行界面(CLI),因此在笔记本中使用纯 Python 会绕过提供必要对象和参数给辅助函数的命令行参数。你可能需要手动设置这些值或创建预期的对象。
推荐的工作流程¶
| 任务 | 工具 |
|---|---|
| 机器人操作 | 命令行接口(CLI) |
| 重复性任务 | Shell 脚本 |
| 数据分析与可视化 | 笔记本 |
-
使用命令行界面(CLI)来
* 下载历史数据 * 运行回测 * 使用实时数据运行 * 导出结果
-
将这些操作收集到 Shell 脚本中
* 保存带有参数的复杂命令 * 执行多步骤操作 * 自动化测试策略并准备用于分析的数据
-
使用笔记本进行
* 数据可视化 * 清洗和绘图以生成洞察
示例工具代码片段¶
切换到项目根目录¶
Jupyter 笔记本默认从笔记本所在目录执行。以下代码片段会搜索项目根目录,以保持相对路径的一致性。
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"
i=0
try:
os.chdir(project_root)
assert Path('LICENSE').is_file()
except:
while i<4 and (not Path('LICENSE').is_file()):
os.chdir(Path(Path.cwd(), '../'))
i+=1
project_root = Path.cwd()
print(Path.cwd())
加载多个配置文件¶
此选项可用于检查传入多个配置文件的结果。这也会完整执行整个配置初始化流程,因此配置将被完全初始化后传递给其他方法。
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'], indent=2))
对于交互式环境,可额外添加一个指定 user_data_dir 的配置文件,并将其最后传入,这样在运行交易机器人时无需切换目录。最好避免使用相对路径,因为默认路径是从 Jupyter 笔记本的存储位置开始的,除非显式更改了目录。
{
"user_data_dir": "~/.freqtrade/"
}
更多数据分析文档¶
如果您想分享关于如何最好地分析这些数据的想法,欢迎提交问题或拉取请求来改进本文档。