Signal Pilot
🔴 Fortgeschritten • Lektion 57 von 82

Trading-Automatisierung: Programmiere deinen Vorteil, nimm die Emotion raus

15 Min. Lesezeit • Automatisierte Ausführung & APIs
Signal Pilot
Professionelle Trading-Ausbildung
0%
Du machst Fortschritte!
Lies weiter, um diese Lektion abzuschließen

3 Uhr nachts. Dein Sweep-Setup triggert. Du schläfst.

Dein Bot platziert den Trade, setzt den Stopp und zielt auf 3R. Und du träumst dabei.

6 Uhr morgens. Du wachst auf. Position geschlossen. +2,8R Gewinn. Der Kaffee schmeckt besser.

🎯 Das Versprechen der Automatisierung

Kein FOMO. Keine Angst. Kein Zögern. Nur Code, der deine Regeln perfekt ausführt, jedes einzelne Mal.

Das ist keine Science-Fiction. So handeln Profis im Jahr 2024.

📉 FALLSTUDIE: Michaels Margin Call über 19.000 $

Aufbau: Mike Sullivan (zusammengesetztes Beispiel), Python-Entwickler, Konto über 200.000 $. Bot über die Alpaca-API (kaufe SPY bei RSI<30). Backtest 2020-2023: 67 % Trefferquote, +140.000 $. Ausgerollt mit NULL Sicherheitskontrollen.

Das Desaster (ein Morgen mit CPI-Schock): Der Bot lief 8 Wochen (+14.000 $, 71 % Trefferquote). SPY eröffnete mit einem Gap von -2,8 % bei 510 $. Der Bot sah RSI 22 und kaufte weiter: 200.000 $ zu 510 $, 505 $, 495 $, 490 $ = Position über 800.000 $ (4-facher Hebel, Durchschnittskurs 499,87 $). Um 15 Uhr: SPY bei 488 $ — 7 % unter dem Vortagesschluss — die Position war 781.000 $ wert, 19.005 $ im Minus, und der Nachschussaufruf kam. Mike war bei der Arbeit und konnte nichts tun.

Erholung: Konto nach dem Knall: 195.000 $. Neu gebaut mit 5 Kontrollen: maximal 50.000 $ Position, VIX>25 = deaktiviert, maximal 3 Trades pro Tag, Alarm bei -5 % vom Höchststand, komplette Abschaltung bei -10 %. Ergebnis über die nächsten 8 Monate: 195.000 $ → 218.000 $ (+12 %), und keine Kontrolle hat je versagt.

Lektion: Programmiere Sicherheitskontrollen ZUERST: (1) Positionslimits, (2) Volatilitätsfilter, (3) Abschaltung bei maximalem drawdown, (4) Not-Aus. Backtests lügen — sie lassen schwarze Schwäne aus.

Quiz: Michaels Bot kassierte an EINEM VORMITTAG einen Nachschussaufruf. Woran lag das?

A) Slippage bei der Ausführung und Latenzprobleme
B) Die API-Verbindung ist während des Crashs ausgefallen
C) NULL Sicherheitskontrollen — der Bot verbilligte 4× während eines Tagesverlusts von 7 % und baute eine Position über 800.000 $ auf (4-facher Hebel) auf einem Konto über 200.000 $
D) Ein Programmierfehler erzeugte doppelte Orders
Richtig: C. Mike programmierte «kaufe bei überverkauftem RSI», aber nie Positionslimits, Volatilitätsfilter oder einen Not-Aus. Der Bot baute im Crash eine 4-fach gehebelte Position auf — 19.005 $ im Minus und ein Nachschussaufruf, bevor er überhaupt an eine Tastatur kam. Erholung: 5 Sicherheitskontrollen ergänzt, 195.000 $ → 218.000 $ in 8 Monaten. Programmiere Sicherheitskontrollen ZUERST.
⚡ Schnelle Erfolge für morgen (zum Aufklappen klicken)
  1. Zuerst im Demo-Modus handeln — Setze nie echtes Kapital hinter ungetestete Automatisierung. Erst Demo-Modus, und laut Teil 2 heißt das Monate, nicht Wochen.
  2. Positionslimits ergänzen — Codiere eine maximale Positionsgröße fest: 2 % Kontorisiko pro Trade UND eine Obergrenze für den Nominalwert, denn 2 % Risiko sind nicht 2 % Exposure.
  3. Einen Not-Aus bauen — Baue eine manuelle Abschaltung, die mit einem Klick bzw. Befehl jede Bot-Aktivität stoppt.
