क्यों एक सुबह-प्रिप एजेंट सबसे अधिक आरओआई बॉट आप पहले निर्माण कर सकते हैं
यदि आप विदेशी मुद्रा व्यापार करते हैं या अर्ध-स्वचालित बुक चलाते हैं, तो आपके दिन के सबसे महंगे 45 मिनट लंदन के खुलने से पहले हैं। रिलीज कैलेंडर, पार-जाँच जो छवियों स्तर एक हैं, आम सहमति की तलाश, रात भर चलती स्कैनिंग पर USD/JPY, EUR/USD, GBP/USD, और याद करने की कोशिश कर रहा है कि केंद्रीय बैंक के वक्ता आज क्या मायने रखते हैं। यह दोहराव है, त्रुटि-प्रवण है, और आपको हर सुबह शून्य से संदर्भ का पुनर्निर्माण करने के लिए मजबूर करता है।
यह ठीक उसी तरह का कार्य है जो एक एआई एजेंट एक इंसान से बेहतर करता हैः सीमित दायरा, संरचित इनपुट, निर्धारक आउटपुट। इस गाइड में आप एक निर्माण करेंगे वास्तविक समय FX घटना एजेंट जो आपके ट्रेडिंग दिन से पहले चलता है, FXMacroData से लाइव इवेंट डेटा खींचता है, आज की रिलीज़ को संभावित बाजार प्रभाव के अनुसार रैंक करता है, और एक संरचित ब्रीफिंग प्रदान करता है जिसे आप 90 सेकंड में पढ़ सकते हैं।
अंत तक आपके पास एक स्क्रिप्ट होगी जिसे आप किसी भी मशीन पर शेड्यूल कर सकते हैं लैपटॉप, रास्पबेरी पाई, क्लाउड वीएम जो सुबह की तैयारी को एक काम से चेकलिस्ट में बदल देता है।
एक पायथन एजेंट जो दैनिक 06:30 UTC पर चलता है, जी 10 में अगले 24 घंटों के लिए एफएक्समैक्रोडाटा रिलीज़ कैलेंडर की क्वेरी करता है, प्रभाव के अनुसार घटनाओं को रैंक करता है।
पूर्व शर्तें
- पायथन 3.10+ और पाइप.
- से एक FXMacroData एपीआई कुंजी एपीआई प्रबंधन.
- एक एलएलएम अंत बिंदु जिसे आप नियंत्रित करते हैं। निम्नलिखित में से कोई भी कार्य करता हैः
- मानववादी क्लाउड (विचार की गुणवत्ता के लिए अनुशंसित) ।
- ओपनएआई जीपीटी-4 वर्ग.
- स्थानीय हर्मेस/लामा ओल्लामा के माध्यम से शून्य लागत के लिए चलाता है।
- एक टेलीग्राम बॉट टोकन (via
@BotFather) या एक स्लैक इनकमिंग वेबहूक URL या तो वितरण चैनल के रूप में काम करता है। - एक शेड्यूलर।
cronलिनक्स/macOS पर, विंडोज पर कार्य शेड्यूलर, या किसी भी क्लाउड क्रोन करेगा।
निर्भरताएँ स्थापित करेंः
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: FXMacroData रिलीज़ कैलेंडर से अगले 24 घंटों को खींचें
एजेंट का पहला काम यह जानना है कि वास्तव में क्या निर्धारित है। 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: बाजार पर संभावित प्रभाव के आधार पर रिलीज को रैंक करें
सभी प्रिंट बाजारों को नहीं ले जाते। गैर-खेती पगार, कोर पीसीई, फेड नीतिगत दर, यूरो क्षेत्र के सीपीआई, यूके सीपीआई, और बैंक की नीतिगत दर विदेशी मुद्रा प्रवाह पर हावी है। एक छोटी अर्थव्यवस्था के लिए खुदरा व्यापार की चमक शायद ही कभी मायने रखती है।
एक स्पष्ट वजन तालिका एन्कोड करें ताकि एजेंट को अनुमान लगाने की जरूरत न हो। यह पूरी प्रणाली का सबसे अधिक लाभ उठाने वाला टुकड़ा है आपके वजन, आपका किनारा।
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"]),
)
अब आप दिन को एक संरचित सूची में तोड़ सकते हैं जहां स्तर-1 घटनाएँ UTC समय की परवाह किए बिना पहले सतह पर आती हैं।
चरण 3: रात भर संदर्भ जोड़ें ताकि एजेंट जानता है कि पहले से ही क्या स्थानांतरित किया गया है
एक सुबह की ब्रीफिंग रात भर के विदेशी मुद्रा आंदोलनों के एक स्नैपशॉट के बिना अधूरी है। आप जोड़े के लिए सबसे हालिया स्पॉट दरों को खींचें ताकि एलएलएम अपने कथानक में मूल्य कार्रवाई बुन सके।
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: एलएलएम के साथ ब्रीफिंग उत्पन्न करें
एजेंट के पास अब तीन संरचित इनपुट हैंः रैंक की गई घटनाएं, रात भर विदेशी मुद्रा की चाल, और वर्तमान 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 सेकंड से कम में पढ़ा जाता है, हर सप्ताह के दिन, कोई मैनुअल कैलेंडर स्क्रैपिंग के बिना।
आप इसे विश्वास करने से पहले कठोर चेकलिस्ट
- पुराने डेटा गार्ड. यदि किसी भी स्तर-1 घटना का निर्धारित समय चूक जाता है तो ब्रीफिंग भेजने से इनकार करें।
- बैकऑफ़ के साथ पुनः प्रयास करें HTTP विफलताओं पर क्षणिक. तीन प्रयास, 2s/4s/8s, फिर जोर से विफल.
- आउटपुट सत्यापनकर्ता. "खरीदें", "बेचें", या "लंबे" / "लघु" शब्दों वाले किसी भी एलएलएम उत्तर को अस्वीकार करें। एजेंट का काम सूचना है, निष्पादन नहीं।
- दिल की धड़कन अलर्ट. यदि एजेंट 07:00 UTC तक ब्रीफिंग भेजने में विफल रहता है, तो अपने आप को अलग से पिंग करें ताकि आप चुपचाप कार्यप्रवाह को न खोएं।
- लागत सीमा। सेट
max_tokens=600और एक दैनिक एलएलएम खर्च सीमा।
अब इसे कहाँ ले जाना है?
एक ही मचान एक बार सुबह के लूप विश्वसनीय है आसानी से विस्तार होता हैः
- दिन के भीतर आश्चर्य अलर्ट। सर्वेक्षण घोषणाएं अंत बिंदु प्रत्येक 15 मिनट में एक स्तर-1 रिलीज के बाद; अलर्ट जब वास्तविक सहमति से आपकी सीमा से अधिक विचलित होता है।
- जोड़ी-विशिष्ट ब्रीफिंग। एक तंग उत्पन्न USD/JPY- केवल या EUR/USD- केवल सक्रिय दिनों के लिए संस्करण।
- स्थिति ओवरले। खींचो सीओटी डेटा साप्ताहिक और इसे एक ही संकेत में खिलाता है ताकि ब्रीफिंग जानता है जब बाजार एकतरफा है।
- आवाज मोड. टीटीएस मॉडल के माध्यम से ब्रीफिंग पाइप करें और इसे कॉफी बनाते समय जोर से पढ़ें।
जीत खुद ब्रीफिंग नहीं है यह अनुशासित, पुनः प्रयोज्य संदर्भ है आप अपने व्यापार दिन में चलना है। एक बार उस आदत स्वचालित है, विदेशी मुद्रा एजेंट के बुनियादी ढांचे के हर अन्य टुकड़ा आप ऊपर बैठता है।