在你笔记本上跑一个交易机器人是个坏主意,理由很无聊:你的笔记本不是 7×24 在线,而市场是。交易中途合上盖子,机器人就停止管理一个持仓。Freqtrade——那个流行的开源 Python 交易机器人——生来就是为无人值守运行而造的,那正是一台小 VPS 的用途。这是它实际需要什么、怎么用 Docker 搭它,以及那些没人提、直到你撞上才知道的诚实界限。
为什么用服务器,而不是你的机器
两个理由,都很实际:
- 正常运行时间。 机器人必须全天候盯市场、管持仓。你的笔记本每睡眠或重启一次,机器人就瞎了——一次错过的入场,或更糟,一个没人盯的持仓。
- 延迟和稳定。 VPS 坐在数据中心连接上,到交易所有一条稳定的路由。家里 wifi 的抖动和 NAT 重置对一个对价格做反应的机器人没帮助。
这跟在 VPS 上跑任何交易机器人背后是同一套逻辑——Freqtrade 只是把要求具体化了。
它实际需要什么
Freqtrade 本身轻量,但对负载要现实:
- 实盘 / 模拟盘机器人: 2 GB 内存是舒服的下限。Docker 镜像、几个交易对、指标和 SQLite 交易数据库都想要一点余量。一个 $5 Micro(2 vCPU / 2 GB / 25 GB) 是对的起点。1 GB 能在几个交易对上跑一个简单策略,但你更靠边缘。
- 多交易对 / 多策略: 升到一个 $8 Small(4 vCPU / 4 GB / 35 GB)——更多交易对意味着更多并发的指标计算和内存里更大的 dataframe。
- 磁盘: 不大。镜像、你的
user_data和交易数据库在 25 GB 里装得舒舒服服。下载的回测历史数据是唯一会增长的东西——而那大多住在你的本地机器上(见下)。
用 Docker Compose 搭建
Docker 是跑 Freqtrade 维护得最好、最不痛的方式。在一台全新机器上:
sudo apt update && sudo apt install -y docker.io docker-compose-v2
mkdir ~/ft && cd ~/ft
docker run --rm -v "$(pwd)/user_data:/freqtrade/user_data" \
freqtradeorg/freqtrade:stable create-userdir --userdir user_data
拿官方 compose 文件、交互式创建一个配置(它会问你的交易所、下注额和模拟盘):
curl -s https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml -o docker-compose.yml
docker compose run --rm freqtrade new-config --config user_data/config.json
永远先跑模拟盘
永远别把一个全新策略指向真钱。Freqtrade 默认是模拟盘(纸面交易),你应该把它留在那儿,直到策略在实时市场数据上证明了自己一阵子。在 config.json 里:
{
"dry_run": true,
"dry_run_wallet": 1000
}
启动它并观察:
docker compose up -d
docker compose logs -f
compose 文件里的 restart: unless-stopped 策略在这里就是你的 systemd 等价物——Docker 在崩溃或服务器重启后把机器人拉回来,不用手动一步。(如果你更想在 Docker 之外跑它,一个带 Restart=always 的 systemd unit 做同样的活——和让任何机器人保活是同一个原理。)
交易所 API 密钥——咬人的那部分
这是一套交易配置出昂贵岔子的地方。两条规则,不可商量:
- 只给交易权限。永远别启用提现。 如果密钥泄露,最坏情况是不想要的交易——而不是你的资金走出门。Freqtrade 从不需要提现权限。
- 给密钥上 IP 白名单。 大多数交易所让你把一个 API 密钥绑到特定 IP。那是用**独立IP套餐**的一个具体理由:密钥只在你服务器的固定地址上有效。在 NAT 套餐上,机器人共享节点的出站 IP,那不只属于你——机器人运作没问题,但你没法干净地给它上白名单。
把密钥放在 config.json 里、让它非全局可读(chmod 600),并以非 root 用户跑容器。并先锁死机器——新 VPS 安全清单花十分钟、堵住要紧的门。
备份 user_data
你的策略、配置和交易历史都住在 user_data 里。那是你不想丢的东西:
tar czf ft-backup-$(date +%F).tar.gz user_data
定期把它从服务器拉下来(或存进对象存储)。丢了交易数据库意味着丢了你的业绩历史;丢了一个调好的策略意味着重做优化。
诚实的界限
- 回测和 hyperopt 很重——在本地做。 它们把 CPU 占满好一阵,而一台共享、面向突发的 VPS 是为尖峰负载建的,不是几个小时持续 100% 负载(那也触及可接受使用政策)。在你自己的机器上优化,把结果部署去跑实盘。VPS 是给实盘机器人的,不是给研究的。
- CPU 是共享/突发的。 对一个大多在等 K 线并做反应的实盘机器人很棒;对把一年的 1 分钟数据碾过 hyperopt 就不对。
- 一个地区、纯 CPU。 服务器在德国、没有 GPU。对 Freqtrade 没问题(它是 CPU/逻辑,不是 ML 训练)——如果你的策略依赖一个重的 ML 模型,知道一下也好,那同样最好在本地训练。
一句话
VPS 上的 Freqtrade 是给实盘机器人的对的配置:一个 $5 Micro 跑一个专注的策略、一个 $8 Small 如果你跑很多交易对、带 restart: unless-stopped 的 Docker Compose 保正常运行时间、以及一个只交易、上了 IP 白名单的 API 密钥好让泄露不能掏空你。把重度回测和 hyperopt 留在你的笔记本上、备份 user_data,让服务器做它擅长的那一件事——在市场波动时保持在线。注册只用邮箱,你用 USDC 或 USDT 付款;独立IP 是这里唯一值得的升级,纯粹为了 API 密钥白名单。
评论
暂无评论。来做第一个吧。