AI Trading Guide
Veröffentlicht am 2026-05-20 · Keyword: metatrader 5 python

MetaTrader 5 mit Claude verbinden – die MCP-Bridge

Das hier ist Teil unseres umfassenden Guides Trading-Bot mit Claude bauen und dreht sich um die konkrete Brücke zwischen Claude und MT5. Wenn du Forex, Indizes oder Metalle tradest, kommst du an MetaTrader 5 nicht vorbei – fast jeder europäische Retail-Broker und alle relevanten Prop-Firms (FTMO, MyForexFunds, FundingPips) laufen darauf. Und MT5 hat seit MetaQuotes 2019 eine offizielle Python-Library, die dir genau das gibt was du brauchst: programmatischen Zugriff auf Account, Daten und Orders.

Was du am Ende dieses Artikels hast: ein klares mentales Modell, wie die drei Schichten (MT5-Terminal, Python-Bridge, Claude über MCP) zusammenspielen, einen lauffähigen Setup-Pfad in unter 30 Minuten, konkreten order_send-Code mit allen Stolperfallen, einen FTMO-tauglichen Risk-Wrapper und die fünf Dinge, an denen die meisten Setups kaputtgehen bevor der erste Live-Trade läuft. Code-Snippets sind echt und funktionieren wie sie da stehen.

Was die MCP-Bridge eigentlich ist

Drei Komponenten, drei klare Rollen.

MetaTrader 5 ist das Terminal auf deinem PC oder VPS. Es hält die Broker-Verbindung, die Charts, die offenen Positionen und die Order-Pipeline. Es läuft als Windows-Anwendung (auf Linux über Wine), und MetaQuotes hat dafür eine offizielle Python-Library veröffentlicht (MetaTrader5, installierbar via pip). Diese Library spricht über einen lokalen Inter-Process-Channel mit dem Terminal – dein Python-Prozess sieht alles, was das Terminal sieht.

Die Python-Bridge ist dein eigener Code, der drei Dinge tut: Marktdaten aus MT5 ziehen, Claude für die Entscheidung fragen und Orders ans Terminal zurückgeben. Hier sitzt deine Trading-Logik, dein Risk-Wrapper und dein State-Tracking.

Claude über MCP ist die Reasoning-Schicht. MCP (Model Context Protocol) ist der seit 2024 etablierte Standard, mit dem Sprachmodelle mit externen Tools reden. Für MT5 gibt es bereits drei produktionsreife MCP-Server – wir gehen gleich auf die Auswahl ein. Du kannst Claude entweder via Claude Desktop (interaktiv, perfekt für Markt-Briefings) oder via Anthropic-API aus deinem Python-Code (automatisch, perfekt für Live-Bot) ansprechen.

Architektur-Skizze:

┌─────────────────────┐
│  Claude API/Desktop │  ◄── Reasoning, Skip-Logik, JSON-Antwort
└──────────┬──────────┘
           │ MCP (Tool-Calls)
┌──────────▼──────────┐
│  Python-Bridge      │  ◄── deine Logik, Risk-Wrapper
│  - get_market_ctx   │
│  - ask_claude       │
│  - place_order      │
└──────────┬──────────┘
           │ MetaTrader5-lib
┌──────────▼──────────┐
│  MT5-Terminal       │  ◄── Broker-Verbindung, Orders, Charts
└──────────┬──────────┘
           │ TCP/Broker-API
┌──────────▼──────────┐
│  Broker (IC Markets,│
│  Pepperstone, FTMO) │
└─────────────────────┘

Die wichtige konzeptuelle Klarstellung: MT5 ersetzt keinen Broker, sondern ist nur die Plattform, mit der du den Broker ansprichst. Dein Account, dein Spread, deine Slippage, deine Margin – alles kommt vom Broker. MT5 ist der Adapter.

MCP-Server-Auswahl: drei sinnvolle Optionen

Im Mai 2026 gibt es drei aktiv gepflegte MCP-Server für MetaTrader 5. Wir haben alle drei in der Praxis getestet, hier die ehrliche Bewertung.

ariadng/metatrader-mcp-server ist die populärste Wahl (PyPI: metatrader-mcp-server). Saubere Tool-Anzahl (~25 Tools für Account, Positionen, Orders, Historie), gute Doku, sauber gepflegtes Repo. Claude kann hier direkt aus der Desktop-App "Zeig mir mein Equity", "Schließe alle XAUUSD-Positionen", "Wie war meine R-Performance letzten Monat" interpretieren. Default-Empfehlung für die meisten Setups.

