Bài viết gần đây
-
-
Phân Biệt MySQL Và PostgreSQL
Tháng 1 1, 2026 -
Gen Z Việt Nam trước làn sóng Web3
Tháng 12 29, 2025
| XÂY DỰNG BOT AUTO TRADING ĐA CẶP
Được viết bởi thanhdt vào ngày 28/11/2025 lúc 09:02 | 38 lượt xem
XÂY DỰNG BOT AUTO TRADING ĐA CẶP (5–20 COIN CHẠY SONG SONG)
Các bot đơn cặp như BTC/USDT hoặc ETH/USDT thường bị giới hạn vì:
- Chỉ trade 1 cơ hội một thời điểm
- Khi BTC đi ngang → bot đứng im
- Không bắt được cơ hội ở ALT (SOL, BNB, LINK, BCH…)
Giải pháp → Bot Auto Trading Đa Cặp:
- Chạy song song 5–20 cặp
- Mỗi cặp độc lập logic
- Tự tìm tín hiệu
- Tự vào lệnh
- Không xung đột lệnh
- Theo đúng chiến lược của anh (MA, MACD, Breakout, ATR… đều dùng được)
1. Multi-Symbol Bot hoạt động như thế nào?
Bot hoạt động theo 3 tầng:
Tầng 1 – Scheduler
Lặp lại mỗi 5s, 10s, 1m…
Tầng 2 – Multi Symbol Engine
Chạy từng đồng coin:
- BTCUSDT
- ETHUSDT
- SOLUSDT
- BNBUSDT
- LINKUSDT
- ADAUSDT
- DOGEUSDT
- … (bao nhiêu tùy thích)
Tầng 3 – Strategy Module
Áp dụng chiến lược anh chọn:
- MA + MACD
- Breakout Premium
- Momentum
- ATR
- Kênh xu hướng
(Ở bài này em lấy ví dụ chiến lược MA + MACD)
2. Danh sách coin để bot chạy
symbols = [
"BTC/USDT",
"ETH/USDT",
"BNB/USDT",
"SOL/USDT",
"LINK/USDT",
"XRP/USDT",
"ADA/USDT",
"DOGE/USDT",
]
Tuỳ anh → có thể mở rộng đến 20 cặp.
3. Lấy dữ liệu cho từng cặp bằng CCXT
import ccxt, pandas as pd
binance = ccxt.binance({'options': {'defaultType': 'future'}})
def fetch(symbol, tf="5m", limit=200):
df = pd.DataFrame(
binance.fetch_ohlcv(symbol, tf, limit=limit),
columns=["time","open","high","low","close","volume"]
)
return df
4. Indicator (MA + MACD)
def indicators(df):
df["MA6"] = df["close"].rolling(6).mean()
df["MA10"] = df["close"].rolling(10).mean()
df["MA20"] = df["close"].rolling(20).mean()
df["EMA12"] = df["close"].ewm(span=12).mean()
df["EMA26"] = df["close"].ewm(span=26).mean()
df["MACD"] = df["EMA12"] - df["EMA26"]
df["Signal"] = df["MACD"].ewm(span=9).mean()
df["Hist"] = df["MACD"] - df["Signal"]
return df
5. Logic tín hiệu cho từng cặp
def signal(df):
h0 = df["Hist"].iloc[-1]
h1 = df["Hist"].iloc[-2]
h2 = df["Hist"].iloc[-3]
c = df.iloc[-1]
if c["MA6"] > c["MA10"] > c["MA20"] and h0 > 0 and h0 > h1 > h2:
return "BUY"
if c["MA6"] < c["MA10"] < c["MA20"] and h0 < 0 and h0 < h1 < h2:
return "SELL"
return "NONE"
6. Gửi lệnh Futures
from binance.client import Client
from dotenv import load_dotenv
import os
load_dotenv()
client = Client(os.getenv("BINANCE_API_KEY"), os.getenv("BINANCE_API_SECRET"))
def execute(symbol, sig, qty):
s = symbol.replace("/", "")
if sig == "BUY":
client.futures_create_order(symbol=s, side="BUY", type="MARKET", quantity=qty)
if sig == "SELL":
client.futures_create_order(symbol=s, side="SELL", type="MARKET", quantity=qty)
7. Bot Auto Trading Đa Cặp (Full Code)
import time
symbols = [
"BTC/USDT",
"ETH/USDT",
"BNB/USDT",
"SOL/USDT",
"LINK/USDT",
"XRP/USDT",
"ADA/USDT",
"DOGE/USDT",
]
qty = 0.02 # mỗi cặp trade một khối lượng riêng
while True:
for sym in symbols:
try:
df = fetch(sym)
df = indicators(df)
sig = signal(df)
price = df["close"].iloc[-1]
print(sym, "| Price:", price, "| Signal:", sig)
if sig != "NONE":
execute(sym, sig, qty)
except Exception as e:
print("Error:", sym, e)
time.sleep(10)
8. Thách thức của Multi-Symbol Bot (và cách khắc phục)
❌ 1. Rate Limit
Giải pháp:
- giảm interval
- dùng WebSocket thay REST
❌ 2. Trùng lệnh (double entry)
Giải pháp:
- Lưu trạng thái open position
- Chỉ mở 1 lệnh mỗi cặp
❌ 3. Vỡ risk khi trade nhiều cặp
Giải pháp:
- Dùng ATR để tính volume
- Giới hạn max position
9. Nâng cấp bản PRO – Multi Symbol Bot Pro
📌 1. Sử dụng WebSocket để nhận giá theo từng cặp
→ tốc độ gấp 10 lần REST
📌 2. Position Manager
- Không mở trùng lệnh
- Tự SL/TP theo ATR
- Tự đóng lệnh khi đảo tín hiệu
📌 3. Risk Manager
- Giới hạn tối đa 3 vị thế open cùng lúc
- Giới hạn max 2% tài khoản mỗi lệnh
📌 4. Multi-Strategy Engine
Mỗi cặp dùng chiến lược khác nhau:
- BTC dùng MA + MACD
- ETH dùng Breakout Premium
- SOL dùng Momentum
- BNB dùng Trend Channel
📌 5. Telegram Notification
Gửi tin nhắn khi bot vào lệnh, đóng lệnh, SL, TP.