لماذا وكيل الاستعداد الصباحي هو الروبوت أعلى عائد للعمل الذي يمكنك بناؤه أولاً
إذا كنت تتداول العملات الأجنبية بشكل تقديري أو تشغيل كتاب شبه الآلي، أغلى 45 دقيقة من يومك هي تلك التي قبل لندن مفتوحة. تقويم الإصدار، التحقق المتبادل التي بصمات هي مستوى واحد، تبحث عن توافق في الآراء، مسح ليلة واحدة يتحرك على الدولار الأمريكي مقابل اليابان- لا اليورو/دولار- لا جنيه استرليني مقابل دولار أمريكي، ومحاولة تذكر المتحدث الذي يُمثل أهمية اليوم. إنه متكرر، عرضة للخطأ، ويجبرك على إعادة بناء السياق كل صباح من الصفر.
هذا بالضبط نوع من المهام التي يقوم بها عميل الذكاء الاصطناعي بشكل أفضل من الإنسان: نطاق محدود، مدخلات منظمة، مخرجات محددة. وكيل الأحداث الفوركس في الوقت الحقيقي الذي يعمل قبل يوم التداول الخاص بك، يسحب بيانات الحدث الحي من FXMacroData، تصنيف الإصدارات اليوم من خلال تأثير السوق المحتمل، وتقديم إطلاع منظم يمكنك قراءته في 90 ثانية.
في النهاية سيكون لديك نص يمكنك تحديد الموعد عليه على أي جهاز كمبيوتر محمول، راسبيري باي، و VM السحابية
يعمل وكيل بايثون الذي يعمل في الساعة 06:30 بالتوقيت العالمي يوميًا ، ويستفسر تقويم إصدار FXMacroData لمدة 24 ساعة المقبلة عبر مجموعة 10 ، ويصنف الأحداث حسب التأثير ، ويجمعها من خلال LLM ، ويدفع إطلاعًا منظمًا إلى Telegram أو Slack.
الشروط المسبقة
- بايثون 3.10+ و بيب
- مفتاح FXMacroData API من إدارة API. .
- نقطة نهاية LLM التي تتحكم بها. أي من الأعمال التالية:
- كلويد الأنثروبيك (يتم التوصية بجودة التفكير).
- فئة OpenAI GPT-4
- (هيرميس) المحلية (لاما) عبر (أولاما) لرحلات بلا تكلفة
- رمز الـ (تليجرام)
@BotFather) أو Slack الواردة webhook URL إما يعمل كقناة التسليم. - -مُخطط
cronعلى لينكس / ماكوس، مخطط المهام على ويندوز، أو أي سحاب كرون سوف تفعل.
تثبيت التبعيات:
pip install requests python-dotenv
إبتكر .env ملف مع أسرارك:
FXMD_API_KEY=your_fxmacrodata_key
LLM_PROVIDER=anthropic # or "openai" or "ollama"
ANTHROPIC_API_KEY=sk-ant-...
TELEGRAM_BOT_TOKEN=...
TELEGRAM_CHAT_ID=...
الخطوة 1: سحب الـ 24 ساعة القادمة من تقويم إصدار FXMacroData
مهمة العميل الأولى هي معرفة ما هو مخطط له FXMacroData تقويم النقاط النهائية للإصدار يعيد الإصدارات المقررة حسب العملة، بما في ذلك اسم المؤشر، والوقت المقرر بتوقيت UTC، والقيمة السابقة، وتصنيف الأهمية عند توفرها.
استفسر منه لكل عملة رئيسية تتداولها:
curl "https://fxmacrodata.com/api/v1/calendar/usd?api_key=YOUR_API_KEY"
curl "https://fxmacrodata.com/api/v1/calendar/eur?api_key=YOUR_API_KEY"
curl "https://fxmacrodata.com/api/v1/calendar/gbp?api_key=YOUR_API_KEY"
curl "https://fxmacrodata.com/api/v1/calendar/jpy?api_key=YOUR_API_KEY"
لف هذا في بايثون حتى يتمكن العميل من التكرار عبر قائمة العملات القابلة للتكوين:
import os
import requests
from datetime import datetime, timedelta, timezone
from dotenv import load_dotenv
load_dotenv()
API = "https://fxmacrodata.com/api/v1"
KEY = os.environ["FXMD_API_KEY"]
CURRENCIES = ["usd", "eur", "gbp", "jpy", "aud", "cad", "chf", "nzd"]
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 upcoming_releases(hours_ahead: int = 24):
now = datetime.now(timezone.utc)
cutoff = now + timedelta(hours=hours_ahead)
releases = []
for ccy in CURRENCIES:
try:
data = fxmd_get(f"/calendar/{ccy}").get("data", [])
except requests.HTTPError:
continue
for ev in data:
try:
ts = datetime.fromisoformat(
ev["announcement_datetime"].replace("Z", "+00:00")
)
except (KeyError, ValueError):
continue
if now <= ts <= cutoff:
releases.append({
"currency": ccy.upper(),
"indicator": ev.get("indicator") or ev.get("name"),
"scheduled_utc": ts.isoformat(),
"prior": ev.get("prior_value"),
"consensus": ev.get("consensus") or ev.get("market_consensus"),
"importance": ev.get("importance") or ev.get("impact"),
})
releases.sort(key=lambda r: r["scheduled_utc"])
return releases
الخطوة 2: تصنيف الإصدارات حسب التأثير المحتمل على السوق
ليس كل الطبعات تحرك الأسواق الرواتب غير الزراعية- لا أساسية PCE- لا سعر الفائدة- لا مؤشر أسعار المستهلك لمنطقة اليورو- لا مؤشر أسعار المستهلكين في المملكة المتحدةو سعر سعر العملة المحدد من بنك اليمن ويتحكم التداول بالتجزئة في التجارة التجارية للاقتصاد الصغير نادرا ما يكون مهما.
قم بتشفير جدول وزن واضح حتى لا يتوجب على العميل أن يخمن. هذه هي الجزء الوحيد الأكثر نفوذاً من النظام بأكمله أوزانك، حافة.
TIER_1 = {
("USD", "non_farm_payrolls"), ("USD", "core_pce"), ("USD", "policy_rate"),
("USD", "inflation"), ("USD", "fomc_minutes"),
("EUR", "inflation"), ("EUR", "policy_rate"),
("GBP", "inflation"), ("GBP", "policy_rate"),
("JPY", "policy_rate"), ("JPY", "inflation"),
("AUD", "policy_rate"), ("CAD", "policy_rate"),
("CHF", "policy_rate"), ("NZD", "policy_rate"),
}
TIER_2 = {
("USD", "retail_sales"), ("USD", "ism_manufacturing"),
("EUR", "gdp"), ("EUR", "unemployment"),
("GBP", "gdp"), ("GBP", "retail_sales"),
("AUD", "inflation"), ("CAD", "inflation"),
}
def impact_score(event: dict) -> int:
key = (event["currency"], (event["indicator"] or "").lower())
if key in TIER_1:
return 3
if key in TIER_2:
return 2
return 1
def rank(releases):
return sorted(
releases,
key=lambda r: (-impact_score(r), r["scheduled_utc"]),
)
الآن يمكنك أن تُحطم اليوم إلى قائمة منظمة حيث تظهر الأحداث من المستوى الأول أولاً بغض النظر عن الوقت UTC.
الخطوة الثالثة: أضف سياقاً خلال الليل حتى يعرف الوكيل ما الذي تم نقله بالفعل
الإعلان الصباحي غير مكتمل بدون صورة لحظات حركات الفوركس خلال الليل. سحب أسعار الفورية الأخيرة للأزواج التي تهتم بها حتى يمكن للبرنامج أن ينسج حركة السعر في روايته.
PAIRS = [("USD", "JPY"), ("EUR", "USD"), ("GBP", "USD"), ("AUD", "USD")]
def overnight_moves():
moves = []
for base, quote in PAIRS:
try:
data = fxmd_get(
"/forex",
base=base,
quote=quote,
).get("data", [])
except requests.HTTPError:
continue
if len(data) < 2:
continue
last = data[-1]["value"]
prev = data[-25]["value"] if len(data) >= 25 else data[0]["value"]
change_pct = (last - prev) / prev * 100
moves.append({
"pair": f"{base}/{quote}",
"last": round(last, 5),
"change_pct_24h": round(change_pct, 2),
})
return moves
إذا كنت تريد أيضا سياق التنظيم للتداولات البديلة، أضف كوت ابقيها اختيارية، يجب أن يستمر الإجتماع بدونها
الخطوة 4: توليد المعلومات الإعلامية مع LLM
الآن لدى الوكيل ثلاثة مدخلات منظمة: الأحداث المرتبة، تحركات العملات الأجنبية بين عشية وضحاها، والختم الزمني UTC الحالي. مررها إلى النموذج مع عقد خروج صارم حتى يكون الإعلان قابل للتحليل ومتسق كل صباح.
import json
from anthropic import Anthropic
claude = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
SYSTEM_PROMPT = """You are an FX morning-prep analyst.
Given today's ranked releases and overnight moves, produce a briefing that:
- leads with the single most important event of the day,
- groups events by impact tier,
- flags 1-2 specific pairs to watch and why,
- ends with one disciplined risk caveat.
Do not give buy/sell instructions. Stay factual. Max 220 words."""
def generate_briefing(events, moves):
payload = json.dumps({
"utc_now": datetime.now(timezone.utc).isoformat(),
"ranked_events": events,
"overnight_moves": moves,
})
resp = claude.messages.create(
model="claude-3-5-sonnet-latest",
max_tokens=600,
system=SYSTEM_PROMPT,
messages=[{"role": "user", "content": payload}],
)
return resp.content[0].text
ثلاثة أشياء تجعل هذا الإشارة موثوقة:
- مدخلات منظمة يتلقى النموذج JSON، وليس اللغة الطبيعية، لذلك لا يجب عليه أبدا استخراج التواريخ أو الأرقام من النص.
- -منظور صلب يمنع نظام التداول توصيات ذلك يبقي الناتج متوافق ومفيد حتى في الأيام المتقلبة
- السقف الطويل 220 كلمة تجبرك على كثافة الإشارة، جلسات إعلامية طويلة تدربك على التفقد،
الخطوة 5: تسليم إلى تلغرام (أو سلاك)
الإجتماع يجب أن يصل إلى حيث تنظرون في الصباح البرقية هي أسرع قناة لإنشاءها
def send_telegram(text: str):
token = os.environ["TELEGRAM_BOT_TOKEN"]
chat_id = os.environ["TELEGRAM_CHAT_ID"]
requests.post(
f"https://api.telegram.org/bot{token}/sendMessage",
json={
"chat_id": chat_id,
"text": text,
"parse_mode": "Markdown",
"disable_web_page_preview": True,
},
timeout=15,
)
def run():
events = rank(upcoming_releases(hours_ahead=24))
moves = overnight_moves()
briefing = generate_briefing(events, moves)
header = f"*FX Morning Briefing — {datetime.now(timezone.utc):%a %d %b %Y}*\n\n"
send_telegram(header + briefing)
if __name__ == "__main__":
run()
جدولة. على لينكس / ماكوس، مدخل crontab واحد يدير العميل كل يوم أسبوعي في 06:30 UTC:
30 6 * * 1-5 /usr/bin/python3 /opt/fx-agent/morning_brief.py >> /var/log/fx-agent.log 2>&1
كيف تبدو المعلومات في الواقع
مثال على الناتج الذي أنتجه الوكيل في أسبوع مؤشر سعر المستهلك الأخير:
FX Morning Briefing — Thu 22 May 2026
Today's anchor: US Core PCE at 12:30 UTC. Consensus 0.2% MoM,
prior 0.0%. A second sub-0.1 print would cement the disinflation
narrative; a 0.3+ surprise resets Fed pricing.
Tier 1:
- 12:30 UTC USD Core PCE prior +0.0% cons +0.2%
- 13:30 UTC USD Initial Jobless Claims prior 228k cons 225k
Tier 2:
- 06:00 UTC GBP Retail Sales MoM prior -0.1% cons +0.4%
- 09:00 UTC EUR ECB Minutes (qualitative)
Pairs to watch:
- USD/JPY hovering 158.40 after a quiet Asia. PCE miss → 156s
back in play.
- GBP/USD coiled below 1.2700. Stronger UK retail + soft PCE is
the cleanest setup of the day.
Risk caveat: thin EU liquidity ahead of US data; expect outsized
moves on any surprise print.
هذا قراءة كاملة قبل السوق في أقل من 90 ثانية، كل يوم أسبوعي، دون كشف التقويم يدويا.
قائمة التحقق قبل أن تثق بها
- حارس البيانات القديم رفض إرسال الإعلام إذا كان أي حدث من المستوى الأول قد غاب عن الوقت المحدد
- حاول مرة أخرى مع الظهر على فشل HTTP عابر ثلاث محاولات، 2s/4s/8s، ثم فشل بصوت عال
- -مُحقق الخروج رفض أي إجابة من LLM تحتوي على كلمات "شراء" أو "بيع" أو"طويل" / "قصير". وظيفة الوكيل هي المعلومات، وليس التنفيذ.
- إنذار ضربات القلب إذا فشل العميل في إرسال إفادة بحلول الساعة 07: 00 بالتوقيت العالمي، قم بتسجيل نفسك بشكل منفصل حتى لا تفقد سير العمل بصمت.
- سقف التكلفة - تمّ تعيينها
max_tokens=600وحدّة إنفاق يوميّة للدراسة، يجب أن تكلف المعلومات سنتين يوميًّا.
إلى أين سنأخذها بعد ذلك
نفس السقالات تمتد بسهولة بمجرد أن تكون حلقة الصباح موثوقة:
- إنذارات مفاجئة خلال اليوم استطلاع الإعلانات النقاط النهائية كل 15 دقيقة بعد الإفراج عن المستوى 1؛ تنبيه عندما يختلف الفعلي عن الإجماع بأكثر من عتبة.
- جلسات إعلامية خاصة بالأزواج تولّد أكثر تشدّداً الدولار الأمريكي مقابل اليابان-فقط أو اليورو/دولار-إصدار فقط ليوم نشط
- وضع التغطية اسحب بيانات COT ويتم إدخالها في نفس الإشارة حتى يعرف المعلومات عندما يكون السوق أحادي الجانب.
- وضع الصوت قم بتوصيل المعلومات عبر نموذج TTS واطلبي قراءتها بصوت عال بينما تطهين القهوة
الفوز ليس في الإعلان نفسه، بل في السياق المنضبط والقابل للتكرار الذي تدخل به يوم التداول. بمجرد أن يتم تلقائي هذه العادة، كل قطعة أخرى من البنية التحتية للوكيل الفوركس التي تبني تجلس فوقها.