AI & AUTOMATIONSELF HOSTING

Freqtrade – Bot giao dịch crypto mã nguồn mở chạy bằng Docker

Tóm tắt nhanh:

  • Freqtrade là bot giao dịch crypto mã nguồn mở, hoàn toàn miễn phí, viết bằng Python 3.11+, hỗ trợ hầu hết các sàn lớn như Binance, Bybit, Kraken, OKX, Gate.io…
  • Có thể self-host bằng Docker chỉ với vài câu lệnh – không cần dịch vụ trung gian, API key và dữ liệu giao dịch nằm trên máy mình.
  • Tích hợp sẵn backtesting, dry-run, hyperopt và FreqAI (machine learning) để mình kiểm tra chiến lược trước khi đụng tiền thật.
  • Quản lý bot tiện lợi qua Telegram bot hoặc FreqUI (web UI tại localhost:8080).
  • Yêu cầu phần cứng cực nhẹ: 2GB RAM, 1GB disk, 2vCPU – chạy được trên VPS rẻ nhất hoặc Raspberry Pi cũng được.

Mấy tuần gần đây mình rảnh, lại đang nghịch deep vào mảng tự động hóa nên bắt đầu mò vào thế giới algorithmic trading. Lúc đầu mình tưởng phải thuê dịch vụ nào đó như 3Commas hay Cryptohopper – mà giá thì không hề rẻ, lại còn phải đưa API key cho bên thứ ba quản lý. Mình hơi gợn vì khoản đó.

Rồi trong một lần lướt subreddit /r/selfhosted, mình thấy nhiều người nhắc đến Freqtrade. Tò mò mình nhảy vào đọc, và thật sự ấn tượng. Đây là một crypto trading bot mã nguồn mở 100%, miễn phí hoàn toàn, viết bằng Python, hỗ trợ Docker và có thể chạy trên chính laptop hoặc VPS nhỏ của mình. Mình quyết định dành cuối tuần để cài thử và bài này là những gì mình đúc kết được sau lần đầu tiên “nhúng tay” vào nó.

Freqtrade thực chất giải quyết bài toán gì

Freqtrade ra đời để giải quyết 3 vấn đề chính mà mình thấy đúng với hoàn cảnh của mình:

  • Tự chủ hoàn toàn: API key của sàn nằm trên máy mình, không phải gửi lên SaaS nào.
  • Tùy biến chiến lược không giới hạn: viết strategy bằng Python thuần, ai biết code là làm được.
  • Test trước khi mất tiền: có Dry-run (giả lập trên dữ liệu thật) và Backtesting (chạy lại quá khứ) – rất quan trọng với người mới như mình.

Một điểm mình thích nữa là disclaimer của project rất thẳng thắn: “USE THE SOFTWARE AT YOUR OWN RISK”, luôn nhắc người dùng chạy Dry-run trước khi đốt tiền thật. Mình đánh giá cao thái độ này – nó cho thấy team không hứa hẹn “kiếm tiền tự động” như mấy bot lừa đảo khác.

Hướng dẫn cài đặt Freqtrade bằng Docker

Mình chọn Docker vì nó sạch, dễ cập nhật và không làm rối Python trên máy chính. Yêu cầu chỉ cần cài Docker Desktop (hoặc Docker Engine + Compose plugin trên Linux). Toàn bộ source và doc chính thức mình tham khảo từ kho lưu trữ Freqtrade trên GitHub.

Bước 1: Tạo thư mục làm việc và tải docker-compose

Mình mở terminal và làm theo hướng dẫn quick start:

mkdir ft_userdata
cd ft_userdata/

curl https://raw.githubusercontent.com/freqtrade/freqtrade/stable/docker-compose.yml -o docker-compose.yml

docker compose pull

Lệnh docker compose pull sẽ kéo image chính thức từ Dockerhub về – mình đợi tầm 1-2 phút tùy mạng.

