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
Build a Two-Agent FX Stack: Research Agent + Execution Gatekeeper image
Share headline card X LinkedIn Email
Download

Reference

Macro Education

Build a Two-Agent FX Stack: Research Agent + Execution Gatekeeper

صمم سير عمل عمل عمل AI FX أكثر أمانًا من خلال فصل التحليل من موافقة التنفيذ: يقوم أحد الوكلاء بالبحث في الإعدادات الكبرى ، ويقوم حارس البوابة الثاني بتطبيق قواعد المخاطر ويحجب الصفقات غير الآمنة قبل أن تصل إلى وسيطك.

متوفر أيضًا في English
Share article X LinkedIn Email

بناء مجموعة عملات من اثنين من العملاء: عميل البحث + حارس البوابة

مؤلف: فريق FXMacroData
نشرت: 21 مايو 2026

روبوتات الفوركس ذات الوكيل الواحد تفشل لسبب بسيط: نفس النموذج الذي يولد الأفكار يسمح له أيضا بموافقتها. الرواتب غير الزراعية في الولايات المتحدة، خطأ واحد من التفكير يمكن أن تقفز مباشرة في خطر الموقف.

يوضح هذا الدليل بنية أكثر أمانًا: تقسيم المسؤوليات بين اثنين من الوكلاء. يقوم الوكيل الأول بأبحاث السوق ويقدم إعدادات. الوكل الثاني هو حارس حراسة صارم لا يمكنه إلا الموافقة على المقترحات أو تغيير حجمها أو رفضها بناءً على قواعد المخاطر الصعبة.

بحلول النهاية، سيكون لديك سير عمل عملي لعاملين اليورو/دولار و جنيه استرليني مقابل دولار أمريكي يدعم كل من تكامل API REST المباشر وتكامل الأدوات القائمة على MCP.

الهدف: الانتقال من "أفكار تجارة الذكاء الاصطناعي" إلى "مرشحين تجاريين ذوي إثبات المخاطر في الذكاة الاصطة" من خلال فرض طبقة موافقة إلزامية قبل أي عمل وسيط.

الشروط المسبقة

  • بايثون 3.10+
  • مفتاح FXMacroData API من إدارة API. .
  • نقطة نهاية ماجستير في العلوم للبحوث ووكلاء حراس البوابات
  • معرفة أساسية مع واجهات برمجة التطبيقات JSON و HTTP.

تثبيت التبعيات:

pip install requests python-dotenv pydantic

إبتكر .env الملف:

FXMD_API_KEY=your_fxmacrodata_key
RESEARCH_MODEL=claude-or-hermes
GATEKEEPER_MODEL=claude-or-hermes
MAX_RISK_PCT=0.50

Step 1: Define strict roles for both agents

ماذا تفعل: قم بتحديد المسؤوليات قبل كتابة البرمجة

  • وكيل البحث: يقرأ سياق السوق الكلي ويقدم مقترحات لترتيبات المرشحين.
  • عامل حارس البوابة: يُحقق من صحة القيود فقط. لا يمكنه ابتكار صفقات جديدة، بل يوافق فقط/يرفض/يقوم بتغيير حجمها.

لماذا يهم: هذا الفصل يمنع نموذج واحد من تجاوز ضوابط المخاطر عندما تكون الثقة عالية ولكن الأدلة ضعيفة.


الخطوة 2: استخدم السياق المهيكلة مع دعوات REST المباشرة

ماذا تفعل: احضر الإصدارات والبيانات الفورية من FXMacroData حتى يحصل وكيل البحث على مدخلات نظيفة بدلاً من عناوين غير منظمة.

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"

لماذا يهم: المجال المتسق والمهيكلة يعطي كلا العاملين نفس مصدر الحقيقة ويجعل التحقق من صحة محدد.

الحد الأدنى لجميع برامج بايثون:

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:],
    }

الخطوة 3: توليد مرشحين للتجارة مع وكيل البحث

ماذا تفعل: اسأل وكيل البحث عن المرشحين فقط لا تدعيه يرسل تعليمات جاهزة للتنفيذ

{
  "pair": "EUR/USD",
  "bias": "long|short|flat",
  "thesis": "string",
  "confidence": 0.0,
  "entry_zone": "string",
  "invalidation": "string",
  "event_risks": ["string"]
}

لماذا يهم: تخطيط ثابت يسمح لحارس البوابة بتطبيق القواعد على الحقول المتوقعة بدلاً من محاولة تحليل النص الحر.

نصيحة: تشمل سياق البنك المركزي من الاحتياطي الفيدرالي و البنك المركزي الأوروبي التواصل في طلب البحث، ولكن الحفاظ على الناتج النهائي المدمجة.

الخطوة 4: تطبيق قواعد المخاطر الصعبة في وكيل حارس البوابة

ماذا تفعل: اجري كل مرشح من خلال نموذج ثان أو معتمد قاعدة أولا مع حدود صارمة.

مثال سياسة:

  • الحد الأقصى للمخاطر لكل صفقة: 0.50٪ من رأس المال.
  • لا توجد صفقات جديدة خلال 15 دقيقة من الإفراج عن تأثير كبير من تقويم الإصدار. .
  • مستوى الإبطال الإلزامي
  • رفض إذا كانت الثقة < 0.60

بوابة بيدانتيك وخرج القرار:

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")

لماذا يهم: حتى لو كان عميل البحث لديه قراءة سيئة، يمكن لخادم البوابة أن يحجب الإعدادات الضعيفة أو الضخمة.


الخطوة 5: إضافة مسار تكامل MCP (جريان عمل الوكيل الأصلي للأداة)

ماذا تفعل: تعريض FXMacroData من خلال MCP حتى يمكن لأطر العميل استدعاء الأدوات بشكل أصلي بدلاً من بناء غراء REST مخصص لكل بوت.

بدء خادم MCP مبني على بايثون uvx:

uvx fxmacrodata-mcp --transport http --server-url https://fxmacrodata.com/mcp

مثال تكوين العميل:

{
  "mcpServers": {
    "fxmacrodata": {
      "command": "uvx",
      "args": [
        "fxmacrodata-mcp",
        "--transport",
        "http",
        "--server-url",
        "https://fxmacrodata.com/mcp"
      ]
    }
  }
}

مثال على مخطط استدعاء أداة MCP لعامل البحث الخاص بك:

{
  "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"]
  }
}

مثال استدعاء العميل (مسار 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."

لماذا يهم: MCP يقلل من الانجراف التكامل مع نمو كومة الخاص بك، وخاصة عندما تشغيل وكلاء متعددة أو مزودي نموذج المبادلة.


الخطوة 6: توجيه المخرجات إلى مراجعة البشر ، ثم وسيط API

ماذا تفعل: إرسال قرار حارس البوابة إلى سلاك/تلغرام أولاً. فقط إرسالة الصفقات المعتمدة إلى أنظمة التنفيذ بعد التأكيد البشري في الإصدارات الأولى.

لماذا يهم: هذا يخلق حلقة قابلة للتدقيق ويحميك أثناء تغييرات النموذج أو النمط.

[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.

ما بنيت

لديك الآن بنية FX من اثنين من الوكلاء التي تفصل بين توليد الأفكار والموافقة على المخاطر، تدعم اندماج REST المباشر، وتدعم أيضاً تنظيم الأدوات القائمة على MCP من خلال uvxهذا أساس أقوى من الروبوتات العاملة بمفردها لأن المرشحين للتجارة يجب أن ينجووا من بوابة سياسة مستقلة قبل التنفيذ.

الخطوة التالية: إضافة طبقة مفاتيح إيقاف تُجبر تلقائياً reject بعد فترة تأخير غير عادية، أو فقدان حقول البيانات، أو فشل مخطط متكرر خلال جلسات عالية التقلب. يمكنك أيضًا إضافة قيود تتناسب مع الجلسة من جلسات العملات الأجنبية ووضع السياق من كوت. .

Blogroll

AI Answer-Ready

Key Facts

Page
Build A Two Agent FX Stack Research And Execution Gatekeeper
Section
Articles
Canonical URL
https://fxmacrodata.com/ar/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.