| 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 | 149 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?

https://miro.medium.com/1%2AkPMKD2UISQHd_nlSdpHw7A.png

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.

Thành ĐT

Thành ĐT

Founder & Chief Technology Officer, HNDL
1.313 Bài viết
15.4k Người theo dõi
120k+ Lượt đọc

Chuyên gia với hơn 10 năm kinh nghiệm trong phát triển hệ thống giao dịch tự động (Trading Bot), Fintech, Mobile App và phân tích dữ liệu tài chính (Quantitative Analysis). Người sáng lập và trực tiếp dẫn dắt các khóa học thực chiến tại Hướng Nghiệp Dữ Liệu.