الوصول إلى البيانات التاريخية
استعلم عن الأسعار اليومية حتى عام 1999، واجلب نطاقات زمنية، وقارن بين تاريخين، واحصل على أشرطة OHLC، وحلّل اتجاهات أسعار المعادن مع MetalAPI.
ما السجل المتاح
يخزّن MetalAPI شريطًا يوميًا واحدًا (الافتتاح والأعلى والأدنى والإغلاق) لكل رمز في كل يوم:
- العملات منذ عام 1999
- المعادن الثمينة والمعادن الصناعية والطاقة منذ عام 2000
- العملات المشفرة منذ عام 2014
أسعار المعادن قبل أكتوبر 2026 مشتقة من العقود الآجلة للشهر الأقرب، لذا قد تختلف قليلًا عن السعر الفوري في اليوم نفسه. يمكن لجميع الخطط الاستعلام عن السجل الكامل، ولا تختلف الخطط إلا في عدد الأيام التي يمكن أن يغطيها طلب نطاق واحد.
يوم واحد
استخدم التاريخ كمسار، أو نقطة النهاية /historical مع المعامل date، أو /yesterday. تحتوي الاستجابة على أسعار إغلاق ذلك اليوم (UTC). للطلب GET /api/v1/2026-10-01?currencies=XAU,XAG:
{
"success": true,
"timestamp": 1790812800,
"historical": true,
"date": "2026-10-01",
"base": "USD",
"rates": {
"XAU": 0.0002583044893,
"USDXAU": 3871.4,
"XAG": 0.02097315436,
"USDXAG": 47.68
}
}نطاقات التواريخ باستخدام /timeframe
تُرجع /timeframe إدخالًا واحدًا لكل يوم بين start_date وend_date، مفهرسًا بالتاريخ. للطلب GET /api/v1/timeframe?start_date=2026-10-19&end_date=2026-10-23¤cies=XAU:
{
"success": true,
"timeframe": true,
"start_date": "2026-10-19",
"end_date": "2026-10-23",
"base": "USD",
"rates": {
"2026-10-19": { "XAU": 0.0002537298285, "USDXAU": 3941.2 },
"2026-10-20": { "XAU": 0.0002526049889, "USDXAU": 3958.75 },
"2026-10-21": { "XAU": 0.0002517369852, "USDXAU": 3972.4 },
"2026-10-22": { "XAU": 0.0002506642603, "USDXAU": 3989.4 },
"2026-10-23": { "XAU": 0.0002501319446, "USDXAU": 3997.89 }
}
}قد تغيب الأيام التي لا يوجد لها سعر إغلاق، مثل عطلات نهاية الأسبوع أو عطلات السوق، فلا تفترض وجود إدخال لكل يوم تقويمي. و/timeseries اسم بديل يُرجع "timeseries": true بدلًا من "timeframe": true.
نطاقات أطول مما تسمح به خطتك
يمكن أن يغطي الطلب الواحد حتى 30 يومًا في Free و365 يومًا في الخطط المدفوعة، وتُرجع الفترات الأطول الخطأ 207. قسّم النطاقات الطويلة إلى أجزاء، بحيث يكون كل جزء طلبًا واحدًا:
const DAY = 86_400_000;
const MAX_DAYS = 365; // 30 on the Free plan
const iso = (d) => d.toISOString().slice(0, 10);
async function fetchRange(start, end, currencies) {
const rates = {};
let from = new Date(`${start}T00:00:00Z`);
const last = new Date(`${end}T00:00:00Z`);
while (from <= last) {
const to = new Date(Math.min(from.getTime() + MAX_DAYS * DAY, last.getTime()));
const params = new URLSearchParams({ start_date: iso(from), end_date: iso(to), currencies });
const res = await fetch(`https://metalapi.com/api/v1/timeframe?${params}`, {
headers: { "X-API-Key": process.env.METALAPI_KEY },
});
const data = await res.json();
if (!data.success) throw new Error(`${data.error.code}: ${data.error.info}`);
Object.assign(rates, data.rates);
from = new Date(to.getTime() + DAY);
}
return rates;
}
// Ten years of daily gold prices in 10 requests
const gold = await fetchRange("2016-01-01", "2025-12-31", "XAU");التغيّرات بين تاريخين
تقارن /change بين يومين مباشرةً، فلا تحتاج إلى تنزيل النطاق الواقع بينهما. للطلب GET /api/v1/change?start_date=2026-09-30&end_date=2026-10-23¤cies=XAU:
{
"success": true,
"change": true,
"start_date": "2026-09-30",
"end_date": "2026-10-23",
"base": "USD",
"rates": {
"XAU": { "start_rate": 0.0002591613539, "end_rate": 0.0002501319446, "change": -0.000009029409258, "change_pct": -3.48409 },
"USDXAU": { "start_rate": 3858.6, "end_rate": 3997.89, "change": 139.29, "change_pct": 3.60986 }
}
}استخدم المفاتيح ذات البادئة مثل USDXAU لتغيّرات الأسعار، أما المفاتيح المقلوبة فتتحرك في الاتجاه المعاكس.
أشرطة OHLC اليومية
تُرجع /ohlc سعر الافتتاح والأعلى والأدنى والإغلاق ليوم واحد، وهو ما تحتاجه للرسوم البيانية الشمعية والنطاقات اليومية. للطلب GET /api/v1/ohlc?date=2026-10-22¤cies=XAU:
{
"success": true,
"ohlc": true,
"date": "2026-10-22",
"base": "USD",
"rates": {
"USDXAU": { "open": 3962.1, "high": 4012.75, "low": 3951.3, "close": 3989.4 },
"XAU": { "open": 0.0002523914086, "high": 0.0002530812644, "low": 0.000249205657, "close": 0.0002506642603 }
}
}التحويلات التاريخية
أضف date إلى /convert للتحويل بسعر إغلاق سابق. على سبيل المثال، هذه قيمة 10 أونصات تروي من الفضة باليورو في 1 أكتوبر 2026:
GET /api/v1/convert?api_key=YOUR_API_KEY&from=XAG&to=EUR&amount=10&date=2026-10-01تحليل الاتجاهات
من السهل تحويل استجابة /timeframe إلى سلسلة زمنية. يحسب هذا المثال المتوسط المتحرك البسيط لسعر الذهب على 20 يومًا:
// data = response of /timeframe?currencies=XAU
const series = Object.entries(data.rates)
.sort(([a], [b]) => a.localeCompare(b))
.map(([date, rates]) => ({ date, price: rates.USDXAU }));
function movingAverage(points, period) {
return points.slice(period - 1).map((point, i) => ({
date: point.date,
sma: points.slice(i, i + period).reduce((sum, p) => sum + p.price, 0) / period,
}));
}
const sma20 = movingAverage(series, 20);أسعار إغلاق الأيام الماضية لا تتغير أبدًا، لذا خزّنها بشكل دائم بدلًا من طلبها مرة أخرى. وحده شريط اليوم الحالي لا يزال يتحرك.
أدلة ذات صلة
هل أنت مستعد لبدء التطوير؟
أنشئ حسابًا مجانيًا للحصول على مفتاح API، أو استكشف جميع نقاط النهاية في مرجع API.