نسبة الذهب إلى الفضة: ما هي وكيف تحسبها
ما الذي تقيسه نسبة الذهب إلى الفضة، وكيف تحسبها من أسعار الذهب والفضة اللحظية، وكيف ترسم سجلها التاريخي عبر واجهة API باستخدام Python وJavaScript.
ما نسبة الذهب إلى الفضة؟
نسبة الذهب إلى الفضة هي عدد أونصات التروي من الفضة اللازمة لشراء أونصة تروي واحدة من الذهب. وتحصل عليها بقسمة سعر الذهب على سعر الفضة، بالعملة نفسها وللوزن نفسه. وبالأسعار النموذجية المستخدمة في توثيق MetalAPI كله، أي 3,997.89 دولارًا أمريكيًا للذهب و53.94 دولارًا أمريكيًا للفضة لكل أونصة تروي، تبلغ النسبة نحو 74.1: فعند هذه الأسعار تعادل أونصة الذهب الواحدة قرابة 74 أونصة من الفضة.
ولأن السعرين بالعملة نفسها، فإن العملة تُلغى في القسمة وتصبح النسبة بلا وحدة، وهذا ما يجعلها طريقة موجزة للمقارنة المباشرة بين المعدنين. وتُقرأ على النحو التالي:
- ارتفاع النسبة يعني أن الذهب تقدّم على الفضة نسبيًا: إما أن الذهب ارتفع أكثر من الفضة، أو انخفض أقل منها.
- انخفاض النسبة يعني أن الفضة تقدّمت على الذهب نسبيًا.
- لا تقول النسبة شيئًا عن اتجاه أي من السعرين بمفرده. فقد يهبط المعدنان معًا بينما ترتفع النسبة، وقد يرتفعان معًا بينما تنخفض.
تتناول الأقسام التالية كيفية حساب النسبة بشكل صحيح، ولماذا لا تهم عملة الأساس، وكيفية تتبعها ورسمها بيانيًا باستخدام واجهة MetalAPI REST.
هذه مقالة تعليمية حول تعريف النسبة وطريقة حسابها، وليست نصيحة مالية أو استثمارية، والأسعار الواردة فيها قيم نموذجية من توثيق MetalAPI، وليست بيانات سوق.
كيف تحسب نسبة الذهب إلى الفضة
المعادلة عملية قسمة واحدة:
gold/silver ratio = gold price ÷ silver price (same currency, same unit)
3,997.89 ÷ 53.94 ≈ 74.12
silver/gold ratio = 1 ÷ 74.12 ≈ 0.0135 (ounces of gold per ounce of silver)القسمة نفسها بسيطة؛ أما المدخلات فهي موضع الأخطاء:
- الوحدة نفسها للمعدنين. اقسم سعرًا لكل أونصة على سعر لكل أونصة، أو سعرًا لكل غرام على سعر لكل غرام. فقسمة سعر الذهب لكل غرام على سعر الفضة لكل أونصة تروي تُخطئ بمعامل 31.1، وهو عدد الغرامات في أونصة التروي (31.1034768).
- اللحظة نفسها. خذ السعرين من الاستجابة نفسها أو من إغلاق اليوم نفسه. فقسمة سعر ذهب لحظي على سعر إغلاق الفضة بالأمس تخلط بين حالتين مختلفتين للسوق.
- نوع السعر نفسه. اقسم سعرًا وسطيًا على سعر وسطي، أو سعر إغلاق على سعر إغلاق. فخلط سعر البيع لدى تاجر لأحد المعدنين مع السعر الفوري للآخر يضيف فارق التاجر وعلاوته إلى النسبة.
- قرّب في النهاية. اقسم الأسعار غير المقرّبة، ولا تقرّب النسبة إلا للعرض، إلى منزلة عشرية واحدة أو اثنتين عادةً.
في استجابة MetalAPI، الأسعار هي المفاتيح المسبوقة بعملة الأساس: USDXAU وUSDXAG مع عملة الأساس الافتراضية USD. أما المفتاحان المجردان XAU وXAG فهما معكوسان (أونصات لكل دولار). وقسمة XAG على XAU تعطي النسبة نفسها، لكن قراءة المفاتيح المسبوقة تتجنب معاملة المعكوس كأنه سعر.
لماذا لا تهم عملة الأساس
يُسعَّر الذهب والفضة عادةً بالدولار الأمريكي، لكن النسبة واحدة في كل العملات. فمع base=EUR، يعبّر MetalAPI عن السعرين باليورو بقسمة سعري الدولار على سعر اليورو الواحد بالدولار، وهذا المعامل المشترك يُلغى في القسمة:
EURXAU = USDXAU ÷ USDEUR
EURXAG = USDXAG ÷ USDEUR
EURXAU ÷ EURXAG = USDXAU ÷ USDXAGيحسب MetalAPI جميع أسعار الصرف التقاطعية من لقطة واحدة، لذا فإن base=EUR أو base=INR أو base=JPY تعطي النسبة نفسها التي يعطيها الدولار، باستثناء التقريب في آخر الأرقام المعنوية العشرة. والأمر نفسه ينطبق على unit: فمع unit=gram يُقسم سعرا المعدنين كلاهما على 31.1034768 ولا تتغير النسبة.
تصبح العملة مهمة عندما يأتي السعران من مصدرين أو وقتين مختلفين، كسعر للذهب بعملة ما وسعر للفضة أُخذ بعد ساعات بعملة أخرى: عندئذٍ لا يُلغى سعر الصرف تمامًا. وأخذ السعرين من استجابة واحدة يتجنب ذلك.
يمكنك أيضًا أن تترك القسمة للواجهة. يقبل base أي رمز مدعوم، بما في ذلك المعادن. فمع base=XAG، يُعبَّر عن كل سعر بأونصات التروي من الفضة، لذا فإن XAGXAU، أي سعر أونصة الذهب الواحدة بالفضة، هو النسبة نفسها:
curl "https://metalapi.com/api/v1/latest?base=XAG¤cies=XAU" \
-H "X-API-Key: $METALAPI_KEY"وفي تلك الاستجابة، المفتاح المجرد XAU هو المعكوس: أونصات الذهب لكل أونصة فضة. أما بقية هذه المقالة فتحسب النسبة من سعري الدولار بدلًا من ذلك، لأنك تريد عادةً عرض السعرين أو تخزينهما بجوارها.
احصل على نسبة الذهب إلى الفضة الحالية من الواجهة
يُرجع طلب /latest واحد مع currencies=XAU,XAG السعرين من اللقطة نفسها ويُحتسب طلبًا واحدًا. في Node.js 18 أو أحدث، احفظ هذا باسم ratio.mjs وشغّل node ratio.mjs:
const params = new URLSearchParams({ currencies: "XAU,XAG" });
const res = await fetch(`https://metalapi.com/api/v1/latest?${params}`, {
headers: { "X-API-Key": process.env.METALAPI_KEY },
signal: AbortSignal.timeout(10_000),
});
const data = await res.json();
if (!data.success) {
throw new Error(`MetalAPI ${data.error.code} (${data.error.type}): ${data.error.info}`);
}
const gold = data.rates[`${data.base}XAU`];
const silver = data.rates[`${data.base}XAG`];
const ratio = gold / silver;
const asOf = new Date(data.timestamp * 1000).toISOString();
console.log(`Gold: ${gold} ${data.base} per troy ounce`);
console.log(`Silver: ${silver} ${data.base} per troy ounce`);
console.log(`Gold/silver ratio: ${ratio.toFixed(2)} (data from ${asOf})`);بالأسعار النموذجية، يطبع السطر الأخير نسبة قدرها 74.12. وتتبع حداثة البيانات فترة التحديث في خطتك: يوميًا في Free، وكل 30 دقيقة في Lite، وكل 10 دقائق في Standard، وكل 60 ثانية في Advanced وPro، وصولًا إلى 5 ثوانٍ في Enterprise. ومن الجمعة الساعة 17:00 حتى الأحد الساعة 17:00 بتوقيت نيويورك تكون السوق الفورية مغلقة وتبقى النسبة عند إغلاق الجمعة.
النسبة المستخرجة من /latest نسبة بين سعرين وسطيين. وإذا أردت السعر الذي يمكن فعلًا مبادلة المعدن به، فاستخدم سعري الطلب والعرض، المتاحين من خطة Standard فما فوق بإضافة XAU-BID وXAU-ASK وXAG-BID وXAG-ASK إلى currencies:
- بيع أونصة ذهب واحدة بسعر الطلب يشتري
USDXAU-BID ÷ USDXAG-ASKأونصة من الفضة. - شراء أونصة ذهب واحدة بالفضة يتطلب
USDXAU-ASK ÷ USDXAG-BIDأونصة من الفضة.
وكلا الرقمين أقل ملاءمة من النسبة الوسطية بمقدار الفارقين، وتُضاف إليهما علاوات التاجر نفسه. ويشرح مقال السعر الفوري والطلب والعرض والفارق كيف تُبنى هذه الأسعار.
كيف ترسم السجل التاريخي لنسبة الذهب إلى الفضة
للرسم البياني التاريخي تحتاج إلى أسعار الإغلاق اليومية للمعدنين. وتُرجعها /timeframe (واسمها البديل /timeseries) لنطاق من التواريخ في طلب واحد: حتى 30 يومًا لكل طلب في خطة Free و365 يومًا في الخطط المدفوعة. ويبدأ السجل اليومي للمعادن في عام 2000، ويمكن لكل خطة الاستعلام عنه كله؛ ولا تختلف الخطط إلا في عدد الأيام التي يمكن أن يغطيها طلب واحد.
يُنزّل سكربت Python هذا السنوات الخمس الأخيرة على دفعات من 365 يومًا (خمسة طلبات)، ويحسب النسبة لكل يوم يتوفر فيه السعران، ويكتب ملف CSV، ويطبع بعض الإحصاءات، ويحفظ رسمًا بيانيًا مع متوسط متحرك لمدة 50 يومًا. وفي خطة Free، اضبط MAX_DAYS = 30 وDAYS_BACK = 90، وهذا يتطلب ثلاثة طلبات.
import csv
import os
import statistics
from datetime import date, datetime, timedelta, timezone
import matplotlib.pyplot as plt
import requests
API = "https://metalapi.com/api/v1"
MAX_DAYS = 365 # longest range per request: 365 on paid plans, 30 on Free
DAYS_BACK = 5 * 365 # on Free, keep this to a few months
session = requests.Session()
session.headers["X-API-Key"] = os.environ["METALAPI_KEY"]
def daily_closes(start: date, end: date) -> dict:
"""Daily closes of gold and silver from start to end (inclusive), keyed by date."""
rates = {}
while start <= end:
chunk_end = min(start + timedelta(days=MAX_DAYS), end)
r = session.get(
f"{API}/timeframe",
params={"start_date": start.isoformat(), "end_date": chunk_end.isoformat(), "currencies": "XAU,XAG"},
timeout=30,
)
data = r.json()
if not data["success"]:
err = data["error"]
raise RuntimeError(f"MetalAPI {err['code']} ({err['type']}): {err['info']}")
rates.update(data["rates"])
start = chunk_end + timedelta(days=1)
return rates
end = datetime.now(timezone.utc).date() - timedelta(days=1) # yesterday's close is final
rates = daily_closes(end - timedelta(days=DAYS_BACK), end)
rows = []
for day in sorted(rates):
values = rates[day]
if "USDXAU" in values and "USDXAG" in values: # skip days that lack either metal
gold, silver = values["USDXAU"], values["USDXAG"]
rows.append((day, gold, silver, gold / silver))
with open("gold-silver-ratio.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["date", "gold_usd_oz", "silver_usd_oz", "ratio"])
writer.writerows(rows)
ratios = [r[3] for r in rows]
print(f"{len(rows)} trading days, {rows[0][0]} to {rows[-1][0]}")
print(f"latest {ratios[-1]:.2f}, min {min(ratios):.2f}, max {max(ratios):.2f}, median {statistics.median(ratios):.2f}")
window = 50
days = [date.fromisoformat(r[0]) for r in rows]
moving = [sum(ratios[i - window + 1 : i + 1]) / window for i in range(window - 1, len(ratios))]
plt.figure(figsize=(10, 4))
plt.plot(days, ratios, linewidth=1, label="Gold/silver ratio")
plt.plot(days[window - 1 :], moving, linewidth=1, label=f"{window}-day moving average")
plt.ylabel("Ounces of silver per ounce of gold")
plt.legend()
plt.tight_layout()
plt.savefig("gold-silver-ratio.png", dpi=150)بعض التفاصيل مقصودة:
- يمر على التواريخ المُرجَعة، لا على أيام التقويم. إذ تستبعد
/timeframeعطلات نهاية الأسبوع وعطلات السوق. - ينتهي عند تاريخ الأمس بتوقيت UTC. فبيانات اليوم لا تزال تتحرك، وقيمة
end_dateالواقعة في المستقبل تُرجع الخطأ205. - يخزّن السعرين بجوار النسبة، لتتمكن من التحقق من أي صف دون التنزيل مجددًا.
- الإحصاءات لا تصف إلا الفترة التي نزّلتها. غيّر
DAYS_BACKوستتغير معها.
والسلسلة نفسها في JavaScript ليست سوى map واحدة على الكائن rates في استجابة /timeframe، مثلًا من الدالة المساعدة للنطاقات في دليل البيانات التاريخية:
// rates = the "rates" object of /timeframe?currencies=XAU,XAG
const series = Object.entries(rates)
.filter(([, r]) => r.USDXAU && r.USDXAG)
.sort(([a], [b]) => a.localeCompare(b))
.map(([day, r]) => ({ day, gold: r.USDXAU, silver: r.USDXAG, ratio: r.USDXAU / r.USDXAG }));أسعار إغلاق الأيام الماضية لا تتغير، لذا نزّل النطاق مرة واحدة ثم أكمله بطلب قصير لأحدث الأيام. ولملء البيانات الكامل حتى عام 2000 (نحو 27 طلبًا في خطة مدفوعة)، وأرشيف SQLite، ورسم بياني بمكتبة matplotlib للذهب مع النسبة، راجع مقال أسعار الذهب والفضة التاريخية عبر API.
أسعار المعادن قبل أكتوبر 2026 مشتقة من العقود الآجلة للشهر الأقرب، لذا قد تختلف قليلًا عن الأسعار الفورية في اليوم نفسه. والمعدنان مشتقان بالطريقة نفسها، لكن ضع ذلك في اعتبارك عند مقارنة سلسلتك برسم بياني للنسبة من مصدر آخر.
كيف يستخدم الناس نسبة الذهب إلى الفضة
النسبة مقياس نسبي. فهي تصف كيف تحرك الذهب والفضة أحدهما مقابل الآخر، لا إلى أين يتجه أي منهما. ومن استخداماتها الشائعة:
- الأداء النسبي. النسبة في نهاية فترة مقسومة على النسبة في بدايتها تساوي معامل نمو الذهب مقسومًا على معامل نمو الفضة. فارتفاع النسبة بنسبة 5% يعني أن الذهب كسب 5% مقارنةً بالفضة خلال تلك الفترة، أيًا كان ما فعله السعران بالأرقام المطلقة.
- سياق في لوحات المعلومات والتقارير. تعرض أدوات تتبع الأسعار ومواقع التجار والنشرات البريدية النسبة بجوار السعرين؛ ويوفّرها طلب
/latestنفسه دون تكلفة إضافية. - المقارنة بماضيها. يقارن بعض الناس النسبة الحالية بمتوسطها أو وسيطها أو نطاقها خلال فترة يختارونها، لوصف ما إذا كانت مرتفعة أو منخفضة نسبةً إلى تلك الفترة. ويطبع السكربت أعلاه هذه الأرقام لأي نطاق تنزّله.
- المبادلة بين المعدنين. يبادل بعض حائزي المعادن المادية الذهب بالفضة، أو العكس، عندما تبلغ النسبة مستوى حددوه مسبقًا. وما إذا كان ذلك سيترك لهم معدنًا أكثر يتوقف على تحرك النسبة لاحقًا في الاتجاه الذي توقعوه، وهو أمر لا يضمنه شيء، وكل مبادلة تدفع فوارق التجار وعلاواتهم الموصوفة أعلاه.
- نسب أخرى. تنجح القسمة نفسها مع أي سعرين بالعملة نفسها: الذهب إلى البلاتين (
USDXAU ÷ USDXPT)، أو الذهب إلى النفط (USDXAU ÷ USDWTI، أي براميل النفط لكل أونصة ذهب). وفي النسب بين فئات أصول مختلفة اتركunitعلى قيمتها الافتراضية، لأنunitيغيّر أسعار المعادن لكنه لا يغيّر أسعار الطاقة.
لا يمثّل أي من هذه الاستخدامات تنبؤًا. فليس للنسبة مستوى طبيعي ثابت يجب أن تعود إليه، والقراءة المرتفعة أو المنخفضة ليست بحد ذاتها سببًا لشراء أي من المعدنين أو بيعه. وإذا كنت تتخذ قرارات استثمارية، فاستشر مستشارًا ماليًا مؤهلًا.
تتبّع نسبة الذهب إلى الفضة في تطبيقك
أنشئ حسابًا مجانيًا لتحصل على مفتاح API. وتكفي الطلبات الـ100 شهريًا والأسعار اليومية والنطاقات حتى 30 يومًا في خطة Free لحساب نسبة يومية وبضعة أشهر من السجل. وتضيف الخطط المدفوعة أسعارًا أحدث، ونطاقات حتى 365 يومًا لملء البيانات الطويل، وأسعار الطلب والعرض من خطة Standard فما فوق؛ وقارن بينها في صفحة الأسعار. ولأسعار الفضة وحدها، راجع دليل واجهة API لأسعار الفضة.
الأسئلة الشائعة
ماذا تعني نسبة ذهب إلى فضة قدرها 74؟
تعني أن أونصة تروي واحدة من الذهب تكلّف ما تكلّفه نحو 74 أونصة تروي من الفضة بالأسعار المستخدمة. وهي تصف السعر النسبي للمعدنين فقط، ولا تخبرك ما إذا كان أي منهما غاليًا أو رخيصًا بأي معنى مطلق.
هل نسبة الذهب إلى الفضة واحدة في كل العملات والوحدات؟
نعم، ما دام السعران من اللحظة نفسها وللوزن نفسه، لأن العملة والوحدة تُلغيان في القسمة. ويشتق MetalAPI جميع العملات والوحدات من لقطة واحدة، لذا فإن أي base وأي unit يعطيان النسبة نفسها، باستثناء فروق تقريب ضئيلة.
كم مرة تتغير نسبة الذهب إلى الفضة؟
كلما تحرك أحد السعرين، أي باستمرار ما دامت الأسواق مفتوحة. وعبر الواجهة تراها وفق فترة التحديث في خطتك، من مرة يوميًا في Free إلى كل 5 ثوانٍ في Enterprise. وتبقى عند قيمة الجمعة خلال عطلة نهاية الأسبوع.
إلى أي مدى في الماضي يمكنني حساب النسبة؟
تعود أسعار الإغلاق اليومية للذهب والفضة إلى عام 2000 في كل الخطط. ويغطي طلب /timeframe الواحد حتى 30 يومًا في Free و365 يومًا في الخطط المدفوعة، لذا يتطلب السجل الكامل نحو 27 طلبًا في خطة مدفوعة. والأسعار قبل أكتوبر 2026 مشتقة من العقود الآجلة للشهر الأقرب.
هل ارتفاع نسبة الذهب إلى الفضة إشارة لشراء الفضة؟
لا تقدّم هذه المقالة نصيحة استثمارية. فارتفاع النسبة يعني فقط أن الذهب غالٍ نسبةً إلى الفضة مقارنةً بالفترة التي تقارن بها، أيًا كانت. ولا يتنبأ بكيفية تحرك أي من السعرين، أو النسبة نفسها، بعد ذلك.
جرّبه مع بياناتك الخاصة
أنشئ حسابًا مجانيًا وأرسل طلبك الأول في أقل من دقيقتين. 100 طلب شهريًا، دون بطاقة ائتمان.
تابع القراءة
معنى XAU/USD: ماذا تعني الرموز XAU وXAG وXPT وXPD
شرح معنى XAU/USD: لماذا يملك الذهب رمز عملة في ISO 4217، وماذا تعني XAG وXPT وXPD، وكيف تقرأ اتجاه التسعير في الأسعار وفي بيانات واجهة API.
واجهة API مجانية لأسعار الذهب: ماذا تقدّم 100 طلب شهريًا
شرح صريح لواجهة API مجانية لأسعار الذهب: ما الذي تتضمنه خطة Free في MetalAPI، وكيف تكفي 100 طلب شهريًا بالتخزين المؤقت والتجميع، ومتى تنتقل إلى خطة مدفوعة.
واجهة API لأسعار الذهب في Python: الجلب والتخزين المؤقت والرسم
استخدم واجهة API لأسعار الذهب في Python: اجلب الأسعار اللحظية عبر requests، وعالج الأخطاء، وخزّن الاستجابات مؤقتًا، وارسم سلسلة زمنية بـ pandas وmatplotlib.