使用 Jupyter 笔记本分析机器人数据¶
您可以使用 Jupyter 笔记本轻松分析回测和交易历史记录。示例笔记本位于 user_data/notebooks/
,在使用 freqtrade create-userdir --userdir user_data
命令初始化用户目录后可以找到。
使用 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 笔记本服务器,或使用 nb_conda_kernels*
- 在使用之前先复制示例笔记本,以防止您的更改在下一个 freqtrade 更新时被覆盖。
在系统范围内使用虚拟环境的 Jupyter 安装¶
有时可能希望使用系统范围内的 Jupyter 笔记本安装,并从虚拟环境中使用 Jupyter 内核。 这样可以避免在每个系统上多次安装完整的 Jupyter 套件,并提供了在任务之间切换的简便方法(如 freqtrade / 其他分析任务)。为了使这个工作正常运行,首先激活你的虚拟环境并运行以下命令:
# 激活虚拟环境
source .venv/bin/activate
pip install ipykernel
ipython kernel install --user --name=freqtrade
# 重启 jupyter (lab / notebook)
# 在 notebook 中选择内核 "freqtrade"
注意
提供此部分仅为完整性考虑,Freqtrade 团队不会为此设置的问题提供完全支持,并建议直接在虚拟环境中安装 Jupyter,因为这是最简单的方式来运行 jupyter notebooks。有关此设置的帮助,请参阅 Project Jupyter 的 文档 或者 帮助渠道。
警告
有些任务在笔记本中的工作效果并不好。例如,任何使用异步执行的事务都会对 Jupyter 造成问题。此外,freqtrade 的主要入口点是命令行接口,因此在笔记本中使用纯python会绕过提供给助手函数的必需对象和参数的参数。你可能需要手动设置这些值或创建所需的对象。
推荐的工作流程¶
任务 | 工具 |
---|---|
Bot 运营 | 命令行接口 (CLI) |
重复任务 | Shell 脚本 |
数据分析与可视化 | Notebook |
-
使用命令行接口 (CLI) 来
* 下载历史数据 * 运行回测 * 实时数据运行 * 导出结果
-
用 shell 脚本来收集这些操作* 保存带有参数的复杂命令 * 执行多步操作 * 自动化测试策略和准备数据用于分析
-
使用笔记本来
* 可视化数据 * 处理和绘图以生成见解
示例实用程序片段¶
切换目录到根目录¶
Jupyter 笔记本从笔记本目录执行。以下片段搜索项目根目录,使得相对路径保持一致。
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())
加载多个配置文件¶
这个选项可以用来检查传入多个配置的结果。也会运行整个 Configuration 初始化过程,因此配置完全初始化以传递给其他方法。
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 的存储位置开始,除非更改目录。
{
"user_data_dir": "~/.freqtrade/"
}
进一步的数据分析文档¶
如果您愿意分享如何最好地分析数据的想法,请随时提交问题或拉取请求来完善本文档。