Qoyyuum/mcp-metatrader5-server ist die Variante mit dem expliziten Trading-Terminal-Assistant-Skill drin – wenn du den vollen 32-Tool-Umfang willst (inklusive History-Analyse und tieferer Markt-Resources), nimm den. Etwas mehr Boilerplate beim Setup, dafür mehr Reichweite.

Cloudmeru/MetaTrader-5-MCP-Server ist die schlankste Option, fokussiert auf reine Order-Execution. Wenn du Claude nur als Reasoning-Layer brauchst und alles drumherum selbst schreiben willst, der richtige Server.

Für 90% aller Setups ist ariadng/metatrader-mcp-server die richtige Wahl. Was du wissen musst: MCP hat von Haus aus keine Authentifizierung. Wenn du den Server irgendwo öffentlich erreichbar machst, brauchst du einen Reverse-Proxy mit Auth, eine Firewall-IP-Whitelist oder einen SSH-Tunnel. Auf einem privaten VPS hinter Firewall ist das unproblematisch, aber bitte nicht den MCP-Port via 0.0.0.0 ins Internet öffnen.

Setup in 30 Minuten

Schritt für Schritt, alles auf Windows (oder Linux mit Wine):

# 1. MetaTrader5 Python-Library
pip install MetaTrader5 pandas anthropic

# 2. MCP-Server (für Claude-Desktop-Integration)
pip install metatrader-mcp-server

Voraussetzung: MT5-Terminal ist installiert, eingeloggt bei deinem Broker (oder Demo-Account) und unter "Optionen → Expert Advisors" ist AutoTrading erlaubt angeklickt. Ohne das schickt order_send keine Order ab, sondern nur eine Fehler-Response mit retcode=10027 ("AutoTrading disabled by client") – Klassiker, den jeder einmal in seinem Leben übersieht.

Test-Skript, mit dem du in 60 Sekunden prüfst, ob alles steht:

import MetaTrader5 as mt5
from datetime import datetime, timedelta

if not mt5.initialize():
    print("Init fehlgeschlagen:", mt5.last_error())
    quit()

info = mt5.account_info()
print(f"Account: {info.login} | Equity: {info.equity:.2f} {info.currency}")

# Letzte 20 H1-Kerzen für Gold ziehen
rates = mt5.copy_rates_from("XAUUSD", mt5.TIMEFRAME_H1,
                            datetime.now(), 20)
for r in rates[-5:]:
    t = datetime.fromtimestamp(r['time']).strftime("%Y-%m-%d %H:%M")
    print(f"{t} O:{r['open']:.2f} H:{r['high']:.2f} "
          f"L:{r['low']:.2f} C:{r['close']:.2f}")

mt5.shutdown()

Wenn das Skript Account-Daten und Kerzen ausspuckt, ist die Bridge fertig. Wenn initialize() False zurückgibt, ist meistens entweder das Terminal nicht offen oder du sitzt unter einer anderen User-Session als der MT5-Prozess. mt5.initialize(path="C:/Pfad/zu/terminal64.exe") löst das in 99% der Fälle.

Für die Claude-Desktop-Integration trägst du den MCP-Server in ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) bzw. %APPDATA%\Claude\claude_desktop_config.json (Windows) ein:

{
  "mcpServers": {
    "metatrader": {
      "command": "metatrader-mcp-server",
      "args": ["--login", "12345678",
               "--password", "DEIN_PASSWORD",
               "--server", "ICMarkets-Demo"]
    }
  }
}

Nach Claude-Desktop-Neustart kannst du im Chat "Zeig mir mein Account-Balance" eintippen – und Claude führt den Tool-Call aus.

Order senden – der Code, den jeder Tutorial-Autor falsch erklärt

Der größte Stolperstein bei MT5-Python ist die order_send-Request-Struktur. Sie sieht harmlos aus, hat aber sieben Eigenheiten, die dir den Tag kosten können wenn du sie nicht kennst.

Voll funktionierender Buy-Order-Code mit Stop-Loss und Take-Profit:

import MetaTrader5 as mt5

