تعلّم/السلاسل الزمنية

أسعار الصرف التاريخية والسلاسل الزمنية

استخدم /v1/range للحصول على تاريخ عدة عملات وتحميله إلى pandas أو أداة أخرى.

ERexchangerate.dev·19 يونيو 2026·قراءة خلال 6 دقائق

تعيد نقطة النطاق المشاهدات المحفوظة مع الصفحات والمصدر وعلامة الملء.

نقاط أساسية
تضم صفحة JSON حتى 366 مشاهدة. تابع next_cursor ما دام has_more يساوي true.
1,830 يوماً حد للطلب وليس ضماناً لعمق كل زوج. افحص source والصفوف و data: [].
يغيب السبت 2026-06-13 لأن النطاق يعيد المشاهدات المحفوظة ولا ينشئ صفاً لكل يوم.
لا. هي أسعار إرشادية؛ راجع notice و source.

استخدم نقطة النطاق

يشمل start_date وend_date الحدين. القيمة الافتراضية لـ base هي USD، وتُفصل symbols بفواصل. تتوفر أداة التاريخ بالإنجليزية.

يحتوي data على الصفوف المحفوظة. تابع has_more و next_cursor؛ ويغطي CSV وParquet النافذة المدعومة.

GET /v1/rangecopy
$ curl -G "https://api.exchangerate.dev/v1/range" \
    -H "Authorization: Bearer exr_live_..." \
    --data-urlencode "base=USD" \
    --data-urlencode "symbols=EUR,GBP" \
    --data-urlencode "start_date=2026-06-10" \
    --data-urlencode "end_date=2026-06-13"

اقرأ استجابة JSON

يحتوي data على الصفوف المحفوظة. تابع has_more و next_cursor؛ ويغطي CSV وParquet النافذة المدعومة.

JSONcopy
{
  "result": "success",
  "base": "USD",
  "start_date": "2026-06-10",
  "end_date": "2026-06-13",
  "data": [
    { "date": "2026-06-10", "rates": { "EUR": 0.86663, "GBP": 0.74727 },
      "source": "ecb_daily", "is_forward_filled": false },
    { "date": "2026-06-11", "rates": { "EUR": 0.86678, "GBP": 0.74829 },
      "source": "ecb_daily", "is_forward_filled": false },
    { "date": "2026-06-12", "rates": { "EUR": 0.86453, "GBP": 0.74613 },
      "source": "ecb_daily", "is_forward_filled": false }
  ],
  "has_more": false,
  "next_cursor": null
}

التواريخ الغائبة

يغيب السبت 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 اختياري؛ يمكن معالجة الصفوف نفسها بأداة أخرى.

ابحث عن تاريخ في أداة الأسعار التاريخية بالإنجليزية

ER
exchangerate.dev
دليل عملي لدمج بيانات FX

تابع القراءة

Tutorialالحصول على أسعار الصرف باستخدام Pythonاقرأ
مقارنةFixer vs exchangerate.devمقارنةOpen Exchange Rates vs exchangerate.devمقارنةCurrencylayer vs exchangerate.devدليلأسعار الصرف المرجعية للبنك المركزي الأوروبي، موضحةدليلتحويل العملات في JavaScript وNode.jsدليلكيفية الحصول على أسعار الصرف في Pythonسعر صرف مباشرEUR/USDسعر صرف مباشرGBP/USDسعر صرف مباشرUSD/JPY