یک ربات ترید روی لپتاپ شما به یک دلیل کسلکننده ایده بدی است: لپتاپ شما شبانهروزی آنلاین نیست، اما بازارها هستند. وسط یک ترید درِ لپتاپ را ببندید و ربات از مدیریت یک پوزیشن باز دست میکشد. Freqtrade — ربات ترید متنباز و محبوب مبتنی بر Python — برای اجرای بدون نظارت ساخته شده، که دقیقاً همان چیزی است که یک VPS کوچک برایش هست. در ادامه میبینید واقعاً به چه چیزی نیاز دارد، چطور آن را با Docker راهاندازی کنید، و محدودیتهای صادقانهای که هیچکس تا وقتی به آنها برنخورید نمیگوید.
چرا یک سرور، نه دستگاه شما
دو دلیل، هر دو عملی:
- آپتایم. ربات باید بازار را بهطور شبانهروزی رصد کند و پوزیشنها را مدیریت کند. هر بار که لپتاپ شما به خواب میرود یا ریبوت میشود، ربات کور است — یک ورود از دسترفته، یا بدتر، یک پوزیشن باز که کسی مراقبش نیست.
- تأخیر و پایداری. یک VPS روی یک اتصال دیتاسنتر با مسیری پایدار به صرافی مینشیند. جیتر وایفای خانگی و ریستهای NAT به دردِ رباتی که به قیمت واکنش نشان میدهد نمیخورند.
این همان منطقی است که پشت اجرای هر ربات ترید روی یک VPS قرار دارد — Freqtrade فقط نیازمندیها را ملموس میکند.
واقعاً به چه چیزی نیاز دارد
خود Freqtrade سبک است، اما درباره بار کاری واقعبین باشید:
- ربات زنده / dry-run: 2 گیگابایت RAM یک کف راحت است. ایمیج Docker، چند جفتارز، اندیکاتورها و دیتابیس تریدِ SQLite همگی کمی فضای آزاد میخواهند. یک Micro با ۵ دلار (2 vCPU / 2 گیگابایت / 25 گیگابایت) نقطه شروع درست است. 1 گیگابایت میتواند یک استراتژی ساده روی چند جفتارز را اجرا کند، اما شما به لبه نزدیکتر هستید.
- جفتارزهای زیاد / چند استراتژی: به یک Small با ۸ دلار (4 vCPU / 4 گیگابایت / 35 گیگابایت) ارتقا دهید — جفتارز بیشتر یعنی محاسبه همزمان اندیکاتورهای بیشتر و یک دیتافریم بزرگتر در حافظه.
- دیسک: معتدل. ایمیج،
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-whitelist کنید. بیشتر صرافیها اجازه میدهند یک کلید API را به IPهای مشخص گره بزنید. این دلیلی ملموس برای اجرا روی یک پلن دارای IP اختصاصی است: کلید فقط از آدرس ثابت سرور شما کار میکند. روی یک پلن NAT ربات IP خروجی نود را به اشتراک میگذارد، که فقط مال شما نیست — برای کارکردن ربات مشکلی ندارد، اما نمیتوانید آن را بهتمیزی whitelist کنید.
کلیدها را در config.json نگه دارید، آن را غیرقابلخواندن برای همه کنید (chmod 600)، و کانتینر را بهعنوان یک کاربر غیر root اجرا کنید. و اول جعبه را قفل کنید — چکلیست امنیتی VPS جدید ده دقیقه میبرد و درهایی را که مهماند میبندد.
از user_data بکاپ بگیرید
استراتژیها، پیکربندی و تاریخچه تریدِ شما همگی در user_data قرار دارند. این همان چیزی است که نمیخواهید از دستش بدهید:
tar czf ft-backup-$(date +%F).tar.gz user_data
آن را بهطور دورهای از سرور بیرون بکشید (یا به فضای ذخیرهسازی شیئی). از دست دادن دیتابیس ترید یعنی از دست دادن تاریخچه عملکردتان؛ از دست دادن یک استراتژی تنظیمشده یعنی انجام دوباره بهینهسازی.
محدودیتهای صادقانه
- بکتست و hyperopt سنگیناند — آنها را محلی انجام دهید. آنها CPU را برای بازههای طولانی اشغال میکنند، و یک VPS مشترک و برستمحور برای بارهای کاری جهشی ساخته شده، نه ساعتها بار پیوسته ۱۰۰٪ (که با سیاست استفاده قابلقبول هم تداخل دارد). روی دستگاه خودتان بهینه کنید، نتیجه را برای اجرای زنده مستقر کنید. VPS برای ربات زنده است، نه برای تحقیق.
- CPU مشترک/برست است. برای یک ربات زنده که بیشتر منتظر کندلها میماند و واکنش نشان میدهد عالی است؛ برای آسیاب کردن یک سال داده یکدقیقهای در hyperopt اشتباه است.
- یک منطقه، فقط CPU. سرور در آلمان است و GPU ندارد. برای Freqtrade مشکلی نیست (این CPU/منطق است، نه آموزش یادگیری ماشین) — دانستنش مهم است اگر استراتژی شما به یک مدل سنگین یادگیری ماشین تکیه دارد، که آن هم بهتر است محلی آموزش داده شود.
نتیجه نهایی
Freqtrade روی یک VPS راهاندازی درست برای ربات زنده است: یک Micro با ۵ دلار برای یک استراتژی متمرکز، یک Small با ۸ دلار اگر جفتارزهای زیادی اجرا میکنید، Docker Compose با restart: unless-stopped برای آپتایم، و یک کلید API فقط-ترید و IP-whitelist شده تا یک نشتی نتواند شما را خالی کند. بکتست و hyperopt سنگین را روی لپتاپتان نگه دارید، از user_data بکاپ بگیرید، و بگذارید سرور همان یک کاری را که در آن خوب است انجام دهد — آنلاین ماندن در حالی که بازار حرکت میکند. ثبتنام فقط با ایمیل است و شما با USDC یا USDT پرداخت میکنید؛ یک IP اختصاصی تنها ارتقایی است که اینجا ارزشش را دارد، صرفاً برای whitelist کلید API.
آماده استقرار هستید؟ Freqtrade روی یک پلن Micro راحت است؛ برای بکتستهای سنگینتر یا جفتارزهای زیاد، به Small ارتقا دهید.
نظرات
هنوز نظری نیست. اولین نفر باشید.