يغيب السبت 2026-06-13 لأن النطاق يعيد المشاهدات المحفوظة ولا ينشئ صفاً لكل يوم.
التصفح باستخدام Python
تتبع هذه الحلقة كل مؤشر.
Python · requestscopy
import requests
API = "https://api.exchangerate.dev/v1"
KEY = "exr_live_..." # free key at https://exchangerate.dev/signup
params = {
"base": "USD",
"symbols": "EUR,GBP",
"start_date": "2026-06-10",
"end_date": "2026-06-13",
}
rows = []
while True:
resp = requests.get(
f"{API}/range",
headers={"Authorization": f"Bearer {KEY}"},
params=params,
timeout=10,
)
resp.raise_for_status()
data = resp.json()
rows.extend(data["data"])
if not data["has_more"]:
break
cursor = data.get("next_cursor")
if not cursor or cursor <= params.get("cursor", ""):
raise RuntimeError("Incomplete historical response")
params["cursor"] = cursor
for row in rows:
filled = row["is_forward_filled"]
print(row["date"], row["rates"]["EUR"], row["rates"]["GBP"], "filled" if filled else "")
ميّز المشاهدة عن القيمة المنقولة
تحمل مشاهدات النطاق is_forward_filled false؛ وقد يعيد طلب تاريخ محدد القيمة السابقة مع true.
عطلة نهاية الأسبوع ليست مشاهدة
يحذف النطاق السبت 2026-06-13. وقد يعيد الطلب المباشر القيمة السابقة مع is_forward_filled true.
اختر تاريخاً أو نطاقاً
يناسب التاريخ الواحد الفحص المنفرد، بينما يناسب النطاق الرسوم والملء والتحليل الجماعي.
البعدتاريخ محددنطاق
الطلبطلب لكل تاريخطلب واحد مع صفحات
الاستجابةيوم واحدمصفوفة data
تحقق من التغطية
1,830 يوماً حد للطلب وليس ضماناً لعمق كل زوج. افحص source والصفوف و data: [].
pandas
حمّل الصفوف إلى pandas ورتبها حسب التاريخ واستبعد القيم المنقولة قبل الحساب.
Python · pandascopy
import pandas as pd
# rows contains every page from the loop above
df = pd.json_normalize(rows)
df["date"] = pd.to_datetime(df["date"])
df = df.set_index("date").sort_index()
# keep only rows that were actually published that day
df = df[~df["is_forward_filled"]]
print(df[["rates.EUR", "rates.GBP"]].tail())
pandas اختياري؛ يمكن معالجة الصفوف نفسها بأداة أخرى.