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

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.