Membangun dua agen FX tumpukan: Agen Penelitian + Eksekusi Penjaga Gerbang
Penulis: Tim FXMacroData
Diterbitkan: 21 Mei 2026
Robot FX agen tunggal gagal karena alasan sederhana: model yang sama yang menghasilkan ide juga diizinkan untuk menyetujuinya. US Non-Land Rental, satu kesalahan penalaran bisa langsung melompat ke risiko posisi.
Panduan ini menunjukkan arsitektur yang lebih aman: membagi tanggung jawab antara dua agen. Agen pertama melakukan riset pasar dan mengusulkan pengaturan. Agen kedua adalah penjaga gerbang yang ketat yang hanya dapat menyetujui, mengubah ukuran, atau menolak proposal berdasarkan aturan risiko keras.
Pada akhirnya, Anda akan memiliki alur kerja dua agen praktis untuk EUR/USD Dan GBP/USD yang mendukung integrasi langsung REST API dan integrasi alat berbasis MCP.
Persyaratan
- Python 3.10+.
- Kunci API FXMacroData dari Manajemen APIAku tidak tahu.
- Sebuah titik akhir LLM untuk agen penelitian dan penjaga gerbang.
- Keterampilan dasar dengan API JSON dan HTTP.
Menginstal ketergantungan:
pip install requests python-dotenv pydantic
Buatlah .env File:
FXMD_API_KEY=your_fxmacrodata_key
RESEARCH_MODEL=claude-or-hermes
GATEKEEPER_MODEL=claude-or-hermes
MAX_RISK_PCT=0.50
Langkah 1: Mendefinisikan peran yang ketat untuk kedua agen
Apa yang harus dilakukan: kunci tanggung jawab sebelum menulis kode.
- Agen penelitian: membaca konteks makro + pasar dan mengusulkan kandidat pengaturan.
- Agen penjaga gerbang: hanya memvalidasi kendala. Tidak dapat menciptakan perdagangan baru, hanya menyetujui / menolak / mengubah ukuran.
Mengapa itu penting: pemisahan ini mencegah satu model untuk menghindari kontrol risiko ketika kepercayaan tinggi tetapi bukti lemah.
Langkah 2: Mengambil konteks terstruktur dengan panggilan REST langsung
Apa yang harus dilakukan: mengambil rilis dan data spot dari FXMacroData sehingga agen penelitian mendapatkan masukan bersih bukan judul tidak terstruktur.
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"
Mengapa itu penting: medan yang konsisten dan terstruktur memberikan kedua agen sumber kebenaran yang sama dan membuat validasi deterministik.
Kolektor Python minimal:
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:],
}
Langkah 3: Membuat calon perdagangan dengan agen penelitian
Apa yang harus dilakukan: hanya meminta agen penelitian untuk kandidat perdagangan terstruktur. jangan biarkan ia mengirim instruksi siap pelaksanaan.
{
"pair": "EUR/USD",
"bias": "long|short|flat",
"thesis": "string",
"confidence": 0.0,
"entry_zone": "string",
"invalidation": "string",
"event_risks": ["string"]
}
Mengapa itu penting: skema tetap memungkinkan penjaga gerbang untuk menegakkan aturan pada bidang yang dapat diprediksi alih-alih mencoba menganalisis teks bentuk bebas.
Langkah 4: Menegakkan aturan risiko keras di agen penjaga gerbang
Apa yang harus dilakukan: menjalankan setiap kandidat melalui model kedua atau validator aturan pertama dengan batas yang ketat.
Contoh kebijakan:
- Risiko maksimum per perdagangan: 0,50% dari ekuitas.
- Tidak ada transaksi baru dalam 15 menit dari rilis dampak tinggi dari Kalender rilisAku tidak tahu.
- Tingkat pembatalan wajib.
- Menolak jika konfidensi < 0,60.
Pydantic gate dan keputusan output:
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")
Mengapa itu penting: Bahkan jika agen penelitian memiliki membaca yang buruk, penjaga gerbang masih bisa memblokir setup besar atau lemah.
Langkah 5: Tambahkan jalur integrasi MCP (aliran kerja agen asli alat)
Apa yang harus dilakukan: mengekspos FXMacroData melalui MCP sehingga kerangka kerja agen dapat memanggil alat secara native alih-alih membangun lem REST khusus untuk setiap bot.
Mulai server MCP berbasis Python melalui uvx:
uvx fxmacrodata-mcp --transport http --server-url https://fxmacrodata.com/mcp
Contoh konfigurasi klien:
{
"mcpServers": {
"fxmacrodata": {
"command": "uvx",
"args": [
"fxmacrodata-mcp",
"--transport",
"http",
"--server-url",
"https://fxmacrodata.com/mcp"
]
}
}
}
Contoh skema panggilan alat MCP untuk agen penelitian Anda:
{
"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"]
}
}
Contoh panggilan agen (jalur MCP):
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."
Mengapa itu penting: MCP mengurangi drift integrasi saat tumpukan Anda tumbuh, terutama ketika Anda menjalankan beberapa agen atau pemasok model swap.
Langkah 6: Rute output untuk review manusia, kemudian broker API
Apa yang harus dilakukan: mengirim keputusan penjaga gerbang ke Slack/Telegram terlebih dahulu. Hanya mengirim perdagangan yang disetujui ke sistem eksekusi setelah konfirmasi manusia pada versi awal.
Mengapa itu penting: ini menciptakan loop auditable dan melindungi Anda selama prompt atau perubahan model.
[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.
Apa yang kau bangun
Anda sekarang memiliki arsitektur FX dua agen yang memisahkan generasi ide dari persetujuan risiko, mendukung integrasi REST langsung dan juga mendukung orkestrasi alat berbasis MCP melalui uvxIni adalah dasar yang lebih kuat daripada bot agen tunggal karena kandidat perdagangan harus bertahan dari gerbang kebijakan independen sebelum eksekusi.
Langkah selanjutnya: tambahkan lapisan kill-switch yang secara otomatis memaksa reject Anda juga dapat menambahkan batasan-batasan yang terkait dengan sesi dari Sesi FX dan konteks posisi dari COTAku tidak tahu.