Teil 1: Warum solltest du dein Trading automatisieren?

Das menschliche Problem im Trading

Du hast 6 Monate an einer Trading-Strategie gefeilt. Sie im backtest geprüft. Vorwärts getestet. Trefferquote: 62 %. Durchschnittliches R: 2,3. Der Vorteil ist bestätigt.

Du handelst sie live. Das Ergebnis?

Monat Strategie-Performance (bei perfekter Befolgung) Deine tatsächliche Performance Das Problem
Monat 1 +4.200 $ (62 % Trefferquote) +1.800 $ (48 % Trefferquote) 3 Setups ausgelassen (Angst nach einer Verluststrecke)
Monat 2 +3.900 $ (60 % Trefferquote) -2.100 $ (38 % Trefferquote) Rache-Trades genommen, Größe nach Verlusten verdoppelt
Monat 3 +5.100 $ (65 % Trefferquote) +900 $ (52 % Trefferquote) Bei Ausbruchs-Setups gezögert, 40 % der Signale verpasst

Die brutale Wahrheit: Du hast eine profitable Strategie. Aber DU bist das schwache Glied.

Die drei Ausführungskiller

1. Zögern (Auslassen aus Angst)

  • Du hast gerade 2 Verluste kassiert. Setup Nr. 3 erscheint. Du denkst: «Vielleicht warte ich auf Bestätigung …»
  • Du wartest. Der Kurs läuft ohne dich. Es war ein 4R-Gewinner. Du hast ihn aus Angst verpasst.
  • Auswirkung: Gewinner auszulassen zerstört den positiven Erwartungswert

2. Overtrading (FOMO-Einstiege)

  • Der Markt zieht an. Deine Strategie sagt «kein Setup». Aber du hältst es nicht aus zuzuschauen. Du steigst trotzdem ein.
  • Kein Stopp gesetzt. Kein Plan. Nur Hoffnung. Es dreht. Du verlierst.
  • Auswirkung: Zufällige Einstiege verwässern deinen Vorteil mit Rauschen

3. Uneinheitliche Positionsgrößen

  • Setup A: Du riskierst 1 % (vorsichtig nach dem letzten Verlust)
  • Setup B: Du riskierst 5 % (selbstbewusst, «ich spüre es»)
  • Setup A gewinnt 3R. Du machst 3 %. Setup B verliert 1R. Du verlierst 5 %. Netto: -2 %.
  • Auswirkung: Eine einzige falsche Größenentscheidung frisst 3 gute Trades auf

💡 Was die Automatisierung löst

Ein automatisierter Trading-Bot führt mit perfekter Disziplin:

  • Kein Zögern: Setup erscheint → Trade wird ausgeführt (auch nach 5 Verlusten in Folge)
  • Kein FOMO: Setup erscheint nicht → der Bot wartet (egal wie langweilig der Markt gerade ist)
  • Perfekte Größe: Jeder Trade riskiert exakt 2 % (oder was immer du programmiert hast), jedes einzelne Mal

Ergebnis: Deine backtest-Performance wird zu deiner Live-Performance. Der Vorteil, den du getestet hast, ist der Vorteil, den du bekommst.

Das Skalierungsproblem (Grenzen des manuellen Handels)

Manueller Handel deckelt dein Potenzial:

Einschränkung Manuelles Limit Automatisiertes Potenzial
Märkte 1-3 Symbole beobachten (Grenze der menschlichen Aufmerksamkeit) Über 50 Symbole gleichzeitig überwachen
Zeitrahmen Höchstens 1-2 Zeitrahmen verfolgen 5m, 15m, 1h und Tageschart gleichzeitig scannen
Stunden 6-8 Stunden pro Tag handeln (Burnout-Risiko) Rund um die Uhr handeln (Krypto) oder über die vollen Börsenzeiten (Aktien)
Setups 5-10 Setups pro Woche erwischen (realistisch für diskretionäre Trader) 50-200 Setups pro Woche erwischen (der Bot schläft nie und verpasst nichts)

Beispiel: Ein manueller Trader beobachtet ES (S&P-Futures) im 15-Minuten-Chart. Erwischt rund 8 Setups pro Woche. Verdient im Schnitt 3.200 $ pro Monat — etwa 92 $ pro Setup.

Derselbe Trader, automatisiert: Der Bot scannt ES, NQ und RTY (Index-Futures) sowie GC und CL (Metalle und Energie) auf 5m, 15m und 1h. Erwischt rund 24 Setups pro Woche. Bei denselben 92 $ pro Setup sind das 9.600 $ pro Monat.

