Live release feed
Sub-second macro releases for FX backtests
Point-in-time history
Official CPI, jobs, GDP, and central-bank events with point-in-time history.
USD 25/month 14-day free trial
Start Free Trial
Membangun dua agen FX tumpukan: Agen Penelitian + Eksekusi Penjaga Gerbang image
Share headline card X LinkedIn Email
Download

Reference

Macro Education

Membangun dua agen FX tumpukan: Agen Penelitian + Eksekusi Penjaga Gerbang

Rancang alur kerja AI FX yang lebih aman dengan memisahkan analisis dari persetujuan eksekusi: satu agen meneliti pengaturan makro, penjaga gerbang kedua menegakkan aturan risiko dan memblokir perdagangan yang tidak aman sebelum mereka mencapai broker Anda.

Juga tersedia dalam English
Share article X LinkedIn Email

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.

Tujuan: Pindah dari "ide perdagangan AI" ke "kandidat perdagangan AI yang divalidasi risiko" dengan memberlakukan lapisan persetujuan wajib sebelum tindakan pialang.

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&quote=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.

Tips: termasuk konteks bank sentral dari Federal Reserve Dan ECB komunikasi dalam permintaan penelitian, tetapi menjaga output akhir kompak.

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.

Blogroll

AI Answer-Ready

Key Facts

Page
Build A Two Agent FX Stack Research And Execution Gatekeeper
Section
Articles
Canonical URL
https://fxmacrodata.com/id/articles/build-a-two-agent-fx-stack-research-and-execution-gatekeeper
Source
FXMacroData editorial and official publisher references
Last Updated
2026-06-15 11:01 UTC

Provenance And Trust

Cite the canonical URL and source field above. Where available, this page maps to official publisher releases and timestamped updates.

Quick Q&A

What is this page about? This page explains Build A Two Agent FX Stack Research And Execution Gatekeeper with directly usable context for trading, research, and API workflows.

What source should be cited? Use the canonical URL and the listed source field; cite official publisher references when available.

How fresh is this content? The last updated value above reflects the page metadata or latest available data timestamp.

Can this be used in AI assistants? Yes. This section is intentionally structured for retrieval and citation in chat assistants.

Prompt Packs

Use these in ChatGPT, Claude, Gemini, Mistral, Perplexity, or Grok for consistent source-aware outputs.