Торговий бот на ноутбуці — погана ідея з однієї нудної причини: ноутбук не онлайн 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-ключа.