跳至内容

使用 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 脚本
数据分析与可视化 笔记本
  1. 使用命令行界面(CLI)来

    * 下载历史数据 * 运行回测 * 使用实时数据运行 * 导出结果

  2. 将这些操作收集到 Shell 脚本中

    * 保存带有参数的复杂命令 * 执行多步骤操作 * 自动化测试策略并准备用于分析的数据

  3. 使用笔记本进行

    * 数据可视化 * 清洗和绘图以生成洞察

示例工具代码片段

切换到项目根目录

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/"
}

更多数据分析文档

如果您想分享关于如何最好地分析这些数据的想法,欢迎提交问题或拉取请求来改进本文档。