这是什么
Freqtrade 是一款免费的开源算法加密货币交易机器人,使用 Python 编写,通过 CCXT 连接各大交易所(Binance、Kraken、Bybit、OKX 及其他数十家)。它可以在模拟运行(dry-run)或实盘模式下运行你自己回测过的策略,提供 REST API 和 FreqUI 网页仪表盘,还能对策略进行超参数优化(hyperopt)/回测,并训练 FreqAI 机器学习模型。
为何选择离岸托管
交易机器人需要全天候在线运行,并持有可以转移资金的交易所 API 密钥——你需要把它部署在自己掌控的基础设施上,而不是与你的法律身份绑定的共享云平台上。使用加密货币支付的离岸、无需 KYC 的 VPS,能让你的策略知识产权、密钥材料和交易踪迹远离任何需要 KYC 认证的服务商账户,同时不限流量的带宽和内置的 DDoS 防护可确保机器人始终可达、交易所连接稳定。
部署过程
一套可用的参考配置
将其复制到全新的 ChainVPS 实例中。替换占位符后即可启动。
# Ubuntu 24.04 — install Docker first:
# curl -fsSL https://get.docker.com | sh
#
# Then scaffold Freqtrade's user_data + config, then start.
# Bootstrap (run once, before bringing the stack up):
# docker compose run --rm freqtrade create-userdir --userdir /freqtrade/user_data
# docker compose run --rm freqtrade new-config --config /freqtrade/user_data/config.json
# # edit user_data/config.json: exchange keys, pairs, dry_run:true to start,
# # and set api_server.listen_ip_address 0.0.0.0 + a strong jwt_secret_key/password.
#
# docker-compose.yml:
services:
freqtrade:
image: freqtradeorg/freqtrade:stable
restart: unless-stopped
container_name: freqtrade
volumes:
- "./user_data:/freqtrade/user_data"
# Bind FreqUI/REST API to localhost only — reach it via SSH tunnel:
# ssh -L 8080:127.0.0.1:8080 user@your-vps
ports:
- "127.0.0.1:8080:8080"
command: >
trade
--logfile /freqtrade/user_data/logs/freqtrade.log
--db-url sqlite:////freqtrade/user_data/tradesv3.sqlite
--config /freqtrade/user_data/config.json
--strategy SampleStrategy
防火墙
需开放的端口
| 端口 | 协议 | 用途 |
|---|---|---|
| 8080 | TCP | FreqUI 网页仪表盘 + REST API——请保持绑定在 127.0.0.1,并通过 SSH 隧道访问,切勿直接暴露在公网上 |
| 22 | TCP | 用于管理以及建立到 FreqUI 隧道的 SSH;请更改默认的 22 端口,并仅使用密钥认证 |
| 443 | TCP | 可选——仅当你使用带身份验证的 HTTPS 反向代理来代替 SSH 隧道访问 FreqUI 时才需要 |
按需调配规格
您需要哪种套餐
VPS Nano/Small (1 vCPU, 1-2 GB RAM)
单个机器人,在几个交易对上进行模拟运行或实盘交易,不在本机进行超参数优化。Freqtrade 空闲时只占用几百 MB 内存,足以支撑 7×24 小时交易。
VPS Pro (2-4 vCPU, 4-8 GB RAM)
在多个交易对上运行实盘机器人,并偶尔进行回测和超参数优化。更多核心可以将原本需要数天的超参数优化任务从数小时缩短到几分钟;SSD 有助于处理大型 OHLCV 数据集。
Dedicated (or top VPS with 8+ vCPU / 16+ GB)
用于 FreqAI 机器学习模型训练、跨越多年的大型回测,或同时运行多个机器人。FreqAI 对 CPU/内存的需求很高——独享核心可避免在模型重新训练时因“邻居噪音”而卡顿。
最佳地区: Freqtrade 持有交易所 API 密钥和你的策略优势,因此非常适合选择隐私等级机房(NL、CH、RO、IS、MD、LU)——CH 和 IS 在司法管辖隐私方面是很好的选择。这里存在一个真实的取舍:交易延迟取决于与交易所撮合引擎之间的距离,所以如果你在 Binance 这类平台上使用较短的时间周期,NL 能在欧洲低延迟与隐私之间取得最佳平衡。Freqtrade 是基于K线收盘价进行交易(而非亚毫秒级的高频交易),因此几十毫秒的延迟对大多数策略而言并无影响——你可以自由选择任意隐私等级机房位置。
全面加固安全
安全加固清单
- 切勿将 8080 端口暴露在公网上。请保持上文所示的 localhost 绑定,并通过 SSH 隧道(ssh -L 8080:127.0.0.1:8080)访问 FreqUI,或将其置于带身份验证的 HTTPS 反向代理之后。一个开放的、带有 /forceexit 和 /forcebuy 端点的 FreqUI,是让账户资金被直接清空的捷径。
- 每个策略都应先在 dry_run:true 下启动,只有在回测确认行为无误后才切换到实盘。在 config.json 中设置硬性止损(stoploss)和 max_open_trades,以防止某个 bug 导致过度加杠杆。
- 创建交易所 API 密钥时只启用交易权限,禁用提现权限,并将该密钥的 IP 白名单设置为你 VPS 的静态 IP。这样即使密钥泄露,也只能用于交易,无法将资金转出交易所。
- 锁定 config.json:其中以明文形式保存着密钥以及 FreqUI 的 jwt_secret_key/密码——请对其执行 chmod 600,设置一个足够长且随机的 jwt_secret_key,并且切勿将其提交到 git。可以考虑改用环境变量来传递这些敏感信息。
- 加固服务器本身:在非默认端口上仅允许密钥认证的 SSH 登录,UFW 仅放行 SSH,开启 unattended-upgrades 自动安全更新,并定期将 user_data/(配置、sqlite 交易数据库、策略)备份到服务器之外。
- 启用 Freqtrade 的 Telegram 集成,以获取交易提醒并远程执行 /status、/stop、/forceexit 控制——无需打开网页界面,你就可以直接在手机上终止行为异常的机器人。
问题
主机服务 Freqtrade — 常见问题
机器人交易需要开放任何入站端口吗?
不需要。Freqtrade 只会向交易所 API 发起出站连接,下单交易无需任何入站端口。8080 端口仅用于可选的 FreqUI 仪表盘,并且应始终通过 SSH 隧道绑定在 localhost 上。
我可以先以模拟运行(dry-run,模拟交易)模式运行它吗?
可以,而且你也应该这样做。在 config.json 中设置 dry_run:true,即可基于实时行情数据模拟交易,而不会产生真实订单。只有在你的策略经过回测、并且观察过模拟运行的表现之后,才应切换到实盘。模拟运行或回测都不需要持有真实余额的交易所密钥。
小规格的 VPS 能应付实盘交易吗?
完全没问题。1 vCPU / 1-2 GB 的 VPS Nano 或 Small 就能 7×24 小时运行单个实盘机器人。只有在本机进行超参数优化、大型回测或 FreqAI 机器学习训练时,才需要更多核心和内存,因为这些都是突发性的计算任务,而非持续负载。
如何安全地访问 FreqUI 仪表盘?
按照 compose 文件中的设置,让 8080 端口保持绑定在 127.0.0.1 上,然后从你的笔记本电脑建立 SSH 隧道:ssh -L 8080:127.0.0.1:8080 user@your-vps,再访问 http://localhost:8080。这样可以让交易控制 API 完全不暴露在公网上。
在 ChainVPS 上运行交易机器人是否被允许?
是的。Freqtrade 是连接公开交易所 API 的合法软件。ChainVPS 无需 KYC 认证且支持加密货币支付,因此交易活动不会与任何身份信息绑定,但你仍需自行负责遵守所使用交易所的条款以及当地的法律法规。
如何确保机器人在重启或崩溃后仍能继续运行?
compose 文件中使用了 restart: unless-stopped,并且 Docker 服务会在系统启动时自动运行,因此机器人会在重启或容器崩溃后自动恢复运行。建议添加 Telegram 提醒,以便机器人停止时能及时通知你,并定期备份 user_data/ 以保留你的交易数据库和配置。