Skip to content

使用 Docker 运行 Freqtrade

本页面详细解释了如何使用 Docker 运行机器人。这并不是直接可用的,您仍然需要阅读文档并了解如何正确配置它。

安装 Docker

首先根据您的平台下载并安装 Docker / Docker Desktop:

安装 Docker compose

Freqtrade 文档假定使用 Docker Desktop(或者 docker compose 插件)。 虽然独立安装的 docker-compose 仍然可用,但需要将所有 docker compose 命令更改为 docker-compose 才能正常工作(例如,docker compose up -d 变为 docker-compose up -d)。

Windows 上的 Docker

如果您刚刚在 Windows 系统上安装了 Docker,请确保重新启动您的系统,否则可能会遇到与 Docker 容器的网络连接相关的难以解释的问题。

使用 Docker 运行 Freqtrade

Freqtrade 在 Dockerhub 上提供了官方的 Docker 镜像,以及一个准备好供使用的 docker-compose 文件

注意

  • 下面的部分假设 docker 已经安装并对登录的用户可用。
  • 所有下面的命令都使用相对目录,并且必须从包含 docker-compose.yml 文件的目录中执行。### Docker快速入门

创建一个新的目录,将docker-compose文件放置在此目录中。

mkdir ft_userdata
cd ft_userdata/
# 从存储库下载docker-compose文件
curl https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml -o docker-compose.yml

# 拉取freqtrade镜像
docker compose pull

# 创建用户目录结构
docker compose run --rm freqtrade create-userdir --userdir user_data

# 创建配置 - 需要回答交互式问题
docker compose run --rm freqtrade new-config --config user_data/config.json

以上代码段创建一个名为ft_userdata的新目录,下载最新的compose文件并拉取freqtrade镜像。 代码段中的最后两个步骤将创建具有user_data的目录,并以交互方式根据您的选择创建默认配置。

如何编辑机器人配置?

您可以随时编辑配置,该配置在使用上述配置时作为user_data/config.json(位于ft_userdata目录中)可用。

您还可以通过编辑docker-compose.yml文件的命令部分来更改所选策略和命令。

添加自定义策略1. 现在的配置文件可在 user_data/config.json 中找到。

  1. 将自定义策略复制到 user_data/strategies/ 目录。
  2. docker-compose.yml 文件中添加 Strategy 类名。

默认情况下会运行 SampleStrategy

SampleStrategy 只是个演示!

SampleStrategy 是供您参考的,为您提供自己策略的灵感。 请在冒险使用真钱之前始终回测您的策略并使用仿真交易一段时间! 您可以在策略文档中找到关于策略开发的更多信息。

完成上述步骤后,您可以准备以交易模式(仿真交易或实盘交易,取决于您在之前提出的相应问题的答案)启动机器人。

docker compose up -d

默认配置

生成的配置文件基本上是可用的,但在启动机器人之前,您仍然需要验证所有选项是否与您想要的选项相符(例如定价、交易对列表等)。

访问用户界面

如果您在 new-config 步骤中选择启用 FreqUI,您将可以在端口 localhost:8080 访问 freqUI。

您现在可以在浏览器中输入 localhost:8080 来访问用户界面。

远程服务器上的用户界面访问

如果您在 VPS 上运行,请考虑使用 ssh 隧道或设置 VPN(openVPN、wireguard)连接到您的机器人。 这将确保 freqUI 不直接暴露在互联网上,出于安全原因这是不被推荐的(freqUI 默认不支持 https)。 这些工具的设置不是本教程的一部分,但是可以在互联网上找到许多很好的教程。 还请阅读使用 docker 进行 API 配置部分以了解更多关于此配置的信息。#### 监控机器人

您可以使用docker compose ps命令检查运行实例。这应该列出服务freqtrade的状态为running。如果不是这样,请检查日志(参见下一点)。

Docker compose日志

日志将被写入到:user_data/logs/freqtrade.log
您也可以使用命令docker compose logs -f查看最新的日志。

数据库

数据库位于:user_data/tradesv3.sqlite

使用docker更新freqtrade

使用docker更新freqtrade非常简单,只需运行以下两个命令:

# 下载最新镜像
docker compose pull
# 重启容器
docker compose up -d

这将首先拉取最新的镜像,然后使用刚拉取的版本重新启动容器。!!! 警告 "检查更改日志" 您应该始终检查更改日志以查看是否有破坏性更改/需要手动干预,确保更新后机器人能够正确启动。

编辑 docker-compose 文件

