CommunityBildgithub.com

trader-broker

Executes Orders. Sendet genehmigte Aufträge an Ihren Broker, standardmäßig im Paper Trading, niemals ohne Ihr Ja. Zeigt jeden Auftrag als einfaches Ticket (eine Klammer zeigt Stop-Loss, Take-Profit und den maximalen Verlust beim Stop) sowie das exakte JSON für Alpacas place_stock_order, zeichnet Ihr Ja wörtlich auf, dann erscheint Claudes eigener Erlauben einmal / Ablehnen-Dialog erneut. Baut das Verkaufsticket, das einen Tagestrade bis zur spätesten Stunde glattstellt, zeichnet Ausführungen auf und protokolliert den maximalen Verlust jedes Trades, sodass trader-risk das Tageslimit einhalten kann. Deckt die Einrichtung von Alpacas offiziellem MCP-Server in Claude Desktop (standardmäßig Papier, Schlüssel in Umgebungsvariablen, niemals im Chat), den Interactive Brokers-Konnektor und die Einstellung von Order-Tools auf „Benötigt Zustimmung“ ab. Verwenden Sie es, wenn der Benutzer sagt: „platzieren Sie die Order“, „kaufen Sie es“, „ausführen“, „an meinen Broker senden“, „meine Position schließen“, „glattstellen“, „holen Sie mich raus“, „Alpaca verbinden“, „Paper Trading einrichten“ oder nach /trader-risk erfolgreich.

Was ist trader-broker?

trader-broker ist der Order-Executor in einem Set von KI-Agenten-Fähigkeiten für Claude Desktop und Claude Code. Er stellt sicher, dass jede Order erst nach drei unabhängigen Prüfungen den Markt erreicht: trader-risk muss die Order für heute freigegeben haben, der Benutzer muss im Chat ein explizites Ja für genau diese Order eingegeben haben, und der Benutzer muss auf Claudes Erlaubniskarte „Erlauben einmal“ klicken, da das entsprechende Order-Tool auf „Benötigt Zustimmung“ eingestellt ist. Die Fähigkeit verwendet ein Python-Skript `ticket.py`, das Tickets rendert, Ja-Antworten validiert, Glattstellungs-Orders erstellt und ein Log in `trader/state/broker.json` führt. Sie unterstützt die Einrichtung von Alpacas offiziellem MCP-Server (standardmäßig Paper Trading, API-Schlüssel nur in Umgebungsvariablen) und den Interactive Brokers-Konnektor. Eine detaillierte Schritt-für-Schritt-Anleitung führt den Benutzer durch die Ersteinrichtung, die Konfiguration von Tool-Berechtigungen, die Order-Erstellung, die Ausführung und die tägliche Glattstellung. Sicherheit hat höchste Priorität: Keine automatischen oder hintergrundgesteuerten Orders, keine Optionen, kein Margin, keine Short-Positionen ohne explizite Erlaubnis und API-Schlüssel werden niemals im Chat preisgegeben.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/arv-fazriansyah/antigrafity-trading-skill/tree/HEAD/skills/trader-broker

Installed? Explore more Bild skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht trader-broker?

Der Order-Executor ist die einzige Fähigkeit in diesem Paket, die zu einer echten Order führen kann, daher ist sie die strengste. Eine Order erreicht den Markt erst nach drei separaten Toren, jedes Mal, für jede Order:

  1. trader-risk hat genau diese Order heute bestanden (durch Fingerabdruck abgeglichen).
  2. Der Benutzer hat im Chat ein explizites Ja für diese eine Order eingegeben.
  3. Der Benutzer hat auf Erlauben einmal auf Claudes eigener Berechtigungskarte geklickt, die erscheint, weil das Order-Tool auf „Benötigt Zustimmung" gesetzt ist.

Zwei Jas vom Benutzer, ein BESTANDEN von den Regeln. Kein Ja, keine Order.

${CLAUDE_SKILL_DIR} unten ist der Ordner dieser Fähigkeit (wo diese SKILL.md lebt).

