DCA (Dollar Cost Averaging — Trung bình giá) là chiến lược đầu tư được Warren Buffett, Jack Bogle và nhiều nhà đầu tư huyền thoại ủng hộ. Kết hợp với bot tự động, DCA trở thành công cụ cực kỳ mạnh mẽ để tích lũy crypto dài hạn mà không cần phân tích thị trường.
DCA Là Gì?
Thay vì cố gắng "mua đáy bán đỉnh" (timing the market), DCA mua một lượng cố định định kỳ bất kể giá thị trường là bao nhiêu.
Ví dụ: Mua $200 BTC vào mỗi thứ Hai lúc 9:00 UTC.
- Tuần 1: BTC = $60,000 → mua được 0.00333 BTC
- Tuần 2: BTC = $55,000 → mua được 0.00364 BTC
- Tuần 3: BTC = $65,000 → mua được 0.00308 BTC
- Giá trung bình: $59,500 (thấp hơn giá trung bình của 3 tuần = $60,000)
Tại Sao DCA Hoạt Động?
- Mua nhiều hơn khi giá thấp → tự nhiên tối ưu hóa giá trung bình
- Loại bỏ cảm xúc → không cần quyết định mua/bán dựa trên FOMO hay FUD
- Phù hợp với người bận rộn → set up một lần, bot chạy tự động
- Hiệu quả với tài sản biến động cao → crypto biến động nhiều, DCA càng có lợi
Thiết Lập DCA Bot Trên 3Commas
3Commas là platform phổ biến nhất cho DCA Bot:
- Kết nối API Binance/Bybit/OKX vào 3Commas
- Tạo DCA Bot mới:
- Base order: $100 (lệnh mua đầu tiên)
- Safety order: $50 (mua thêm khi giá giảm)
- Safety order step: 2% (mua thêm mỗi khi giá giảm 2%)
- Max safety orders: 5 (tối đa 5 lần mua thêm)
- Take Profit: 2-3% từ giá trung bình
Tự Code DCA Bot Bằng Python
import ccxt
import schedule
import time
from datetime import datetime
exchange = ccxt.binance({
'apiKey': 'YOUR_API_KEY',
'secret': 'YOUR_SECRET',
})
def dca_buy(symbol: str, usdt_amount: float):
"""Mua một lượng cố định USDT của symbol"""
ticker = exchange.fetch_ticker(symbol)
current_price = ticker['last']
quantity = usdt_amount / current_price
order = exchange.create_market_buy_order(
symbol,
round(quantity, 6)
)
print(f"{datetime.now()} | DCA BUY {symbol}: "
f"${usdt_amount} @ ${current_price:.2f} = {quantity:.6f}")
return order
# Lên lịch mua BTC mỗi thứ Hai lúc 9:00 UTC
schedule.every().monday.at("09:00").do(
dca_buy, symbol="BTC/USDT", usdt_amount=200
)
# Mua ETH mỗi 2 tuần
schedule.every(2).weeks.do(
dca_buy, symbol="ETH/USDT", usdt_amount=100
)
while True:
schedule.run_pending()
time.sleep(60)
DCA Nâng Cao: Mua Nhiều Hơn Khi Giá Giảm Sâu
def smart_dca(symbol: str, base_amount: float, price_drops: dict):
"""
price_drops: {-10%: 1.5x, -20%: 2x, -30%: 3x}
Mua nhiều hơn khi giá giảm sâu từ ATH gần nhất
"""
ticker = exchange.fetch_ticker(symbol)
current_price = ticker['last']
ath_30d = max(exchange.fetch_ohlcv(symbol, '1d', limit=30),
key=lambda x: x[2])[2]
drop_pct = (current_price - ath_30d) / ath_30d * 100
multiplier = 1.0
for threshold, mult in sorted(price_drops.items()):
if drop_pct <= threshold:
multiplier = mult
amount = base_amount * multiplier
return dca_buy(symbol, amount)
So Sánh DCA vs Lump Sum vs Market Timing
| Chiến lược | Kết quả BTC 2020-2024 |
|---|---|
| Lump Sum (mua một lần đầu 2020) | +1,200% |
| DCA hàng tuần | +680% |
| Market Timing (cố gắng mua đáy) | +450% (trung bình do lỡ nhiều đợt tăng) |
Kết luận: Lump Sum thắng nếu bạn mua đúng thời điểm, nhưng DCA thắng nếu tính trung bình — đa số retail investor không "time the market" được chính xác.
Xây dựng DCA Bot tích hợp Telegram notification và dashboard portfolio tại Hướng Nghiệp Dữ Liệu.