Skip to content

使用 Jupyter notebook 分析机器人数据 (Analyzing bot data with Jupyter notebooks) ​

您可以使用 Jupyter notebook 轻松分析回测结果和交易历史。在实用 freqtrade create-userdir --userdir user_data 初始化用户目录后,示例 notebook 位于 user_data/notebooks/。

使用 Docker 快速开始 (Quick start with docker) ​

Freqtrade 提供了一个启动 Jupyter Lab 服务器的 docker-compose 文件。 您可以使用以下命令运行此服务器:docker compose -f docker/docker-compose-jupyter.yml up

这将创建一个运行 Jupyter Lab 的 docker 容器,可通过 https://127.0.0.1:8888/lab 访问。 请使用启动后控制台中打印的链接进行简化的登录。

有关更多信息,请访问 使用 Docker Compose 进行数据分析 章节。

专家提示 (Pro tips) ​

  • 有关使用说明,请参阅 jupyter.org。
  • 别忘了从您的 conda 或 venv 环境中启动 Jupyter notebook 服务器,或者使用 nb_conda_kernels*
  • 实用前先复制示例 notebook,以免您的更改在下次 freqtrade 更新时被覆盖。

结合系统范围的 Jupyter 安装使用虚拟环境 (Using virtual environment with system-wide Jupyter installation) ​

有时可能希望使用系统范围安装的 Jupyter notebook,并使用来自虚拟环境的 Jupyter 内核 (kernel)。 这可以防止按系统多次安装完整的 Jupyter 套件,并提供了一种在任务(freqtrade / 其他分析任务)之间切换的简便方法。

要实现这一点,首先激活您的虚拟环境并运行以下命令:

bash
# 激活虚拟环境
source .venv/bin/activate

pip install ipykernel
ipython kernel install --user --name=freqtrade
# 重启 Jupyter (lab / notebook)
# 在 notebook 中选择内核 "freqtrade"

INFO

本节内容是为了完整性而提供的,Freqtrade 团队不会为此设置的问题提供完整支持,并建议直接在虚拟环境中安装 Jupyter,因为这是启动和运行 Jupyter notebook 最简单的方法。有关此设置的帮助,请参考 Project Jupyter 文档 或 帮助频道。

WARNING

有些任务在 notebook 中执行效果并不理想。例如,任何使用异步执行的内容对于 Jupyter 来说都是个问题。此外,freqtrade 的主要入口点是 shell 命令行界面 (CLI),因此在 notebook 中使用纯 Python 会绕过为辅助函数提供必需对象和参数的参数。您可能需要手动设置这些值或创建预期的对象。

任务工具
机器人操作CLI
重复性任务Shell 脚本
数据分析与可视化Notebook
  1. 使用 CLI 来

    • 下载历史数据
    • 运行回测
    • 使用实时数据运行
    • 导出结果
  2. 在 Shell 脚本中收集这些操作

    • 保存带有参数的复杂命令
    • 执行多步操作
    • 自动测试策略并准备用于分析的数据
  3. 使用 Notebook 来

    • 可视化数据
    • 整理并绘图以产生见解

示例实用程序代码片段 (Example utility snippets) ​

更改目录到根目录 (Change directory to root) ​

Jupyter notebook 从 notebook 目录执行。以下片段寻找项目根目录,以便相对路径保持一致。

python
import os
from pathlib import Path

# 更改目录
# 修改此单元格以确保输出显示正确的路径。
# 定义相对于单元格输出中显示的项目根目录的所有路径
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())

加载多个配置文件 (Load multiple configuration files) ​

此选项对于检查传入多个配置的结果非常有用。 这也将运行整个配置初始化,因此配置已完全初始化,可以传递给其他方法。

python
import json
from freqtrade.configuration import Configuration

# 从多个文件加载配置
config = Configuration.from_files(["config1.json", "config2.json"])

# 显示内存中的配置
print(json.dumps(config['original_config'], indent=2))

对于交互式环境,准备一个指定 user_data_dir 的额外配置并最后传入,这样您在运行机器人时就不必更改目录。 最好避免使用相对路径,因为除非更改了目录,否则这将从 Jupyter notebook 的存储位置开始。

json
{
    "user_data_dir": "~/.freqtrade/"
}

更多数据分析文档 (Further Data analysis documentation) ​

如果您想分享关于如何最好地分析数据的想法,欢迎提交 issue 或拉取请求 (Pull Request) 来增强此文档。