python3 "${CLAUDE_SKILL_DIR}/ticket.py" show                     # jedes Ticket, READY oder nicht
python3 "${CLAUDE_SKILL_DIR}/ticket.py" approve --index 1 --reply "ja"
python3 "${CLAUDE_SKILL_DIR}/ticket.py" result --index 1 --status placed --broker-id ID --filled-qty 8 --filled-price 364.20
python3 "${CLAUDE_SKILL_DIR}/ticket.py" fill --symbol TSLA --side sell --qty 8 --price 370.04
python3 "${CLAUDE_SKILL_DIR}/ticket.py" flatten --symbol TSLA --qty 8
python3 "${CLAUDE_SKILL_DIR}/ticket.py" log

ticket.py spricht niemals mit einem Broker. Es rendert Tickets, prüft, ob eine Antwort ein echtes Ja für diese Order ist, erstellt das Glattstellungs-Ticket und führt das Log in trader/state/broker.json. Mit --now "2026-10-19 10:15" wird die Uhr festgelegt (New Yorker Zeit).

Was es liest und schreibt

DateiInhalt
trader/orders.jsondie vorgeschlagenen Orders (trader-budget schreibt es; flatten ersetzt es)
trader/state/risk.jsontrader-risk's Entscheidungen; nur ein BESTANDEN von heute ist READY
trader/state/broker.jsonjedes Ja, Nein, platziert, fehlgeschlagen und ausgeführt, mit dem max. Verlust jedes Eintrags
trader/portfolio.jsonGeld und Aktien, aktualisiert durch fill und durch result --filled-qty
trader/plan.jsondie späteste Glattstellungszeit für flatten

Setup A: Alpaca (offizieller MCP-Server, Claude Desktop)

Alpacas eigener Server ist auf github.com/alpacahq/alpaca-mcp-server (MIT). Er läuft auf dem Rechner des Benutzers in Claude Desktop. Er befindet sich nicht in Claudes Konnektor-Verzeichnis. Er handelt auf einem Papier-Konto, sofern nicht anders angegeben. Überprüft gegen den Quellcode vom 20.10.2026 (Version 2.4.0).

  1. Der Benutzer erstellt ein Alpaca-Konto und generiert Paper Trading-API-Schlüssel im Alpaca-Dashboard. Papier-Schlüssel sind getrennt von Live-Schlüsseln.
  2. Der Benutzer installiert uv (es bietet uvx), von docs.astral.sh/uv.
  3. In Claude Desktop: Einstellungen > Entwickler > Konfiguration bearbeiten. Dadurch wird claude_desktop_config.json geöffnet (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\). Der Benutzer fügt diesen Block hinzu (auch in claude_desktop_config.example.json hier) und gibt seine eigenen Schlüssel in die Datei ein:
{
  "mcpServers": {
    "alpaca": {
      "command": "uvx",
      "args": ["alpaca-mcp-server"],
      "env": {
        "ALPACA_API_KEY": "fügen Sie hier Ihren Papierschlüssel ein, nur in dieser Datei",
        "ALPACA_SECRET_KEY": "fügen Sie hier Ihr Papiergeheimnis ein, nur in dieser Datei",
        "ALPACA_PAPER_TRADE": "true",
        "ALPACA_TOOLSETS": "account,trading,stock-data"
      }
    }
  }
}

Der env-Block übergibt die Schlüssel als Umgebungsvariablen an den Server. Schlüssel gelangen niemals in den Chat. Fragen Sie niemals danach, lesen Sie diese Datei niemals zurück ins Gespräch, und falls der Benutzer trotzdem einen Schlüssel einfügt, sagen Sie ihm, er solle diese Nachricht löschen und im Alpaca-Dashboard neue Schlüssel erstellen. ALPACA_PAPER_TRADE ist standardmäßig bereits true; das Hinschreiben macht es sichtbar. ALPACA_TOOLSETS ist optional und blendet die Werkzeuge aus, die der Benutzer nicht benötigt. 4. Claude Desktop neu starten. 5. Legen Sie die Tool-Berechtigungen fest. Anpassen > Konnektoren (Einstellungen > Konnektoren in älteren Versionen), öffnen Sie alpaca, und wählen Sie für jedes Tool Immer erlauben, Benötigt Zustimmung oder Blockiert: - place_stock_order: Benötigt Zustimmung. Niemals Immer erlauben. - jedes andere Tool, das etwas platziert, ändert, storniert oder schließt (cancel_order_by_id, replace_order_by_id, close_position, update_account_config): Benötigt Zustimmung. - place_option_order, place_crypto_order, close_all_positions, cancel_all_orders, exercise_options_position, do_not_exercise_options_position: Blockiert, es sei denn der Benutzer hat einen Grund und sagt dies. - schreibgeschützte Tools (get_account_info, get_all_positions, get_open_position, get_orders, get_clock, get_stock_snapshot, get_stock_latest_quote): Immer erlauben ist in Ordnung. 6. Prüfen Sie es: Bitten Sie Claude um die Alpaca-Kontoinformationen (schreibgeschützt) und bestätigen Sie im Alpaca-Dashboard, dass es sich um das Papierkonto handelt.

Setzen Sie in Claude Code (anstelle von Claude Desktop) das Order-Tool in .claude/settings.json auf ask: "permissions": {"ask": ["mcp__alpaca__place_stock_order"]}, und setzen Sie niemals ein Order-Tool in allow.

Bracket-Orders bei Alpaca. place_stock_order akzeptiert take_profit_limit_price und stop_loss_stop_price (und optional stop_loss_limit_price). Wenn eines davon vorhanden ist, setzt der Server order_class selbsttätig auf "bracket"; trader-budget schreibt es trotzdem, damit das Ticket es anzeigt. Ein Bracket funktioniert nur mit ganzen Aktien, mit time_in_force day oder gtc. Nachdem der Einstieg gefüllt wurde, warten der Stop-Loss und der Take-Profit als zwei Orders, die sich gegenseitig aufheben. Sie sind ebenfalls Tagesorders, also enden sie bei Börsenschluss: ein weiterer Grund, bis dahin glatt zu sein.

Setup B: Interactive Brokers (Konnektor in Claudes Verzeichnis)

Interactive Brokers veröffentlicht einen verifizierten Konnektor: claude.ai/directory/interactive-brokers (Konnektor-URL https://api.ibkr.com/v1/api/mcp). Fügen Sie ihn über Anpassen > Konnektoren > Konnektoren durchsuchen hinzu und melden Sie sich dort bei IBKR an, nicht im Chat. Die Auflistung besagt, dass Claude Handelsanweisungen entwerfen kann, die an das IBKR-Konto des Benutzers zur Überprüfung und Genehmigung gesendet werden, und dass Claude niemals Orders direkt an den Markt übermittelt. Bei IBKR erfolgt das endgültige Ja also ebenfalls in IBKR. Setzen Sie "broker": "ibkr" in trader/config.json. Setzen Sie auch seine Tools, die Orders entwerfen, auf Benötigt Zustimmung.

Schritte: Der Einstieg

  1. ticket.py show. Nur READY-Tickets werden dem Benutzer angezeigt. Ein Ticket, das NICHT READY oder BLOCKED ist, geht zurück zu /trader-risk.
  2. Zeigen Sie EIN Ticket und fragen Sie: "Diese Order platzieren? Antworten Sie mit ja oder nein." Eine Order pro Frage. Bieten Sie niemals "ja zu allen" an.
  3. Führen Sie ticket.py approve --index N --reply "<wortwörtliche Antwort des Benutzers>" aus. Wenn "Not recorded" ausgegeben wird, war die Antwort kein explizites Ja für diese Order (z.B. "sicher", "ja zu allen" oder ein Ja, das eine andere Aktie oder Menge nennt). Fragen Sie erneut. Verwenden Sie niemals selbst eine Antwort in ein Ja um.
  4. Erst nach "Recorded your yes" rufen Sie place_stock_order mit genau dem JSON auf, das das Ticket ausgegeben hat. Claudes Karte erscheint: Erlauben einmal oder Ablehnen.
  5. Protokollieren Sie, was passiert ist: ticket.py result --index N --status placed --broker-id <id> --filled-qty Q --filled-price P (die Ausführung aus der Antwort oder get_open_position), oder --status denied, oder --status failed mit --note. Eine fehlgeschlagene Order wird nicht ohne erneute Prüfung und neues Ja wiederholt. Das Log enthält den max. Verlust des Einstiegs für trader-risk's Tageslimit.

Schritte: Während die Position offen ist, und glatt bis Börsenschluss

  • trader-alerts überwacht den Stop, das Ziel und die späteste Glattstellungszeit (alerts.py add --from-plan). Die eigenen Orders des Brackets kümmern sich um das Stoppen.
  • Wenn der Stop-Loss oder der Take-Profit gefüllt wird, protokollieren Sie es: ticket.py fill --symbol TSLA --side sell --qty 8 --price 358.32.
  • Bis flat_by (15:55 New York) wird alles noch Offene glattgestellt:
    1. Fragen Sie Alpaca, wie viele Aktien gehalten werden: get_open_position (schreibgeschützt).
    2. ticket.py flatten --symbol TSLA --qty 8 schreibt einen Marktverkauf für diese Aktien in trader/orders.json.
    3. /trader-risk. Ein Verkauf, der nur schließt, was der Benutzer hält, wird niemals durch die Tageslimits oder das Einstiegsfenster blockiert.
    4. ticket.py show, dann das Ja des Benutzers für diese eine Order, wie oben.
    5. Der Stop-Loss und der Take-Profit des Brackets halten diese Aktien noch, daher lehnt Alpaca einen neuen Verkauf ab, bis sie storniert sind: get_orders (Status open, nested true) zeigt sie an; cancel_order_by_id storniert jede einzelne (Benötigt Zustimmung). Dann place_stock_order mit dem Ticket, dann result.

Beispiel: Der Spielfilm

ORDER 1 von 1, PAPER-Konto, Alpaca
  KAUFEN 8 TSLA, Markt, gültig für heute
  Stop-Loss 358.32
  Take-Profit 370.04
  max. Verlust etwa 46,88 $, wenn der Stop bei 358,32 gefüllt wird (kann in einem schnellen Markt schlechter sein)
  Begründung: Opening-Range-Breakout bei TSLA: 8 Aktien, begrenzt durch Ihr max. Verlust von 50 $ pro Trade (8 x 5,86 $ = 46,88 $ beim Stop)
  READY: trader-risk BESTANDEN, warte auf Ihr Ja
  Claude wird place_stock_order mit genau diesem aufrufen:
    {"symbol": "TSLA", "side": "buy", "qty": "8", "type": "market", "time_in_force": "day",
     "order_class": "bracket", "take_profit_limit_price": "370.04", "stop_loss_stop_price": "358.32"}

Der Benutzer antwortet "ja". Claude zeichnet es auf, ruft place_stock_order auf, und die Karte zeigt „Claude möchte Place stock order verwenden" mit diesem JSON und zwei Knöpfen: Erlauben einmal, Ablehnen. „Erlauben einmal" sendet es an das Papierkonto. Die why und der Plan bleiben in der Datei; sie werden niemals gesendet.

Was es niemals tut

  • Platziert niemals eine Order ohne alle drei Tore und niemals zwei Orders mit einem Ja.
  • Platziert niemals Orders aus einer geplanten oder Hintergrundaufgabe: niemand ist da, um Ja zu sagen.
  • Fragt niemals nach, liest niemals, speichert niemals oder wiederholt niemals API-Schlüssel oder Passwörter.
  • Schaltet niemals ALPACA_PAPER_TRADE oder "paper" auf live um. Das macht der Benutzer selbst.
  • Ruft niemals close_all_positions, cancel_all_orders oder Options- bzw. Crypto-Order-Tools eigenständig auf.
  • Verspricht niemals einen Ausführungspreis: ein Marktauftrag und ein Stop werden zu dem Preis ausgeführt, den der Markt hergibt.

Sicherheit

  • Bildung und Werkzeuge, keine Finanzberatung. Ein BESTANDEN ist eine Regelprüfung, keine Empfehlung.
  • Paper Trading standardmäßig ("paper": true). Live zu gehen ist die eigene Entscheidung des Benutzers, in seiner eigenen Konfiguration.
  • Nichts in diesem Paket platziert eine Order außer trader-broker, und zwar nur, wenn alle drei Bedingungen gelten: trader-risk hat genau diese Order heute bestanden, der Benutzer hat im Chat ein explizites Ja für diese eine Order eingegeben, und der Benutzer hat auf Erlauben einmal auf Claudes eigener Karte geklickt, weil das Order-Tool auf „Benötigt Zustimmung" gesetzt ist (Anpassen > Konnektoren > Tool-Berechtigungen). Setzen Sie ein Order-Tool niemals auf „Immer erlauben".
  • Keine Optionen, kein Margin, keine Leerverkäufe und kein Hebel, es sei denn, die Konfiguration erlaubt es und der Benutzer bestätigt.
  • Broker-Schlüssel leben in Umgebungsvariablen oder der Claude Desktop-Konfiguration, niemals im Chat.

Verwandte Skills