def buy_with_sl_tp(symbol, lot_size, sl_pips, tp_pips, magic=100001):
    if not mt5.symbol_select(symbol, True):
        return {"ok": False, "err": f"Symbol {symbol} nicht aktiviert"}

    tick = mt5.symbol_info_tick(symbol)
    info = mt5.symbol_info(symbol)
    if tick is None or info is None:
        return {"ok": False, "err": "Tick/Info nicht verfügbar"}

    price = tick.ask
    # Pip-Wert sauber berechnen (Forex 5-digit vs Gold)
    point = info.point
    digits = info.digits
    pip_size = point * (10 if digits in (3, 5) else 1)

    sl = round(price - sl_pips * pip_size, digits)
    tp = round(price + tp_pips * pip_size, digits)

    request = {
        "action":       mt5.TRADE_ACTION_DEAL,
        "symbol":       symbol,
        "volume":       lot_size,
        "type":         mt5.ORDER_TYPE_BUY,
        "price":        price,
        "sl":           sl,
        "tp":           tp,
        "deviation":    20,           # max Slippage in Points
        "magic":        magic,        # eindeutige Bot-ID
        "comment":      "claude-bot",
        "type_time":    mt5.ORDER_TIME_GTC,
        "type_filling": info.filling_mode,
    }

    result = mt5.order_send(request)
    if result.retcode != mt5.TRADE_RETCODE_DONE:
        return {"ok": False, "err": f"retcode={result.retcode}",
                "comment": result.comment}
    return {"ok": True, "ticket": result.order, "price": result.price}

Was hier schmerzhaft erkämpft ist:

Erstens, symbol_select vor Allem. Wenn das Symbol nicht im Market-Watch aktiv ist, kriegst du None zurück und keinen sinnvollen Fehler. Klassiker bei DEMO-Accounts mit nur EURUSD aktiv.

Zweitens, Pip-Größe ist nicht gleich Point-Größe. Bei 5-stelligen Forex-Quotes (EURUSD = 1.08573) ist point = 0.00001, aber ein Pip ist 0.0001 – Faktor 10. Bei Gold (XAUUSD = 2340.45) ist point = 0.01 und ein "Pip" verhält sich wie ein einzelner Cent. Wer das ignoriert, setzt Stops mit 10× zu engen Abstand und wird sofort ausgestoppt.

Drittens, type_filling muss zum Broker passen. Manche Broker akzeptieren nur ORDER_FILLING_IOC, andere ORDER_FILLING_FOK. info.filling_mode gibt dir das richtige automatisch zurück – nicht hardcoden.

Viertens, magic number. Eindeutige Bot-ID pro Strategie. Wenn du später Filter brauchst ("schließe alle meine Bot-Trades, aber lass die manuellen offen"), unverzichtbar.

Die übrigen drei Stolperfallen (Margin-Check, Spread bei News, Server-Time-Drift) hängen pro Broker zusammen – die haben wir im AI Trading Guide mit symbol-spezifischen Beispielen durchgekaut, inklusive der fünf häufigsten order_send-Retcodes und was sie wirklich bedeuten.

Lead-Magnet-Hinweis

Hol dir das kostenlose AI-Trading-Starter-Bundle: 5 fertige Claude-Trading-Prompts plus eine Cheat-Sheet mit allen MT5-retcode-Werten, ihrer Bedeutung und der jeweiligen Lösung.

→ Kostenlose AI-Trading-Prompts holen

Claude zur Entscheidung einbinden

Der konkrete Loop für einen halbautomatischen Bot mit MT5 + Claude:

import json, anthropic, MetaTrader5 as mt5
from datetime import datetime

client = anthropic.Anthropic()  # liest ANTHROPIC_API_KEY aus env

SYSTEM_PROMPT = """
Du bist ein Risk-Coach für einen XAUUSD-Trader.
Antworte ausschließlich als JSON nach diesem Schema:
{"action": "BUY"|"SELL"|"SKIP",
 "confidence": 0.0-1.0,
 "reason": "kurzer Satz",
 "sl_pips": int, "tp_pips": int}

Skip-Regeln:
- Wenn ATR_14 < median(ATR_14, 100): SKIP (zu wenig Vola)
- Wenn nächste 60 min FOMC/NFP-Event: SKIP
- Wenn confidence < 0.6: SKIP
- Bei Setup: SL 1.5×ATR, TP 3.0×ATR (1:2 RR)
"""