Der Hebel: Du handelst nicht besser. Du handelst MEHR — ohne auszubrennen.

Und die Obergrenze: ES, MES, SPY und QQQ sind weitgehend derselbe Trade. Korrelierte Symbole vervielfachen deine Signalzahl, nicht deinen Vorteil — und sie vervielfachen dein Risiko, wenn vier davon gleichzeitig auslösen. Zähle unkorrelierte Gelegenheiten, nicht Ticker.

Wann Automatisierung Sinn ergibt (und wann nicht)

Automatisierung funktioniert am besten bei:

  • Regelbasierten Strategien: Klare Ein- und Ausstiegskriterien (z. B. «kaufe, wenn der Kurs ein Tief abfischt und es dann zurückerobert»)
  • Häufigen Setups: Strategien, die mehr als 10-mal pro Woche auslösen (das Volumen rechtfertigt den Programmieraufwand)
  • Langweiliger Ausführung: Strategien, bei denen Ermessen keinen Mehrwert bringt (mechanische Vorteile)

Automatisierung tut sich schwer mit:

  • Diskretionären Setups: «Ich handle das nur, wenn es sich richtig *anfühlt*» (Intuition lässt sich nicht programmieren)
  • Kontextabhängigen Trades: «Dieser Ausbruch funktioniert, wenn das Volumen über dem 2-fachen Durchschnitt liegt UND ein Nachrichtenkatalysator da ist» (komplexer Kontext ist schwer zu quantifizieren)
  • Seltenen Strategien: Setups, die 1-2-mal pro Monat auslösen (der Programmieraufwand lohnt nicht)

⚠️ Automatisierung repariert keine schlechte Strategie

Häufiger Fehler: «Meine Strategie funktioniert manuell nicht. Vielleicht macht ein Bot sie profitabel?»

Realität: Automatisierung führt deine Strategie GENAU so aus, wie sie codiert ist. Hat deine Strategie keinen Vorteil, verliert der Bot beständig — nur schneller und effizienter.

Regel: Automatisiere NUR Strategien mit nachgewiesen positivem Erwartungswert über mehr als 100 manuelle Trades. Automatisierung verstärkt Vorteile. Sie erschafft keine.

Teil 2: Die Wahl von API und Broker

Broker-API im Vergleich

Nicht jeder Broker unterstützt automatisierten Handel. Und die, die es tun, unterscheiden sich massiv in Qualität, Kosten und Funktionsumfang.

Die besten Broker-APIs für automatisierten Handel

Broker Anlageklassen API-Qualität Kosten Am besten für
Alpaca Aktien, ETFs, Krypto ⭐⭐⭐⭐⭐ Ausgezeichnet (RESTful + WebSocket, gut dokumentiert) Aktien provisionsfrei, 0,1-0,25 % bei Krypto Einsteiger (einfachste API, kostenloses Paper Trading, Python-Bibliothek)
Interactive Brokers (IBKR) Aktien, Optionen, Futures, Devisen, CFDs (globale Märkte) ⭐⭐⭐⭐ Gut (mächtig, aber komplex, steile Lernkurve) 0,005 $ pro Aktie, 0,65 $ pro Optionskontrakt Fortgeschrittene Trader (wollen Optionen/Futures automatisieren, globaler Zugang)
Binance Krypto (über 600 Paare; die Hauptbörse ist für US-Bürger gesperrt — Binance.US ist ein separater, deutlich kleinerer Handelsplatz) ⭐⭐⭐⭐⭐ Ausgezeichnet (REST + WebSocket, hoher Durchsatz) 0,1 % Spot, 0,02-0,04 % Futures (mit BNB-Rabatt) Krypto-Algo-Trader (Märkte rund um die Uhr, hohe Liquidität)
Schwab (früher TD Ameritrade / thinkorswim) Aktien, Optionen, Futures ⭐⭐⭐ Mittelmäßig (die alte TD-Ameritrade-API wurde 2024 abgeschaltet; die Schwab Trader API hat sie ersetzt und reift noch) Aktien 0 $, 0,65 $ pro Optionskontrakt Bestehende Schwab-Kunden (haben das Konto schon und wollen automatisieren)
TradeStation Aktien, Optionen, Futures ⭐⭐⭐⭐ Gut (Programmierung in EasyLanguage, backtesting eingebaut) Aktien 0 $, 0,60 $ pro Optionskontrakt Aktive Trader (wollen eine integrierte Plattform ohne externes Programmieren)

Kurze Entscheidungshilfe

Wähle Alpaca, wenn: du Automatisierung lernst (einfachste API, kostenloses Paper Trading, beste Doku). Wähle Interactive Brokers, wenn: du Optionen/Futures/globale Märkte brauchst (alle Anlageklassen, 0,005 $ pro Aktie, institutionelles Niveau). Wähle Binance, wenn: es nur um Krypto geht (Märkte rund um die Uhr, über 600 Paare, 0,1 % Gebühren).

💡 Profi-Tipp: Starte immer mit Paper Trading

Jeder oben genannte Broker bietet Paper Trading an (simulierter Handel mit Spielgeld und echten Kursdaten).

Empfohlener Zeitplan:

  1. Woche 1-2: Mit der API verbinden, grundlegende Orderplatzierung testen (Kauf, Verkauf, Stop-Loss)
  2. Woche 3-8: Strategie programmieren, im Paper Trading ausrollen, täglich überwachen
  3. Woche 9-12: Strategie-Performance validieren (passt sie zum backtest?)
  4. Ab Monat 4: Wenn sie 3 Monate in Folge im Paper Trading profitabel war, live gehen mit 10 % des Kapitals
  5. Ab Monat 6: Wenn sie weiter profitabel ist, auf die volle Allokation hochskalieren

Überspringe niemals das Paper Trading. Mike (Fallstudie oben) hat es übersprungen und kassierte an einem Vormittag einen Nachschussaufruf.

Teil 3: Deine erste automatisierte Strategie bauen

Von der Trading-Idee zum ausführbaren Code

Du hast eine manuelle Strategie. Wie übersetzt du sie in Code, den ein Bot ausführen kann?

Das 5-Schritte-Framework zur Strategieübersetzung

Schritt 1: Einstiegsbedingungen definieren (nur explizite Regeln)

Der manuelle Trader denkt: «Ich kaufe, wenn der Kurs ein Tief abfischt und wieder nach oben dreht.»

Das ist für einen Bot zu vage. Ein Bot braucht präzise Logik:

  • Was ist ein «Sweep»? → Das Tief der aktuellen Kerze fällt mindestens 0,3 % unter das vorherige Swing-Tief
  • Was heißt «dreht wieder nach oben»? → Der Kurs schließt innerhalb von 1-3 Kerzen wieder über dem Swing-Tief
  • Was ist ein «Swing-Tief»? → Das tiefste Tief der letzten 20 Kerzen

Codierte Fassung:

swing_low = min([bar.low for bar in last_20_bars])
current_low = current_bar.low
current_close = current_bar.close

if current_low < swing_low * 0.997:  # 0,3 % darunter abgefischt
    if current_close > swing_low:     # zurueckerobert
        ENTRY = True  # Sweep-Setup bestaetigt

Schritt 2: Ausstiegsbedingungen definieren (Stopp und Ziel)

Der manuelle Trader: «Ich setze meinen Stopp unter den Sweep und nehme Gewinne bei einem Chance-Risiko-Verhältnis von 3:1.»

Codierte Fassung:

entry_price = current_close
stop_loss = swing_low * 0.995  # knapp unter dem Sweep
stop_distance = entry_price - stop_loss
target = entry_price + (stop_distance * 3)  # 3R-Ziel

Schritt 3: Positionsgröße definieren (Risikomanagement)

Der manuelle Trader: «Ich riskiere etwa 2 % pro Trade.»

Codierte Fassung:

account_equity = 100000  # Konto ueber 100.000 $
risk_per_trade = 0.02    # 2 %
risk_amount = account_equity * risk_per_trade  # 2.000 $

stop_distance = entry_price - stop_loss
position_size = risk_amount / stop_distance  # zu kaufende Aktien

# Beispiel: Einstieg 520 $, Stopp 518 $, Abstand 2 $
# Positionsgroesse = 2.000 $ / 2 $ = 1.000 Aktien
# ...das sind 520.000 $ SPY auf einem Konto ueber 100.000 $. 2 % Risiko
# sagen nichts ueber den Nominalwert: ein enger Stopp kauft dir Hebel.
max_notional = account_equity * 1.5   # harte Grenze: 1,5-faches Eigenkapital
position_size = min(position_size, max_notional / entry_price)
# Gedeckelt: 288 Aktien. Das echte Risiko liegt bei 576 $ statt 2.000 $ -
# das ist der Preis, und genau der haelt dich im Geschaeft.

Schritt 4: Trade-Management definieren (optional)

Skalierst du aus? Ziehst du Stopps nach? Nimmst du Teilgewinne mit?

Beispiel: «Ich nehme bei 2R 50 % Gewinn mit und lasse den Rest bis 3R laufen.»

if current_price >= entry_price + (stop_distance * 2):
    SELL_HALF = True  # bei 2R die Haelfte glattstellen
    # Stopp fuer die restlichen 50 % auf Einstand ziehen

Schritt 5: Filter definieren (schlechte Setups verhindern)

Welche Bedingungen entkräften das Setup?

  • Zeitfilter: Nur in den ersten 2 Handelsstunden handeln (9:30-11:30 Uhr ET)
  • Volatilitätsfilter: Trades auslassen, wenn der VIX über 30 liegt (zu unruhig)
  • Trendfilter: Long-Setups nur, wenn der Kurs über der 50-Perioden-EMA liegt
if VIX > 30:
    SKIP_TRADE = True  # Markt zu volatil

if current_time < "09:30" or current_time > "11:30":
    SKIP_TRADE = True  # ausserhalb des Handelsfensters

✅ Vollständiges Strategiebeispiel (Logik des Sweep-Bots)

Alle 5 Schritte kombiniert als ausführbarer Pseudocode:

# Schritt 1: Einstiegsbedingungen
swing_low = min([bar.low for bar in last_20_bars])
if current_bar.low < swing_low * 0.997:  # Sweep
    if current_bar.close > swing_low:     # zurueckerobert

        # Schritt 2: Ausstiege
        entry = current_bar.close
        stop = swing_low * 0.995
        target = entry + ((entry - stop) * 3)

        # Schritt 3: Positionsgroesse
        risk_amount = account_equity * 0.02
        size = risk_amount / (entry - stop)

        # Schritt 4: Trade-Management (bei 2R die Haelfte nehmen)
        profit_target_partial = entry + ((entry - stop) * 2)

        # Schritt 5: Filter
        if VIX < 30 and time_in_window():
            PLACE_ORDER(symbol, size, entry, stop, target)

Das ist jetzt ausführbar. Ein Bot kann diese Regeln perfekt befolgen, jedes einzelne Mal.

Vollständige Bot-Umsetzung (Sweep-Reversal-Strategie)

import alpaca_trade_api as tradeapi
from alpaca_trade_api.rest import TimeFrame
import os, time

# Einrichtung
API_KEY = os.getenv('ALPACA_API_KEY')  # NIEMALS fest eincodieren!
API_SECRET = os.getenv('ALPACA_API_SECRET')
api = tradeapi.REST(API_KEY, API_SECRET, 'https://paper-api.alpaca.markets')

MAX_NOTIONAL_MULT = 1.5   # nie mehr als das 1,5-fache Eigenkapital halten
MAX_DAILY_LOSS = 0.03     # Not-Aus: bei -3 % fuer den Tag aussteigen

def get_swing_low(bars, lookback=20):
    # Die aktuelle Kerze ausschliessen. Nimmt man sie mit, IST das Swing-Tief
    # das aktuelle Tief, der Sweep-Test unten wird nie wahr, der Bot feuert nie.
    lows = [bar.l for bar in bars[-(lookback + 1):-1]]
    return min(lows)

def check_sweep(current_price, current_low, swing_low):
    # Sweep = aktuelles Tief < Swing-Tief (0,3 %), danach darueber zurueckerobert
    if current_low < swing_low * 0.997 and current_price > swing_low:
        return True
    return False

def calculate_position_size(api, entry, stop):
    equity = float(api.get_account().equity)
    risk_amount = equity * 0.02                        # 2 % Risiko
    by_risk = risk_amount / (entry - stop)
    by_notional = (equity * MAX_NOTIONAL_MULT) / entry  # die Kontrolle, die Mike fehlte
    return int(min(by_risk, by_notional))

def kill_switch_tripped(api):
    acct = api.get_account()
    move = (float(acct.equity) - float(acct.last_equity)) / float(acct.last_equity)
    return move <= -MAX_DAILY_LOSS

def in_position(api, symbol):
    # Frag den Broker; vertrau keiner lokalen Variable. Eine Bracket-Order, die
    # ueber Nacht ausgefuehrt und geschlossen wurde, darf morgen nichts blockieren.
    try:
        api.get_position(symbol)
        return True
    except Exception:
        return False

def place_bracket_order(api, symbol, size, entry, stop, target):
    try:
        order = api.submit_order(
            symbol=symbol, qty=size, side='buy', type='limit',
            limit_price=entry, time_in_force='gtc',
            order_class='bracket',
            stop_loss={'stop_price': stop},
            take_profit={'limit_price': target}
        )
        print(f"✓ Order: {size} Aktien @ ${entry} | Stopp: ${stop} | Ziel: ${target}")
        return order
    except Exception as e:
        print(f"✗ Order fehlgeschlagen: {e}")
        return None

def run_bot(symbol='SPY'):
    print(f"Bot gestartet. Beobachte {symbol} auf Sweep-Setups...")

    while True:
        try:
            if not api.get_clock().is_open:      # Kontrolle 1: Handelszeiten
                time.sleep(60)
                continue
            if kill_switch_tripped(api):         # Kontrolle 2: Tagesverlustgrenze
                print("🛑 Tagesverlustgrenze erreicht. Ich steige aus.")
                break

            bars = api.get_bars(symbol, TimeFrame.Minute, limit=50)
            current_price = bars[-1].c
            current_low = bars[-1].l
            swing_low = get_swing_low(bars)

            if not in_position(api, symbol) and check_sweep(current_price, current_low, swing_low):
                print(f"🎯 Sweep erkannt @ ${current_price}")
                entry = current_price
                stop = swing_low * 0.995
                target = entry + (entry - stop) * 3  # 3R
                size = calculate_position_size(api, entry, stop)   # Kontrolle 3: Nominalwert-Deckel
                if size > 0:
                    place_bracket_order(api, symbol, size, entry, stop, target)

            time.sleep(60)  # jede Minute pruefen
        except Exception as e:
            print(f"Fehler: {e}")
            time.sleep(60)

run_bot()  # ~75 Zeilen - und die drei wichtigsten davon sind die Kontrollen.

Was das macht: Verbindet sich mit Alpaca, holt 1-Minuten-Kerzen von SPY, erkennt Sweep-Reversals (das Tief fischt unter das Swing-Tief und erobert es zurück), bestimmt die Größe über 2 % Risiko gedeckelt durch den Nominalwert, platziert eine Bracket-Order (Einstieg + Stopp + 3R-Ziel) und wiederholt das alle 60 Sekunden — aber nur, solange der Markt offen ist, nur wenn der Broker meldet, dass keine Position offen ist, und nie, wenn der Tag 3 % im Minus liegt. Perfekte Disziplin, null Emotion und drei Bremsen.

💡 der Aha-Moment

Du hast gerade die menschliche Ebene entfernt. Kein «Soll ich den nehmen?» mehr. Kein «Vielleicht warte ich noch» mehr.

Setup erscheint → der Bot handelt. Setup erscheint nicht → der Bot wartet. Perfekte Disziplin.

Teil 4: Produktivbetrieb (der schwierige Teil)

Paper Trading ≠ Live-Trading

Dein Bot läuft im Paper Trading perfekt. Du rollst ihn live aus. Er stürzt ab. Orders werden abgelehnt. Du bist ratlos.

Willkommen im Produktivbetrieb.

Häufige Fehler (und wie man sie abfängt)

Häufige Fehler: Verbindungs-Timeout, abgelehnte Order, Teilausführungen, Rate Limits, geschlossener Markt. Lösungen: Wiederholungslogik (3× exponentielles Backoff), Vorabprüfungen (Guthaben, Handelszeiten, Kurs), Umgang mit Teilausführungen, Rate Limiting (200 Anfragen/Min.), Prüfung der Handelszeiten (9:30-16 Uhr ET). Professionelle Bots fangen Fehler sauber ab.

Wiederholungslogik (unverzichtbar)

import uuid

def place_order_with_retry(api, **order_params):
    """Orderplatzierung bis zu 3-mal wiederholen"""
    max_retries = 3

    # Bei jedem Versuch dieselbe ID. Kam die erste Anfrage tatsaechlich beim
    # Broker an und ging nur die Antwort verloren, wird die Wiederholung als
    # Duplikat abgelehnt, statt deine Position zu verdoppeln.
    order_params.setdefault('client_order_id', f"bot-{uuid.uuid4()}")

    for attempt in range(max_retries):
        try:
            order = api.submit_order(**order_params)
            return order  # Erfolg!

        except Exception as e:
            if attempt < max_retries - 1:
                wait = 2 ** attempt  # 1s, dann 2s (exponentielles Backoff)
                print(f"Order fehlgeschlagen: {e}. Wiederholung in {wait}s...")
                time.sleep(wait)
            else:
                # Letzter Versuch gescheitert
                print(f"Order nach {max_retries} Versuchen fehlgeschlagen: {e}")
                # Alarm senden (E-Mail, SMS)
                raise  # Ausnahme erneut werfen

Monitoring & Alarme (entscheidend)

Dein Bot läuft auf einem VPS in der Cloud. Du sitzt beim Abendessen. Er läuft in einen Fehler.

Du bist jetzt auf halber Strecke. Du hast die zentralen Strategien gelernt.

Starker Fortschritt! Mach bei Bedarf eine kurze Dehnpause, dann steigen wir in die fortgeschrittenen Konzepte ein.

Woher weißt du das?

Antwort: Alarme.

import smtplib
from email.mime.text import MIMEText

def send_alert(subject, message):
    """E-Mail-Alarm senden"""
    msg = MIMEText(message)
    msg['Subject'] = subject
    msg['From'] = 'bot@yourbot.com'
    msg['To'] = 'you@gmail.com'

    # Versand ueber Gmail-SMTP - dafuer braucht es ein Gmail-App-Passwort,
    # nicht dein Kontopasswort; Basic Auth wurde 2022 abgeschaltet.
    with smtplib.SMTP('smtp.gmail.com', 587) as server:
        server.starttls()
        server.login('bot@yourbot.com', os.getenv('EMAIL_PASSWORD'))
        server.send_message(msg)

# Verwendung
try:
    # Trading-Logik
    pass
except Exception as e:
    send_alert(
        subject="🚨 Fehler im Trading-Bot",
        message=f"Der Bot lief in einen Fehler: {e}"
    )
    raise

Jetzt weißt du innerhalb von Minuten, wenn etwas kaputtgeht.

🚨 Not-Aus (nicht verhandelbar)

Dein Bot muss den Handel automatisch einstellen, wenn:

  • der Tages-drawdown -3 % überschreitet (Michaels Neubau schaltete zusätzlich bei -10 % vom Höchststand endgültig ab)
  • 5 Verluste in Folge auflaufen
  • mehr als 10 API-Fehler pro Stunde auftreten
  • unerwartetes Verhalten erkannt wird

Programmiere das. Teste es. Dein Konto hängt davon ab.

Hosting: Wo du deinen Bot laufen lässt

Warum der Heim-PC scheitert

  • Stromausfall: Der PC geht aus, der Bot steht
  • Internetausfall: Keine Verbindung = verpasste Trades
  • Windows-Updates: Automatischer Neustart um 3 Uhr = Bot tot
  • Du: «Ich starte den PC nur mal eben kurz neu …»

Verfügbarkeit: 95 % (für Algo-Trading inakzeptabel)

Warum der Cloud-VPS gewinnt

  • 99,9 % Verfügbarkeit: AWS, DigitalOcean, Linode
  • Keine Stromausfälle: Redundante Stromversorgung, Backups
  • Schnelles Internet: Geringe Latenz zu den Broker-APIs
  • Automatischer Neustart: Bot abgestürzt? Startet in 30 Sekunden neu

Kosten: 5-20 $ pro Monat (der billigste Verstärker deines Vorteils, den du je kaufst)

Teil 5: Der Realitätscheck

Automatisierung ist kein Selbstläufer

Du rollst deinen Bot aus. Er handelt einen Monat. Trefferquote: 65 %. Genau wie im backtest. Du bist begeistert.

Monat 2: Die Trefferquote fällt auf 48 %. Du bist ratlos.

Was geschah?

Das Marktregime hat sich geändert. Deine Strategie funktioniert in trendenden Märkten. Der Markt wechselte in eine Seitwärtsphase. Dein Bot handelte weiter. Die Ergebnisse litten.

🚨 Die harte Wahrheit

Automatisierung verstärkt deinen Vorteil. Aber sie passt sich Regimewechseln nicht von allein an.

Du musst weiterhin überwachen, prüfen und nachjustieren. Nur seltener.

Monatliche Wartungscheckliste für den Bot

1. Leistungskennzahlen: Trefferquote innerhalb von 5 % zum backtest? Durchschnittliches R positiv? Drawdown akzeptabel? Slippage verschlechtert? 2. Fehlerprotokolle: Verbindungsfehler, abgelehnte Orders, Sonderfälle. 3. Regimeprüfung: Begünstigt der Markt die Strategie noch? VIX erhöht → pausieren. Niedrige Volatilität → Ausbrüche tun sich schwer.

🎓 Die wichtigsten Erkenntnisse

  • Automatisierung nimmt die Emotion raus — repariert aber keine schlechte Strategie
  • Starte mit Alpaca (Aktien) oder Binance (Krypto) für einfachen API-Zugang
  • Handle 3-6 Monate im Paper Trading, bevor du live gehst
  • Fehlerbehandlung ist entscheidend: Wiederholungslogik, Alarme, Not-Aus
  • Betreibe ihn auf einem Cloud-VPS (5-20 $ pro Monat) für 99,9 % Verfügbarkeit
  • Prüfe monatlich: Performance, Fehler, Regime-Passung

📝 Praxisübung

Baue dein erstes API-Trading-Skript

  1. Richte ein Alpaca-Paper-Trading-Konto ein
    • Melde dich bei alpaca.markets an (kostenloses Paper Trading)
    • Erzeuge API-Key und Secret
    • Installiere die Python-Bibliothek: pip install alpaca-trade-api
  2. Programmiere ein einfaches Strategieskript
    • Verbinde dich mit der Alpaca-API
    • Hole alle 60 Sekunden den aktuellen SPY-Kurs
    • Setze eine einfache Logik um: Kreuzt der Kurs über die 20-Perioden-SMA, platziere eine Kauforder
    • Ergänze die Berechnung der Positionsgröße (2 % Risiko pro Trade)
    • Füge einen Stop-Loss bei -1R ein
  3. Ergänze Fehlerbehandlung
    • Kapsle API-Aufrufe in try/except-Blöcke
    • Protokolliere alle Fehler in eine Datei
    • Setze eine Wiederholungslogik um (3 Versuche)
  4. Teste 1 Woche im Paper Trading
    • Überwache die Ausführung: Werden Orders korrekt ausgeführt?
    • Prüfe die Protokolle: Gibt es Verbindungsfehler?
    • Prüfe die Performance: Passt sie zu deinem backtest?

Ziel: Baue dein erstes automatisiertes Trading-Skript und rolle es im Paper-Trading-Modus aus. Beherrsche die Grundlagen, bevor du echtes Kapital riskierst.

🎮 Teste dein Verständnis (ganz entspannt)

Frage 1: Du hast einen Bot programmiert, der im Paper Trading perfekt läuft. Wie lange musst du mindestens testen, bevor du live gehst?

A) 1 Woche (wenn er läuft, ausrollen!)
B) 1 Monat (genug, um zu sehen, ob er profitabel ist)
C) 3-6 Monate (Konsistenz über verschiedene Marktphasen prüfen)
D) Kein Test nötig (backtest reicht)

Frage 2: Die Trefferquote deines Bots lag im backtest bei 65 %, live sind es nach 2 Monaten 48 %. Was ist die wahrscheinlichste Ursache?

A) Der Broker sabotiert deine Trades
B) Dein Code hat einen Bug (zufälliges Verhalten)
C) Das Marktregime hat sich geändert (die Strategie passt nicht zu den aktuellen Bedingungen)
D) Backtesting ist nutzlos (scheitert immer live)

Wenn du bis hierher gekommen bist, verstehst du: Automatisierung ist keine Magie, sondern disziplinierte Ausführung in großem Maßstab. Programmiere deinen Vorteil. Teste gründlich. Rolle vorsichtig aus. Überwache fortlaufend.

Verwandte Lektionen

Fortgeschritten Nr. 55

Machine Learning im Trading

Nutze ML-Modelle, um automatisierte Handelssignale zu erzeugen.

Lektion lesen →
Mittelstufe #32

Fortgeschrittenes Backtesting

Teste deine automatisierten Strategien, bevor du live gehst.

Lektion lesen →
Fortgeschritten #59

Performance-Attribution

Analysiere, welche automatisierten Strategien zur Rendite beitragen.

Lektion lesen →

⏭️ Als Nächstes

Lektion #58: Fortgeschrittene Portfoliotheorie — Moderne Portfoliotheorie, Effizienzkurve, Risk Parity und professionelle Frameworks zur Portfoliokonstruktion.

💬 Diskussion (0 Kommentare)

0/1000

Kommentare werden geladen …

← Vorherige Lektion Nächste Lektion →
Nur zu Bildungszwecken. Der Handel ist mit erheblichem Verlustrisiko verbunden. Keine Finanzberatung. Vergangene Wertentwicklung ist keine Garantie für zukünftige Ergebnisse.