كيفية بناء روبوت تداول العملات الأجنبية مع هيرميس و FXMacroData
مؤلف: فريق FXMacroData
نشرت: 21 مايو 2026
تعتبر نماذج هيرميس مناسبة بشكل قوي لمساعدين تجاريين عمليين لأنها سريعة وسهلة التشغيل محلياً وقابلة للتنبؤ في سير العمل الذي يدعو الأدوات. في هذا الدليل ، ستقوم ببناء روبوت تجاري خفيف الوزن لتداول العملات الأجنبية يجمع بين تفكير هيرمس مع بيانات سوق FXMacroData حتى يتمكن من تقييم مفاجآت الكلية ، وتصنيف إعدادات التداول ، وإخراج أفكار تجارية منضبطة.
تركز الاستراتيجية على الدولار الأمريكي مقابل اليابان و تستخدم التضخم الأمريكي- لا سعر سعر السياسة في الاحتياطي الفيدراليو سعر الفائدة المحدد للبنك المركزي الياباني يمكنك إعادة استخدام نفس الإطار لأي زوج تغطيه FXMacroData.
الشروط المسبقة
- بيئة محلية من Python 3.10+
- مفتاح FXMacroData API من إدارة API. .
- نقطة نهاية نموذج هيرميس (محلية أو مستضافة) ، مثل هيرمس عبر أولاما.
- معرفة أساسية بمجالات REST API وبرامج Python.
تثبيت التبعيات:
pip install requests python-dotenv
الخطوة 1: حدد هدف الروبوت وقواعد المخاطر
قبل التشفير، قم بتثبيت نطاق القرار.
- تداول زوج واحد فقط (USD/JPY).
- رد فعل فقط على التغيرات الكبرى ذات التأثير العالي
- لا تضع طلباً مباشراً أبداً تلقائياً في V1
- الناتج: الاتجاه، والثقة، ومستوى التبديد، واقتراح حجم الموقف.
هذا يبقي الروبوت الأول مفيدًا دون تحويله إلى صندوق أسود.
الخطوة 2: سحب بيانات الماكرو والعملات الأجنبية من FXMacroData
استخدم واجهة برمجة التطبيقات مع إثبات معايير الاستفسار. ابدأ بالإصدارات وبيانات الموقع.
curl "https://fxmacrodata.com/api/v1/announcements/usd/inflation?api_key=YOUR_API_KEY"
curl "https://fxmacrodata.com/api/v1/announcements/jpy/policy_rate?api_key=YOUR_API_KEY"
curl "https://fxmacrodata.com/api/v1/forex?base=USD"e=JPY&api_key=YOUR_API_KEY"
يمكنك أيضاً استفسار تقويم الإصدار و تحديد موقع COT لإضافة مخاطر الحدث وتحيز الموقع إلى سياقك الفوري.
الخطوة 3: بناء حلقة إشارة متوافقة مع هيرميس في بايثون
يجمع البرنامج النصي أدناه البيانات الأخيرة، ويخلق حمولة سياقية مضغوطة، ويطلب من هيرميس اتخاذ قرار منظم. حافظ على ذلك بشكل محدد من خلال طلب مخرج JSON صارم.
import os
import json
import requests
from datetime import datetime, timezone
API_BASE = "https://fxmacrodata.com/api/v1"
API_KEY = os.environ["FXMD_API_KEY"]
HERMES_URL = os.environ["HERMES_URL"] # Example: http://localhost:11434/api/generate
HERMES_MODEL = os.environ.get("HERMES_MODEL", "hermes3")
def fxmd_get(path, **params):
r = requests.get(
f"{API_BASE}{path}",
params={"api_key": API_KEY, **params},
timeout=25,
)
r.raise_for_status()
return r.json()
def last_value(payload):
rows = payload.get("data", [])
return rows[-1] if rows else {}
usd_infl = last_value(fxmd_get("/announcements/usd/inflation"))
jpy_rate = last_value(fxmd_get("/announcements/jpy/policy_rate"))
usd_rate = last_value(fxmd_get("/announcements/usd/policy_rate"))
spot = fxmd_get("/forex", base="USD", quote="JPY").get("data", [])
spot_last = spot[-1] if spot else {}
spot_prev = spot[-2] if len(spot) > 1 else spot_last
context = {
"timestamp_utc": datetime.now(timezone.utc).isoformat(),
"pair": "USD/JPY",
"macro": {
"usd_inflation_latest": usd_infl.get("value"),
"usd_policy_rate_latest": usd_rate.get("value"),
"jpy_policy_rate_latest": jpy_rate.get("value"),
},
"price": {
"last": spot_last.get("value"),
"previous": spot_prev.get("value"),
},
"rules": {
"allowed_actions": ["long", "short", "flat"],
"max_risk_per_trade_pct": 0.5,
"require_invalidation_level": True,
},
}
prompt = f"""
You are an FX strategy assistant.
Use this JSON context: {json.dumps(context)}
Return JSON only with keys:
action, confidence, thesis, invalidation, size_pct, next_data_to_watch
Rules:
- No prose outside JSON.
- Confidence between 0 and 1.
- size_pct must be <= 0.5.
"""
hermes_req = {
"model": HERMES_MODEL,
"prompt": prompt,
"stream": False,
}
resp = requests.post(HERMES_URL, json=hermes_req, timeout=45)
resp.raise_for_status()
raw = resp.json().get("response", "{}")
decision = json.loads(raw)
print(json.dumps(decision, indent=2))
لماذا هذا النمط يعمل:
- توفر FXMacroData مدخلات منظمة، لذلك تفكر هيرميس في الحقول النظيفة بدلاً من النص المخطط الصاخب.
- الإشارة تفرض مخططاً محدوداً، مما يقلل من الانجراف في الناتج.
- يتم إدخال قيود المخاطر في السياق، وليس ترك ضمنيا.
الخطوة 4: إضافة مرشحات إدراك الأحداث
معظم قرارات الروبوت السيئة تحدث حول نوافذ التقلبات العالية. أضف مرشحين قبل الثقة بأي إشارة:
- قرب التقويم: إذا كان الإفراج عن المستوى الأعلى متوقع خلال 30 دقيقة، خفض الحجم أو القوة
flat. . - الخلاف في النظام: إذا كان التحيز الكلي والزخم السعري لا يتفقان بشكل حاد، خفض الثقة تلقائيًا.
استخدم روابط النقطة النهائية في مستنداتك الخاصة للإشارة السريعة: الرواتب غير الزراعية في الولايات المتحدة- لا الولايات المتحدة الأمريكيةو التضخم الياباني. .
الخطوة 5: حول القرارات إلى تنبيهات، وليس تنفيذ تلقائي
في الإنتاج، توجه القرارات إلى سلاك/تلغرام أولاً. يجب أن يبقى التأكيد البشري إلزاميًا حتى يكون لديك ما يكفي من العينات التي تم اختبارها مسبقًا. شكل تنبيه عملي:
[FX BOT] USD/JPY
Action: LONG
Confidence: 0.72
Thesis: US inflation + sticky core, policy divergence still USD-supportive.
Invalidation: Daily close below 154.20
Suggested Size: 0.35%
Watch Next: US Core PCE (Friday 12:30 UTC)
هذا يبقي المساءلة والتحقق واضحة مع توفير وقت البحث.
أخطاء شائعة يجب تجنبها
- السماح للنموذج باختيار الحدود المخاطر ديناميكيا.
- استخدام الكثير من الأزواج قبل التحقق من صحة زوج واحد بعمق.
- تجاهل فحص البيانات القديمة في خطك
- معالجة ثقة النموذج كاحتمال الربح
ما بنيت
لديك الآن بنية v1 كاملة لروبوت FX يعمل على هيرميس: ماكرو منظم + استهلاك FX ، إنتاج نموذج محدد ، وتوليد إشارة محدودة بالمخاطر. بعد ذلك ، قم بتوسيع نفس الإطار إلى زوج ثاني مثل EUR / USD وقارن كيف تختلف منطق تباين السياسة بين المناطق.
إذا كنت تريد تعميق الإعداد، أضف وظيفة ملخص يومية التي تصنف أعلى مفاجآت الكلية وتقوم برسمها إلى تأثير العملات الأجنبية المحتملة قبل افتتاح لندن.