def get_context(symbol="XAUUSD"):
    rates = mt5.copy_rates_from_pos(symbol, mt5.TIMEFRAME_H1, 0, 60)
    info  = mt5.account_info()
    return {
        "symbol": symbol,
        "candles_h1": [{"t": int(r["time"]),
                        "o": r["open"], "h": r["high"],
                        "l": r["low"],  "c": r["close"]} for r in rates],
        "equity": info.equity,
        "balance": info.balance,
        "open_positions": len(mt5.positions_get() or []),
        "now_utc": datetime.utcnow().isoformat()
    }

def ask_claude(context):
    resp = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=400,
        system=SYSTEM_PROMPT,
        messages=[{"role": "user",
                   "content": json.dumps(context)}]
    )
    return json.loads(resp.content[0].text)

plan = ask_claude(get_context())
if plan["action"] in ("BUY", "SELL") and plan["confidence"] >= 0.6:
    # → risk-wrapper → order_send (siehe oben)
    print("Trade-Plan:", plan)
else:
    print("Skip:", plan["reason"])

Was an dem Setup wichtig ist und meistens schlecht gemacht wird: der System-Prompt enthält explizite Skip-Regeln. Ohne die wird Claude bei jedem Lauf eine Meinung haben, auch wenn die Voraussetzungen nicht stimmen. Mit harten Skip-Triggern (ATR, Event-Kalender, Konfidenz) reduziert sich die Trade-Frequenz auf realistische Werte und die Win-Rate steigt deutlich – wir reden über 15–25 Trades pro Monat statt 80+.

Den vollständigen System-Prompt, getestet auf XAUUSD und EURUSD inklusive Event-Kalender-Anbindung und JSON-Schema-Validierung, plus die korrekt verdrahtete risk-wrapper-Schicht haben wir im AI Trading Guide ausgearbeitet.

FTMO-Compliance: was dein Bot zwingend tun muss

FTMO erlaubt EAs und Python-Bots ausdrücklich, aber die Challenge-Regeln gelten unverändert: 5% Daily-Drawdown, 10% Total-Drawdown, beides hart. Ein Verstoß und der Account ist weg. Was dein Code zwingend leisten muss:

Tagesverlust-Tracking persistent. Wenn dein Python-Prozess um 14:00 crasht und um 14:05 neu startet, muss er wissen, dass er heute schon 3.2% verloren hat. Naive Lösung: jede Minute den Daily-Loss in eine JSON-Datei schreiben. Bessere Lösung: bei jedem Strategie-Tick aus mt5.history_deals_get(today_start, datetime.now()) neu berechnen – nutzt Live-Daten vom Broker, keine eigene Buchhaltung.

Equity-Drift-Check vor jedem order_send. Bevor du eine neue Position aufmachst, prüfst du: liegt mein aktueller Equity unter start_equity * 0.95 (Daily-Limit) oder start_equity * 0.90 (Total-Limit)? Wenn ja, kein neuer Trade. Sehr wichtig: Equity, nicht Balance. FTMO misst Drawdown auf Equity-Basis – wenn du eine offene Position mit -3% Floating-PnL hast, gilt das.

Position-Sizing nach Risk-per-Trade, nicht nach Lot. "Ich trade immer 0.1 Lot" funktioniert nur bei konstantem Stop-Abstand. Sauber: lot_size = (equity * risk_pct) / (sl_pips * pip_value_per_lot). Pro Symbol unterschiedlich, der pip-value steht in mt5.symbol_info_tick(symbol).bid × Kontrakt-Größe.

Cool-Down nach Verlust-Serie. Drei Verlust-Trades in Folge → mindestens 4 Stunden Pause. Vier in Folge → Stopp für den Tag. Das ist nicht psychologisches Theater, das ist mathematisch sinnvoll: nach einer Verlust-Serie ist die Wahrscheinlichkeit, dass die Marktphase deiner Strategie nicht passt, signifikant erhöht.

Für die komplette FTMO-konforme Implementation, inklusive XAUUSD-Scalping-Beispiel mit echten Backtest-Zahlen, siehe XAUUSD Scalping mit AI: Setup und Backtest – dort gehen wir den vollständigen Tag-für-Tag-Plan für eine FTMO-Challenge durch.

