Skip to content

Sekisback/Bitunix_Trading_Bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

91 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ€– Bitunix Trading Bot

Ein modularer, erweiterbarer Trading-Bot fΓΌr die Bitunix Futures API mit WebSocket-Echtzeit-Datenverarbeitung.

VollstÀndig in Python entwickelt, nutzt ausschließlich offizielle REST- und WebSocket-Endpunkte.
Event-basierte Architektur fΓΌr minimale Latenz und maximale StabilitΓ€t.


✨ Features

  • βœ… Echtzeit WebSocket-Datenverarbeitung - Event-basiert statt Polling
  • βœ… Automatisches Reconnect - Stabile Verbindung auch bei Netzwerkproblemen
  • βœ… DRY RUN Mode - Realistische Simulation mit TP/SL-Tracking
  • βœ… Multi-Coin Support - Separate Config pro Symbol
  • βœ… Modulare Strategien - Indicators, Signals, Trading-Logic getrennt
  • βœ… Position-Management - Verhindert Doppel-Positionen automatisch
  • βœ… Umfangreiches Logging - Debug-Mode fΓΌr Entwicklung

🧩 Projektstruktur

Bitunix_Trading_Bot/
β”‚
β”œβ”€β”€ core/                        # API-Module (direkt an Bitunix API angebunden)
β”‚   β”œβ”€β”€ config.py                # LΓ€dt API-Keys & Verbindungsdaten
β”‚   β”œβ”€β”€ open_api_http_future_private.py   # Private Order-Methoden
β”‚   β”œβ”€β”€ open_api_http_future_public.py    # Γ–ffentliche Marktendpunkte
β”‚   β”œβ”€β”€ open_api_ws_future_public.py      # WebSocket Public (mit Auto-Reconnect)
β”‚   β”œβ”€β”€ open_api_ws_future_private.py     # WebSocket Private
β”‚   └── error_codes.py           # Fehlerhandling
β”‚
β”œβ”€β”€ strategies/                  # Trading-Strategien
β”‚   └── EMA_Touch/               # EMA21 Touch-Strategie
β”‚       β”œβ”€β”€ bot.py               # Haupt-Bot (WebSocket-basiert)
β”‚       β”œβ”€β”€ config/              # Coin-Configs (YAML)
β”‚       β”‚   β”œβ”€β”€ ONDOUSDT.yaml
β”‚       β”‚   β”œβ”€β”€ XRPUSDT.yaml
β”‚       β”‚   └── BTCUSDT.yaml
β”‚       β”œβ”€β”€ indicators/          # Technische Indikatoren
β”‚       β”‚   β”œβ”€β”€ ema.py           # EMA-Berechnung
β”‚       β”‚   └── adx.py           # ADX Trendfilter
β”‚       β”œβ”€β”€ signals/             # Signal-Generierung
β”‚       β”‚   β”œβ”€β”€ signal_generator.py
β”‚       β”‚   └── ema21_touch.py   # EMA21 Touch-Detection
β”‚       β”œβ”€β”€ trading/             # Order-Management
β”‚       β”‚   β”œβ”€β”€ order_execution.py
β”‚       β”‚   └── position_manager.py
β”‚       └── utils/               # Hilfsfunktionen
β”‚           β”œβ”€β”€ config_loader.py
β”‚           β”œβ”€β”€ kline_fetcher.py
β”‚           └── websocket_kline_manager.py  # WebSocket Kline-Handler
β”‚
β”œβ”€β”€ test_files/                  # Test-Scripts
β”œβ”€β”€ .gitignore
β”œβ”€β”€ requirements.txt
└── README.md

βš™οΈ Installation

1️⃣ Repository klonen

git clone https://github.com/Sekisback/Bitunix_Bot.git
cd Bitunix_Bot

2️⃣ Virtuelle Umgebung erstellen

python3 -m venv .venv
source .venv/bin/activate  # Linux/Mac
# oder
.venv\Scripts\activate     # Windows

3️⃣ AbhΓ€ngigkeiten installieren

pip install -r requirements.txt

4️⃣ Konfiguration

API-Keys (config.yaml im Root)

credentials:
  api_key: "DEIN_API_KEY"
  secret_key: "DEIN_SECRET_KEY"

http:
  uri_prefix: "https://fapi.bitunix.com"

websocket:
  public_uri: "wss://ws.bitunix.com/market"
  private_uri: "wss://ws.bitunix.com/private"
  reconnect_interval: 5

⚠️ Wichtig: config.yaml steht in .gitignore - niemals committen!


πŸš€ EMA Touch Strategie

Strategie-Konzept

Die EMA21 Touch-Strategie handelt prΓ€zise BerΓΌhrungen der 21-EMA-Linie:

