| XÂY DỰNG BOT AUTO TRADING BREAKOUT PREMIUM

Được viết bởi thanhdt vào ngày 27/11/2025 lúc 16:46 | 38 lượt xem

XÂY DỰNG BOT AUTO TRADING BREAKOUT PREMIUM

Chiến lược “CHỐNG FAKE BREAKOUT 3 LỚP”, chuẩn Pro dành cho Futures

Breakout là chiến lược mạnh – nhưng cũng là chiến lược dễ bị quét, gãy biên, fake breakout nhất trong crypto.

Để khắc phục, ta xây dựng Breakout Premium, gồm 3 lớp lọc tín hiệu:

  1. Lớp 1 – Breakout thật (nến đóng cửa vượt vùng kháng cự/hỗ trợ)
  2. Lớp 2 – Volume Confirm (khối lượng tăng > MA20)
  3. Lớp 3 – Momentum MACD Histogram theo hướng breakout

Kết hợp 3 lớp → bot vào lệnh siêu sạch, hạn chế tối đa dính trap.


1. Fake Breakout là gì?

https://priceaction.com/wp-content/uploads/2015/08/falsebreaks.png
https://www.morpher.com/blog/optimizedImages/httpsi0wpcommorpherhomewpcomstagingcomwpcontentuploads202305image27pngw600h323.webp

Thị trường crypto nổi tiếng với:

  • “Rút nến”
  • “Quét biên rồi đảo chiều”
  • “Breakout trap”

Nên Breakout truyền thống → dễ bị lừa.

Breakout Premium giải quyết vấn đề này.


2. Công thức Breakout Premium (3 lớp lọc)

BUY khi breakout tăng:

Giá đóng cửa > Kháng cự
Volume > MA20
MACD Histogram > 0 và tăng mạnh

SELL khi breakout giảm:

Giá đóng cửa < Hỗ trợ
Volume > MA20
MACD Histogram < 0 và giảm mạnh


3. Cài đặt thư viện

pip install ccxt pandas numpy python-binance python-dotenv

4. Lấy dữ liệu từ Binance Futures

import ccxt, pandas as pd

binance = ccxt.binance({'options': {'defaultType': 'future'}})

def fetch(symbol="BTC/USDT", tf="5m", limit=300):
    df = pd.DataFrame(
        binance.fetch_ohlcv(symbol, tf, limit=limit),
        columns=["time","open","high","low","close","volume"]
    )
    return df

5. Tính Volume MA20 + MACD Histogram

def indicators(df):
    df["VolMA20"] = df["volume"].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

6. Xác định vùng Breakout (Hỗ trợ / Kháng cự gần nhất)

def support_resistance(df, window=20):
    recent = df.tail(window)
    sup = recent["low"].min()
    res = recent["high"].max()
    return sup, res

7. Logic Breakout Premium (lọc 3 lớp)

https://i.ytimg.com/vi/5v0lXxdlWx0/hq720.jpg?rs=AOn4CLAMLy1qq2LqkACE91FOdkc6X0oScg&sqp=-oaymwEhCK4FEIIDSFryq4qpAxMIARUAAAAAGAElAADIQj0AgKJD
https://indicatorvault.com/wp-content/uploads/2025/02/image2-4.png.webp
def breakout_signal(df):
    sup, res = support_resistance(df)
    c = df.iloc[-1]

    # Lớp 1: Breakout nến đóng cửa
    breakout_up = c["close"] > res
    breakout_down = c["close"] < sup

    # Lớp 2: Volume Confirm
    vol_ok = c["volume"] > c["VolMA20"]

    # Lớp 3: MACD Histogram Confirm
    h0 = df["Hist"].iloc[-1]
    h1 = df["Hist"].iloc[-2]

    moment_up = h0 > 0 and h0 > h1
    moment_down = h0 < 0 and h0 < h1

    # BUY
    if breakout_up and vol_ok and moment_up:
        return "BUY", sup, res

    # SELL
    if breakout_down and vol_ok and moment_down:
        return "SELL", sup, res

    return "NONE", sup, res

8. Gửi lệnh Binance 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):
    if sig == "BUY":
        client.futures_create_order(symbol=symbol, side="BUY", type="MARKET", quantity=qty)

    if sig == "SELL":
        client.futures_create_order(symbol=symbol, side="SELL", type="MARKET", quantity=qty)

9. Full Code – Bot Auto Trading Breakout Premium

symbol = "BTC/USDT"
qty = 0.01

df = fetch(symbol)
df = indicators(df)
sig, sup, res = breakout_signal(df)

print("Signal:", sig)

if sig != "NONE":
    execute(symbol, sig, qty)

Chạy bot liên tục:

import time

while True:
    df = fetch(symbol)
    df = indicators(df)
    sig, sup, res = breakout_signal(df)

    print("Price:", df['close'].iloc[-1], 
          "| Support:", sup, 
          "| Resistance:", res,
          "| Signal:", sig)

    if sig != "NONE":
        execute(symbol, sig, qty)

    time.sleep(10)

10. Nâng cấp Breakout Premium (Pro Version)

1. Thêm ATR Stop-loss
SL = Entry – ATR×2 (Buy)
SL = Entry + ATR×2 (Sell)

2. Thêm lớp lọc “Kênh Xu Hướng”
Chỉ breakout trong xu hướng hợp lệ.

3. Thêm lớp lọc “MA6–10–20”
Chỉ BUY khi MA6 > MA10 > MA20.

4. Thêm Realtime Websocket
→ nhận breakout theo từng tick, không delay.

5. Tránh giao dịch khi giá nằm trong biên sideway (biên độ < X%)

6. Thêm TP theo Fibonacci Extension
TP1 = 1.272
TP2 = 1.618