Den kompletten MT5-Stack haben wir aufgeschrieben

81 Seiten, kompletter Code, sechs Backtests, FTMO-konformer Risk-Wrapper, Live-Trading-Setup. Alles was du brauchst, um den ersten ernsthaften Bot live zu stellen.

→ AI Trading Guide ansehen

Häufige Fragen (FAQ)

Läuft die MetaTrader5-Python-Library auch auf Mac oder Linux? Offiziell nur Windows. Auf Linux funktioniert sie über Wine + Windows-Python (es gibt brauchbare Tutorials dafür), auf macOS empfehle ich Parallels Desktop oder einen Windows-VPS – das ist praktisch sowieso besser, weil dein Bot 24/7 laufen soll. Native Mac-Unterstützung wird laut MetaQuotes-Forum seit 2022 immer wieder versprochen, ist aber bis Mai 2026 nicht da.

Brauche ich einen Live-Account oder reicht Demo? Für Entwicklung und Test komplett Demo. Jeder seriöse Broker (IC Markets, Pepperstone, ICmarkets, Vantage, Roboforex) gibt dir einen MT5-Demo-Account in unter 5 Minuten. Wichtig: Demo-Spreads sind oft besser als Live-Spreads – wenn deine Strategie auf engen Spreads basiert, validiere immer auf einem Live-Mini-Account, bevor du das echte Geld einsetzt.

Was kostet der Anthropic-API-Zugriff für einen MT5-Bot realistisch? Bei einem moderaten Setup (1 Strategie, ein Symbol, alle 5 Minuten ein Check) etwa 200–400 Claude-Calls pro Tag. Mit Sonnet 4.6 (mittel-billig) sind das rund 0.20–0.40 USD pro Tag, also 6–12 USD pro Monat. Bei Multi-Symbol-Bots (5+ Pairs) entsprechend mehr. Strategien, die nur an klar definierten Sessions aktiv sind (London-Open, NY-Open) sparen massiv.

Kann ich Claude direkt im MT5-Terminal benutzen, ohne Python? Nein, dafür gibt es aktuell keine native Integration. Der Umweg über Python ist Pflicht. Was geht: Claude im Browser oder Desktop benutzen, dort dein Markt-Briefing schreiben lassen, und im MT5 dann manuell traden. Für vollautomatische Setups brauchst du die Python-Bridge.

Welche MT5-Broker funktionieren am besten für Python-Bots? IC Markets (Raw Spread), Pepperstone (Razor), Tickmill (Pro) und FTMO selbst sind in Europa die häufigste Wahl unter Python-Bot-Tradern – niedrige Spreads, hohe Order-Acceptance-Rate, vernünftige Server-Latenz nach Frankfurt/Amsterdam (5–30 ms). Vermeide Broker mit "Market Maker"-Modell für Bot-Trading; die rejecten gerne, wenn dein System konsistent profitabel wird.

Ist die ariadng-MCP-Library FTMO-konform? Die Library selbst ist neutral – sie ist nur eine Bridge. FTMO-Konformität entsteht durch deinen Risk-Wrapper und deine Skip-Logik. Wenn du den oben skizzierten Equity-Check und Daily-Loss-Tracker einbaust, ist nichts an MCP per se FTMO-problematisch. FTMO verbietet explizit nur HFT, Latency-Arbitrage, Tick-Scalping unter 30 Sekunden und reverse-engineered Demo-Spread-Exploitation.

TL;DR

Drei Schichten: MT5-Terminal (Broker-Verbindung), Python-Bridge (deine Logik), Claude über MCP (Reasoning). Setup in 30 Minuten mit pip install MetaTrader5 metatrader-mcp-server anthropic plus Terminal mit AutoTrading-Flag. order_send hat sieben Stolperfallen – Pip-Größe, filling_mode, magic, symbol_select, Margin-Check, Spread bei News, Server-Time. FTMO-Compliance erfordert persistentes Daily-Loss-Tracking, Equity-Drift-Check vor jeder Order, Position-Sizing nach Risk-per-Trade und Cool-Down nach Verlust-Serien. Der MCP-Server hat keine Auth – nicht öffentlich ins Internet stellen. Ab hier ist es kein Plattform-Problem mehr, sondern ein Edge-Problem.