Entry-Bedingungen:

  • Preis berΓΌhrt EMA21 (Abstand < 0.05%)
  • EMA-Hierarchie bestΓ€tigt Trend (21 > 50 > 200 fΓΌr LONG)
  • ADX > 25 (starker Trend)
  • EMA-Distanz-Filter aktiv

Exit:

  • Take Profit: +1.0% (konfigurierbar)
  • Stop Loss: -0.5% (konfigurierbar)

Bot starten

cd strategies/EMA_Touch
python bot.py --config ONDOUSDT

Weitere Coins:

python bot.py --config XRPUSDT
python bot.py --config BTCUSDT

Config-Datei (Beispiel: ONDOUSDT.yaml)

symbol: "ONDOUSDT"

trading:
  interval: "1m"           # Zeitrahmen
  leverage: 5              # Hebel
  dry_run: true            # Simulation (true) oder LIVE (false)
  fixed_qty: null          # Fixe Menge oder null fΓΌr Auto-Berechnung
  client_id_prefix: "EMA"

indicators:
  ema_fast: 21             # Schnelle EMA
  ema_slow: 50             # Mittlere EMA
  ema_trend: 200           # Trend-EMA
  adx_period: 14           # ADX Periode

trend_filter:
  use_filter: true         # Trendfilter aktivieren
  adx_threshold: 25        # Minimaler ADX-Wert
  ema_distance_threshold: 0.3  # Max Abstand zwischen EMAs (%)

entry:
  touch_threshold_pct: 0.05  # EMA Touch-Zone (%)

risk:
  tp_pct: 0.01             # Take Profit (1%)
  sl_pct: 0.005            # Stop Loss (0.5%)
  fee_pct: 0.0006          # Trading Fees (0.06%)

system:
  backtest_bars: 250       # Buffer fΓΌr Indikatoren
  timezone_offset: 2       # Europa (MESZ)
  debug: true              # Debug-Logs aktivieren

DRY RUN vs LIVE Mode

DRY RUN (Simulation):

trading:
  dry_run: true
  • Keine echten Orders
  • Simuliert Position mit TP/SL
  • Berechnet theoretische Gewinne/Verluste
  • Perfekt fΓΌr Tests!

LIVE Mode:

trading:
  dry_run: false
  • ⚠️ ECHTE ORDERS!
  • Nutzt echtes Kapital
  • Nur nach grΓΌndlichen Tests verwenden!

πŸ”§ Eigene Strategie erstellen

1. Neuen Strategie-Ordner anlegen

mkdir -p strategies/MeineStrategie
cd strategies/MeineStrategie

2. Module erstellen

MeineStrategie/
β”œβ”€β”€ bot.py              # Haupt-Bot
β”œβ”€β”€ config/             # YAML-Configs
β”œβ”€β”€ indicators/         # Deine Indikatoren
β”œβ”€β”€ signals/            # Signal-Logik
β”œβ”€β”€ trading/            # Order-Execution
└── utils/              # Hilfsfunktionen

3. WebSocket-Manager nutzen

from utils.websocket_kline_manager import WebSocketKlineManager

async def on_new_kline(kline: dict, df: pd.DataFrame):
    """Wird bei jeder neuen Kerze aufgerufen"""
    print(f"Neue Kerze: {kline['close']}")
    
    # Deine Logik hier...
    signal = generate_signal(df)
    if signal:
        place_order(signal)

# Manager erstellen
manager = WebSocketKlineManager(
    symbol="BTCUSDT",
    interval="1m",
    buffer_size=200,
    on_kline_callback=on_new_kline
)

# Starten
await manager.start()

πŸ“Š Monitoring & Logs

Log-Dateien:

logs/
└── EMA_Touch_ONDOUSDT_2025-10-09.log

Debug-Mode aktivieren:

system:
  debug: true

Wichtige Log-Meldungen:

  • πŸ•―οΈ Neue Kerze - Kerze empfangen
  • βœ… Signal gefunden - Entry-Signal erkannt
  • πŸ”’ Aktive Position - Position lΓ€uft
  • βœ… TP erreicht - Take Profit getriggert
  • ❌ SL erreicht - Stop Loss getriggert
  • πŸ”„ Re-Subscribe - WebSocket Reconnect

⚠️ Sicherheitshinweise

  • βœ… Immer erst DRY RUN testen
  • βœ… Niemals API-Keys ins Git committen
  • βœ… Leverage vorsichtig wΓ€hlen (Start: 2-3x)
  • βœ… Stop Loss IMMER aktiviert lassen
  • βœ… Klein starten, dann skalieren
  • ⚠️ Trading birgt Verlustrisiken!

Happy Trading! πŸ“ˆ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages