Erstellen Sie einen FX-Stack aus zwei Agenten:
Schriftsteller: FXMacroData-Team
Veröffentlicht: 21. Mai 2026
Einfach aus einem Grund scheitern die Single-Agent-Forex-Bots: dasselbe Modell, das Ideen erzeugt, darf sie auch genehmigen. US-Lohnkräfte außerhalb der Landwirtschaft, kann ein Argumentationsfehler direkt in Positionsrisiko springen.
Dieser Leitfaden zeigt eine sicherere Architektur: Aufteilung der Verantwortlichkeiten zwischen zwei Agenten. Der erste Agent führt Marktforschung durch und schlägt Setups vor. Der zweite Agent ist ein strenger Torwächter, der nur Vorschläge genehmigen, vergrößern oder ablehnen kann, die auf harten Risiko-Regeln basieren.
Am Ende haben Sie einen praktischen Arbeitsfluss für zwei Agenten. EUR/USD Und ... GBP/USD die sowohl die direkte REST-API-Integration als auch die MCP-basierte Werkzeugintegration unterstützt.
Voraussetzungen
- Python 3.10+ ist ein guter Ansatz.
- Ein FXMacroData API-Schlüssel von API-Management- Ich weiß .
- Ein LLM-Endpunkt für die Forschungs- und Torwächteragenten.
- Grundlegende Kenntnisse von JSON und HTTP-API.
Installieren von Abhängigkeiten:
pip install requests python-dotenv pydantic
Erstellen Sie eine .env Datei:
FXMD_API_KEY=your_fxmacrodata_key
RESEARCH_MODEL=claude-or-hermes
GATEKEEPER_MODEL=claude-or-hermes
MAX_RISK_PCT=0.50
Schritt 1: Festlegung der Aufgaben beider Mitarbeiter
Was zu tun ist: Schließ die Verantwortlichkeiten vor dem Schreiben von Code ein.
- Forschungsbeauftragter: Liest den Makro- + Marktkontext und schlägt Kandidatenvorstellungen vor.
- Ein Gate Keeper-Agent validiert nur Einschränkungen, er kann keine neuen Transaktionen erfinden, sondern nur genehmigen, ablehnen oder vergrößern.
Warum es wichtig ist: Diese Trennung verhindert, dass ein einzelnes Modell Risikokontrollen umgeht, wenn das Vertrauen hoch ist, aber die Beweise schwach sind.
Schritt 2: Strukturen aus dem Kontext mit direkten REST-Aufrufen ziehen
Was zu tun ist: Erhebt Releases und Spot-Daten von FXMacroData, damit der Recherche-Agent saubere Eingaben anstelle unstrukturierter Schlagzeilen erhält.
curl "https://fxmacrodata.com/api/v1/calendar/usd?api_key=YOUR_API_KEY"
curl "https://fxmacrodata.com/api/v1/announcements/eur/inflation?api_key=YOUR_API_KEY"
curl "https://fxmacrodata.com/api/v1/announcements/gbp/unemployment?api_key=YOUR_API_KEY"
curl "https://fxmacrodata.com/api/v1/forex?base=EUR"e=USD&api_key=YOUR_API_KEY"
Warum es wichtig ist: Konsistente, strukturierte Felder geben beiden Agenten die gleiche Wahrheitsquelle und machen die Validierung deterministisch.
Mindestzähler für Python:
import os
import requests
from datetime import datetime, timezone
API = "https://fxmacrodata.com/api/v1"
KEY = os.environ["FXMD_API_KEY"]
def fxmd_get(path, **params):
r = requests.get(
f"{API}{path}",
params={"api_key": KEY, **params},
timeout=25,
)
r.raise_for_status()
return r.json()
def build_market_context():
return {
"asof_utc": datetime.now(timezone.utc).isoformat(),
"calendar_usd": fxmd_get("/calendar/usd").get("data", [])[:8],
"calendar_eur": fxmd_get("/calendar/eur").get("data", [])[:8],
"eur_inflation": fxmd_get("/announcements/eur/inflation").get("data", [])[-1:],
"gbp_unemployment": fxmd_get("/announcements/gbp/unemployment").get("data", [])[-1:],
"eurusd": fxmd_get("/forex", base="EUR", quote="USD").get("data", [])[-48:],
"gbpusd": fxmd_get("/forex", base="GBP", quote="USD").get("data", [])[-48:],
}
Schritt 3: Mit dem Forschungsbeauftragten erstellen Sie Handelskandidaten
Was zu tun ist: Fragen Sie den Forschungsbeauftragten nur nach Kandidaten für den strukturierten Handel.
{
"pair": "EUR/USD",
"bias": "long|short|flat",
"thesis": "string",
"confidence": 0.0,
"entry_zone": "string",
"invalidation": "string",
"event_risks": ["string"]
}
Warum es wichtig ist: Ein festes Schema ermöglicht es dem Torwächter, Regeln für vorhersehbare Felder durchzusetzen, anstatt zu versuchen, freien Text zu analysieren.
Schritt 4: Durchsetzung von Hartrisiko-Regeln im Gatekeeper-Agent
Was zu tun ist: Jeder Kandidat durch einen zweiten Modell- oder Regel-Erst-Validierer mit strengen Grenzen.
Beispiel für die Politik:
- Höchstrisiko pro Handel: 0,50% des Eigenkapitals.
- Keine neuen Transaktionen innerhalb von 15 Minuten nach der Veröffentlichung der High-Impact-Releases aus dem Veröffentlichungskalender- Ich weiß .
- Zwingende Nichtigkeitsstufe.
- Ablehnen, wenn das Konfidenzwert < 0,60 beträgt.
Pydantische Schließung und Entscheidungsausgabe:
from pydantic import BaseModel, Field
class Candidate(BaseModel):
pair: str
bias: str
thesis: str
confidence: float = Field(ge=0.0, le=1.0)
entry_zone: str
invalidation: str
event_risks: list[str]
class GateDecision(BaseModel):
status: str # approve, resize, reject
approved_size_pct: float
reason: str
def gate(candidate: Candidate, max_risk_pct: float = 0.50) -> GateDecision:
if candidate.confidence < 0.60:
return GateDecision(status="reject", approved_size_pct=0.0, reason="Low confidence")
if not candidate.invalidation.strip():
return GateDecision(status="reject", approved_size_pct=0.0, reason="Missing invalidation")
proposed = 0.50 if candidate.confidence >= 0.75 else 0.30
size = min(proposed, max_risk_pct)
return GateDecision(status="approve", approved_size_pct=size, reason="Within policy")
Warum es wichtig ist: Selbst wenn der Forschungsagent eine schlechte Lesart hat, kann der Torwächter immer noch übergroße oder schwache Setups blockieren.
Schritt 5: Hinzufügen des Integrationsweges für MCP (tool-native Agent Workflow)
Was zu tun ist: FXMacroData über MCP freigeben, damit Agent-Frameworks Tools nativ aufrufen können, anstatt für jeden Bot einen benutzerdefinierten REST-Kleber zu erstellen.
Starten Sie einen Python-basierten MCP-Server über uvxDie Kommission
uvx fxmacrodata-mcp --transport http --server-url https://fxmacrodata.com/mcp
Beispiel für die Konfiguration des Clients:
{
"mcpServers": {
"fxmacrodata": {
"command": "uvx",
"args": [
"fxmacrodata-mcp",
"--transport",
"http",
"--server-url",
"https://fxmacrodata.com/mcp"
]
}
}
}
Beispiel für das MCP-Tool-Call-Schema für Ihren Forschungsagent:
{
"name": "get_fx_calendar_and_spot",
"description": "Get upcoming macro events and current spot context for selected pairs",
"input_schema": {
"type": "object",
"properties": {
"currencies": {
"type": "array",
"items": { "type": "string" }
},
"pairs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"base": { "type": "string" },
"quote": { "type": "string" }
},
"required": ["base", "quote"]
}
}
},
"required": ["currencies", "pairs"]
}
}
Beispiel für die Einrufung von Agenten (MCP-Pfad):
Research Agent:
"Using the fxmacrodata MCP tools, pull today's USD/EUR/GBP calendar and spot for EUR/USD and GBP/USD.
Return up to 3 candidate setups in strict JSON schema."
Gatekeeper Agent:
"Validate each candidate against risk policy v1. Reject anything violating confidence,
size, invalidation, or event-window constraints. Return approve/resize/reject with reason."
Warum es wichtig ist: MCP reduziert die Integrationsdrift, wenn der Stack wächst, insbesondere wenn mehrere Agenten oder Swap-Modellanbieter ausgeführt werden.
Schritt 6: Ausgänge an menschliche Überprüfung weiterleiten, dann API-Broker
Was zu tun ist: Die Entscheidung des Torwächters wird zuerst an Slack/Telegram gesendet.
Warum es wichtig ist: Dies erzeugt eine überprüfbare Schleife und schützt Sie bei Anforderungs- oder Modellwechseln.
[FX Two-Agent Candidate]
Pair: EUR/USD
Research Bias: Long
Gatekeeper: Approve
Approved Size: 0.30%
Reason: Confidence 0.71, invalidation present, no high-impact event in 15m window.
Was du gebaut hast
Sie haben jetzt eine Zwei-Agenten FX-Architektur, die Ideen-Generation von Risiko-Zulassung trennt, unterstützt direkte REST-Integration und unterstützt auch MCP-basierte Werkzeug-Orchestrierung durch uvxDies ist eine stärkere Grundlage als ein-Agent-Bots, weil Handelskandidaten vor der Ausführung ein unabhängiges Politiktor überleben müssen.
Nächster Schritt: Fügen Sie eine Schalt-Schalter-Schicht hinzu , die automatisch zwingt . reject Sie können auch session-bewusste Einschränkungen von hinzufügen. FX-Sitzungen und Positionierung Kontext von COT- Ich weiß .