高级用户可以进一步编辑 docker-compose 文件以包含所有可能的选项或参数。

通过运行 docker compose run --rm freqtrade <command> <optional arguments> 可以使用所有 freqtrade 参数。

交易命令的 docker-compose

不应该通过 docker compose run 运行交易命令 (freqtrade trade <...>),而应该使用 docker compose up -d。 这将确保容器正确启动(包括端口转发)并确保在系统重启后容器会重新启动。 如果您打算使用 freqUI,请确保相应地调整 配置,否则界面将无法使用。

docker compose run --rm

包含 --rm 将在操作完成后删除容器,强烈建议在非交易模式下(使用 freqtrade trade 命令与之配套)使用。

无 docker compose 的 Docker 使用

"docker compose run --rm" 需要提供一个 compose 文件。 一些不需要身份验证的 freqtrade 命令,例如 list-pairs,可以使用 "docker run --rm" 运行。 例如 docker run --rm freqtradeorg/freqtrade:stable list-pairs --exchange binance --quote BTC --print-json。 这对于获取交易所信息以添加到您的 config.json 而不影响正在运行的容器可能很有用。

示例:使用 docker 下载数据

从 Binance 下载 ETH/BTC 交易对的 5 天回测数据,时间间隔为1小时。数据将存储在主机上的目录 user_data/data/ 中。

docker compose run --rm freqtrade download-data --pairs ETH/BTC --exchange binance --days 5 -t 1h
```请查看[数据下载文档](data-download.md)以获取有关下载数据的更多详细信息。

#### 示例:使用Docker进行回测

在Docker容器中对SampleStrategy和指定的历史数据时间范围进行回测,时间框架为5分钟:

``` bash
docker compose run --rm freqtrade backtesting --config user_data/config.json --strategy SampleStrategy --timerange 20190801-20191001 -i 5m

请访问回测文档了解更多信息。

使用Docker的附加依赖项

如果您的策略需要默认映像未包含的依赖项,您需要在主机上构建映像。 为此,请创建一个包含其他依赖项安装步骤的Dockerfile(可以参考docker/Dockerfile.custom的示例)。

然后,您还需要修改docker-compose.yml文件并取消注释构建步骤,同时重命名映像以避免命名冲突。

    image: freqtrade_custom
    build:
      context: .
      dockerfile: "./Dockerfile.<your_extension>"

然后,您可以运行docker compose build --pull来构建Docker映像,并使用上面介绍的命令运行它。### 使用 Docker 进行绘图

通过在 docker-compose.yml 文件中将图像更改为 *_plot ,可以使用 freqtrade plot-profitfreqtrade plot-dataframe 命令(文档)。 然后,可以按如下方式使用这些命令:

docker compose run --rm freqtrade plot-dataframe --strategy AwesomeStrategy -p BTC/ETH --timerange=20180801-20180805

输出将保存在 user_data/plot 目录中,并且可以使用任何现代浏览器打开。

使用 Docker compose 进行数据分析

Freqtrade 提供了一个 docker-compose 文件,可以启动一个 Jupyter Lab 服务器。 您可以使用以下命令运行此服务器:

docker compose -f docker/docker-compose-jupyter.yml up

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

由于该镜像的一部分是在您的机器上构建的,建议定期重新构建镜像以保持 freqtrade(及其依赖项)的最新状态。

bash docker compose -f docker/docker-compose-jupyter.yml build --no-cache## 故障排除

Windows 上的 Docker

  • 错误: "Timestamp for this request is outside of the recvWindow."
    市场 API 请求需要同步的时钟,但是 Docker 容器中的时间会随着时间的推移而稍微向过去漂移。 为了暂时解决此问题,您需要运行 wsl --shutdown 并重新启动 Docker(Windows 10 上会弹出一个窗口提示您这样做)。 永久的解决方案是将 Docker 容器托管到 Linux 主机上,或者定期使用计划任务重启 WSL。

    bash taskkill /IM "Docker Desktop.exe" /F wsl --shutdown start "" "C:\Program Files\Docker\Docker\Docker Desktop.exe"

  • 无法连接到 API(Windows)
    如果您正在 Windows 上安装 Docker(桌面版),请确保重启系统。如果不重新启动,Docker 可能会在网络连接上出现问题。 您当然还应该确保根据设置进行配置。

警告

基于上述原因,我们不建议在 Windows 上将 Docker 用于生产环境设置,而是仅用于实验、数据下载和回测。 最好使用 Linux-VPS 来可靠地运行 freqtrade。