Торговый бот на ноутбуке — плохая идея по одной скучной причине: ноутбук не онлайн 24/7, а рынки — да. Закрыли крышку посреди сделки — и бот перестал вести открытую позицию. Freqtrade — популярный опенсорсный торговый бот на Python — сделан, чтобы работать без присмотра, и именно для этого нужен небольшой VPS. Разберём, что ему реально нужно, как поставить через Docker и какие честные лимиты никто не упоминает, пока в них не упрёшься.
Почему сервер, а не своя машина
Две причины, обе практические:
- Аптайм. Бот обязан следить за рынком и вести позиции круглосуточно. Каждый раз, когда ноутбук засыпает или перезагружается, бот слеп — пропущенный вход или, хуже, открытая позиция, за которой никто не смотрит.
- Задержка и стабильность. VPS сидит на дата-центровом канале с ровным маршрутом до биржи. Дрожание домашнего wifi и сбросы NAT не помогают боту, который реагирует на цену.
Это та же логика, что и за запуском любого торгового бота на VPS — Freqtrade просто делает требования конкретными.
Что ему реально нужно
Сам Freqtrade лёгкий, но будьте реалистичны насчёт нагрузки:
- Живой / dry-run бот: 2 ГБ RAM — комфортный минимум. Docker-образ, несколько пар, индикаторы и SQLite-база сделок хотят запаса. Micro за $5 (2 vCPU / 2 ГБ / 25 ГБ) — правильная стартовая точка. 1 ГБ потянет одну простую стратегию на паре пар, но вы ближе к краю.
- Много пар / несколько стратегий: переходите на Small за $8 (4 vCPU / 4 ГБ / 35 ГБ) — больше пар означает больше одновременного расчёта индикаторов и больший dataframe в памяти.
- Диск: скромно. Образ, ваш
user_dataи база сделок спокойно влезают в 25 ГБ. Растут только скачанные исторические данные для бэктеста — а они в основном живут на локальной машине (см. ниже).
Установка через 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-файл и создаём конфиг интерактивно (спросит про биржу, ставку и dry-run):
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
Сначала dry-run — всегда
Никогда не направляйте свежую стратегию на реальные деньги. Freqtrade по умолчанию в dry-run (бумажная торговля), и стоит оставить его там, пока стратегия какое-то время не докажет себя на живых рыночных данных. В config.json:
{
"dry_run": true,
"dry_run_wallet": 1000
}
Запускаем и смотрим:
docker compose up -d
docker compose logs -f
Политика restart: unless-stopped в compose-файле — здесь ваш аналог systemd: Docker возвращает бота после падения или перезагрузки сервера, без ручных действий. (Если предпочитаете запуск вне Docker — юнит systemd с Restart=always делает то же самое, тот же принцип, что и в поддержании любого бота живым.)
API-ключи биржи — то, на чём горят
Именно здесь торговая связка ломается дорого. Два правила, без компромиссов:
- Только право торговли. Никогда не включайте вывод. Если ключ утечёт, худшее — нежелательные сделки, а не уход средств. Freqtrade никогда не нужен доступ к выводу.
- Привяжите ключ к IP. Большинство бирж позволяют привязать API-ключ к конкретным IP. Это конкретная причина работать на тарифе с выделенным IP: ключ работает только с фиксированного адреса вашего сервера. На NAT-тарифе бот делит исходящий IP ноды — он не только ваш, боту этого хватает для работы, но чисто привязать ключ не выйдет.
Держите ключи в config.json, закройте файл от всех (chmod 600) и запускайте контейнер от обычного пользователя. И сначала закройте сам сервер — чек-лист безопасности нового VPS занимает десять минут и закрывает то, что важно.
Бэкапьте user_data
Ваши стратегии, конфиг и история сделок — всё в user_data. Это то, что не хочется терять:
tar czf ft-backup-$(date +%F).tar.gz user_data
Периодически забирайте архив с сервера (или в объектное хранилище). Потеря базы сделок — потеря истории результатов; потеря настроенной стратегии — заново гонять оптимизацию.
Честные лимиты
- Бэктест и hyperopt тяжёлые — делайте их локально. Они держат CPU на пределе долгими отрезками, а shared-VPS с burst-моделью рассчитан на всплески, а не на часы постоянных 100% (что вдобавок идёт против правил использования). Оптимизируйте на своей машине, а результат разворачивайте в live. VPS — для живого бота, не для ресёрча.
- CPU shared/burst. Отлично для живого бота, который в основном ждёт свечи и реагирует; неправильно для перемалывания года минутных данных в hyperopt.
- Один регион, только CPU. Сервер в Германии, без GPU. Для Freqtrade нормально (это CPU/логика, не обучение ML) — стоит знать, если стратегия опирается на тяжёлую ML-модель, которую опять же лучше обучать локально.
Итог
Freqtrade на VPS — правильная связка для живого бота: Micro за $5 под сфокусированную стратегию, Small за $8 если гоняете много пар, Docker Compose с restart: unless-stopped ради аптайма и API-ключ только на торговлю с привязкой к IP, чтобы утечка не опустошила счёт. Тяжёлые бэктесты и hyperopt держите на ноутбуке, бэкапьте user_data и дайте серверу делать то, что он умеет, — оставаться онлайн, пока рынок движется. Регистрация по одному email, оплата в USDC или USDT; выделенный IP — единственный апгрейд, который здесь оправдан, чисто ради whitelist API-ключа.