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.
- β 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
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
git clone https://github.com/Sekisback/Bitunix_Bot.git
cd Bitunix_Botpython3 -m venv .venv
source .venv/bin/activate # Linux/Mac
# oder
.venv\Scripts\activate # Windowspip install -r requirements.txtcredentials:
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: 5config.yaml steht in .gitignore - niemals committen!
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)
cd strategies/EMA_Touch
python bot.py --config ONDOUSDTWeitere Coins:
python bot.py --config XRPUSDT
python bot.py --config BTCUSDTsymbol: "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 aktivierenDRY 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!
mkdir -p strategies/MeineStrategie
cd strategies/MeineStrategieMeineStrategie/
βββ bot.py # Haupt-Bot
βββ config/ # YAML-Configs
βββ indicators/ # Deine Indikatoren
βββ signals/ # Signal-Logik
βββ trading/ # Order-Execution
βββ utils/ # Hilfsfunktionen
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()Log-Dateien:
logs/
βββ EMA_Touch_ONDOUSDT_2025-10-09.log
Debug-Mode aktivieren:
system:
debug: trueWichtige 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
- β 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! π