Bước 2: Tạo cấu trúc user_data

Bước này quan trọng vì nó tạo ra thư mục lưu config, strategy, dữ liệu lịch sử, log:

docker compose run --rm freqtrade create-userdir --userdir user_data

Sau lệnh này mình thấy thư mục user_data/ xuất hiện với các sub-folder như strategies/, data/, logs/, notebooks/. Khá ngăn nắp.

Bước 3: Tạo file config.json tương tác

Đây là phần mình nghĩ là quan trọng nhất – file config quyết định mọi hành vi của bot:

docker compose run --rm freqtrade new-config --config user_data/config.json

Lệnh này sẽ hỏi mình một loạt câu hỏi: chọn sàn (mình chọn Binance), stake currency (USDT), số tiền cho mỗi trade, max open trades, có bật Telegram không, có bật FreqUI không… Mình khuyên các bạn cứ trả lời tuần tự, đừng vội. Sau khi xong, file user_data/config.json được sinh ra và mình có thể mở bằng VSCode để chỉnh thêm.

Một mẹo nhỏ mình rút ra: luôn đặt "dry_run": true ở lần đầu chạy. Bot sẽ giả lập giao dịch trên dữ liệu thị trường thật mà không hề đụng vào tiền thật. Đây là tấm lưới an toàn cực quý.

Bước 4: Khởi động bot

Sau khi có config, mình chạy:

docker compose up -d

Cờ -d để container chạy nền. Kiểm tra trạng thái bằng:

docker compose ps
docker compose logs -f

Nếu mọi thứ ổn, mình sẽ thấy log bot đang scan cặp coin và chuẩn bị giao dịch theo chiến lược mặc định SampleStrategy.

Bước 5: Truy cập FreqUI

Nếu bước cấu hình mình đã bật FreqUI, giờ chỉ cần mở trình duyệt vào http://localhost:8080. Đăng nhập bằng username/password đã set, mình thấy giao diện dashboard trực quan: open trades, performance, profit chart, log realtime. Khá pro.

Lưu ý: nếu bạn deploy trên VPS thì đừng expose port 8080 ra Internet trực tiếp. Doc của Freqtrade khuyên dùng SSH tunnel hoặc VPN (WireGuard/OpenVPN). Mình đang dùng ssh -L 8080:localhost:8080 user@vps để forward về máy local – vừa tiện vừa an toàn.

LƯU Ý:

Nếu bạn deploy trên VPS thì đừng expose port 8080 ra Internet trực tiếp. Doc của Freqtrade khuyên dùng SSH tunnel hoặc VPN (WireGuard/OpenVPN). Mình đang dùng ssh -L 8080:localhost:8080 user@vps để forward về máy local – vừa tiện vừa an toàn.

Hướng dẫn sử dụng cơ bản: từ tải dữ liệu đến backtest

Đây là phần mình thấy thú vị nhất. Trước khi cho bot giao dịch thật, mình muốn biết chiến lược của mình có “ăn” hay không trong quá khứ. Freqtrade cho phép làm điều đó cực kỳ tiện.

Tải dữ liệu lịch sử

Mình thử tải data 5 ngày gần nhất của cặp ETH/BTC trên Binance, timeframe 1 giờ:

docker compose run --rm freqtrade download-data \
  --pairs ETH/BTC --exchange binance --days 5 -t 1h

Data sẽ được lưu vào user_data/data/binance/. Mình đã thử tải nhiều cặp cùng lúc bằng cách thêm --pairs ETH/BTC BTC/USDT SOL/USDT và nhiều timeframe -t 5m 1h 4h. Càng nhiều data thì backtest càng đáng tin.

Chạy backtest

Đây là khoảnh khắc “wow” với mình. Lệnh backtest cho SampleStrategy trong khoảng thời gian cụ thể:

docker compose run --rm freqtrade backtesting \
  --config user_data/config.json \
  --strategy SampleStrategy \
  --timerange 20240801-20241001 -i 5m

Sau vài phút (tùy độ dài timerange), terminal sẽ in ra một bảng kết quả khá chi tiết: tổng số trade, win rate, profit %, max drawdown, sharpe ratio, profit theo từng cặp coin. Lần đầu thấy mình thực sự choáng – tự nhiên mình cảm giác như có một “phòng thí nghiệm tài chính” mini trên laptop của mình.

Viết chiến lược của riêng mình

Sau khi quen với SampleStrategy, mình tạo strategy mới bằng:

docker compose run --rm freqtrade new-strategy \
  --strategy MyFirstStrategy

File user_data/strategies/MyFirstStrategy.py sẽ được tạo với template sẵn. Mình mở ra và thấy có sẵn các hàm populate_indicators, populate_entry_trend, populate_exit_trend. Cứ điền logic vào, ví dụ buy khi RSI < 30 và bán khi RSI > 70 – quá kinh điển luôn. Sau đó nhớ chỉnh docker-compose.yml để gọi đúng strategy mới.

Mình sẽ thành thật: phần này mình vẫn đang học, chưa dám nói là biết viết strategy “ngon”. Nhưng cái hay là Freqtrade có cộng đồng rất lớn trên Discord, có cả tính năng Hyperopt (tự tối ưu tham số bằng machine learning) và FreqAI (adaptive prediction modeling). Mình đang để dành những phần này cho bài viết tiếp theo khi đã hiểu sâu hơn.

Vài cảm nhận thật lòng sau lần đầu trải nghiệm

Mình muốn nói rõ: mình không phải trader chuyên nghiệp, và bài viết này chỉ là chia sẻ trải nghiệm cài đặt cùng những bước đầu tiên. Có vài điểm mình rút ra mà có thể hữu ích cho bạn nào cũng đang tìm hiểu:

  • Dry-run là người bạn tốt nhất: mình để bot chạy dry-run liên tục cả tuần để xem hành vi, đừng vội chuyển sang live trading.
  • Đừng tin một backtest đẹp: kết quả backtest tốt không có nghĩa là tương lai sẽ tốt. Thị trường crypto biến động khôn lường.
  • Đọc doc là bắt buộc: trang chủ freqtrade.io có doc rất chi tiết và mình thường xuyên ngó lại khi gặp vướng mắc.
  • Bắt đầu nhỏ thôi: nếu sau một thời gian dài thấy chiến lược ổn, hãy chuyển live với số tiền bạn sẵn sàng mất, không hơn.
  • Đồng hồ phải chuẩn: doc cảnh báo nếu clock của hệ thống lệch sẽ gây lỗi giao tiếp với sàn – đặc biệt là Docker trên Windows hay bị. Nếu chạy production, mình khuyên dùng VPS Linux.

Còn rất nhiều thứ mình chưa khám phá: hyperopt để tối ưu tham số, FreqAI để build mô hình adaptive, tích hợp Telegram bot để nhận thông báo realtime, Jupyter Lab tích hợp sẵn để phân tích data. Cảm giác như mình vừa mở ra một cái rabbit hole rất sâu.

Nếu bạn cũng đang tò mò, hãy thử cài và để bot chạy dry-run vài tuần xem nó “hành xử” thế nào. Đây là cách rẻ nhất để học về quant trading mà mình từng thấy. Một số hướng tiếp theo mình đang cân nhắc: build dashboard Grafana riêng để theo dõi hiệu năng dài hạn, thử nghiệm chiến lược kết hợp tín hiệu on-chain (qua API của Glassnode), và viết một wrapper nhỏ để auto-backup database SQLite của bot lên S3. Nếu bạn cũng đang đi con đường này, hú mình một tiếng nhé – mình rất muốn nghe trải nghiệm của bạn.

Duy Nghiện
Hãy làm khán giả, đừng làm nhân vật chính :)

You may also like

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận