إعداد تنبيه سعر الذهب والسلع بـ Python

شغّل نصًا برمجيًا قصيرًا وفق جدول زمني لقراءة السعر الفوري ومقارنته بمستواك. عند سعر الذهب $3,996.00 في 24 أكتوبر 2026، يخزّن أول استدعاء بحد $4,000 الحالة الابتدائية دون تنبيه. الأسعار مباشرة، وكل تشغيل يكلّف استدعاءً واحدًا.

نفّذ ذلك باستخدام واجهة API

  1. الحصول على مفتاح وضبط الحد احصل على مفتاح مجاني واحتفظ به في متغيّر البيئة NARWHAL_API_KEY. تستخدم Narwhal حسابًا واحدًا ومفتاح API واحدًا عبر واجهات بياناتها، وهو نفسه لـ REST وMCP. يرسله البرنامج النصي في الترويسة Authorization: Bearer YOUR_KEY ويقارن سعر الذهب بالدولار الأمريكي لكل أونصة تروي بـ THRESHOLD.
  2. حفظ برنامج Python النصي يقرأ الطلب price من نقطة نهاية السعر الفوري للذهب؛ ويُعد السعر المساوي لـ THRESHOLD أو الأعلى منه فوق الحد، والأقل منه تحته. يقارن البرنامج النصي هذا الجانب بالقيمة المحفوظة في gold_state.json، ويطبع تنبيهًا عندما يتغير الجانب، ثم يحفظ الحالة الجديدة ويطبع السعر.
    Python، تنبيه عند تجاوز الذهب 4,000
    import json, os, pathlib
    import requests
    
    THRESHOLD = 4000.00  # alert when gold crosses this level, in USD per troy ounce
    STATE = pathlib.Path("gold_state.json")  # remembers which side of the line we were on
    price = float(
        requests.get(
            "https://api.narwhalapi.com/v1/commodities/spot/XAU/USD",
            headers={"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"},
            timeout=10,
        ).json()["price"]
    )
    above = price >= THRESHOLD
    was_above = json.loads(STATE.read_text())["above"] if STATE.exists() else None
    if was_above is not None and above != was_above:
        print(
            f"ALERT: gold {'rose above' if above else 'fell below'} "
            f"{THRESHOLD:.2f} at {price:.2f}"
        )  # send an email or chat message here
    STATE.write_text(json.dumps({"above": above}))
    print(f"gold {price:.2f}")
  3. جدولة تشغيل النص البرمجي الأسعار الفورية مباشرة، لذا يمكن تشغيل الجدول بالوتيرة التي تريدها. طلب واحد يوميًا يعني نحو 30 استدعاءً في الشهر، بتكلفة نحو $0.09.
  4. ربط التنبيه برسالة سطر print داخل الشرط هو المكان الذي ترسل منه بريدًا إلكترونيًا أو رسالة دردشة. أبقِ ملف الحالة متاحًا بين الاستدعاءات المجدولة ليتمكن البرنامج النصي من مقارنة كل سعر بالجانب المحفوظ. وينبّه في الاتجاهين، فوق الحد بعد أن كان تحته، أو تحته بعد أن كان فوقه، ويُنفَّذ طبع السعر الأخير حتى عند عدم حدوث تجاوز.

الأسعار مباشرة، لذا استعلم بالقدر اللازم فقط لأن كل استعلام استدعاء يستهلك رصيدًا. وتستخدم مقارنة التجاوز الأسعار التي تعيدها تلك الطلبات. يرسل البرنامج النصي طلب سعر فوري في كل مرة يُستدعى فيها. اضبط الجدول خارج البرنامج النصي، فليس فيه حلقة جدولة. راجع جدولة جلب البيانات اليومي للاطلاع على الجدولة.

استخدم THRESHOLD لمستوى السعر وSTATE لمسار ملف JSON المحفوظ. المقارنة هي price >= THRESHOLD. ويستخدم نص التنبيه rose above عندما تكون above صحيحة (true) وfell below عندما تكون خاطئة (false). ويتضمن الحد والسعر المعاد معًا، فتحمل الرسالة المستوى الذي أطلق التنبيه والسعر المستخدم في المقارنة. ويحتوي JSON المحفوظ على قيمة above التي يقرؤها الاستدعاء التالي.

دون كود

في Zapier أو Make، ابدأ بمشغّل مجدول وأضف طلب HTTP إلى https://api.narwhalapi.com/v1/commodities/spot/XAU/USD. أرسل المفتاح في ترويسة Bearer ليستخدم الطلب حساب Narwhal الخاص بك. أضف مرشحًا على price المُرجَع، يليه إجراء بريد إلكتروني أو دردشة؛ يحدد المرشح ما إذا كان ذلك السعر يبلغ مستواك. الأسعار الفورية مباشرة، لذا يقارن كل تشغيل السعر الحالي. تستخدم ترويسة Bearer مفتاح Narwhal نفسه المستخدم في طلب Python، وتتشارك REST وMCP هذا المفتاح أيضًا.

للاطلاع على هذا المسار، راجع شرح Zapier أو شرح Make. يتضمن برنامج Python النصي حالة التجاوز المحفوظة؛ أما سير العمل بلا برمجة ففيه مرشّح للسعر وإجراء رسالة. قبل أن تعدّ هذين الشرطين تنبيهًا واحدًا، حدّد هل شرطك هو سعر فوق الحد أم تغيّر عن الجانب المحفوظ سابقًا.

متى تستخدم كل خيار

الحالةالخيار الأنسبالسبب
تنبيه بمستوى يوميالبرنامج النصي بجدول يومياستدعاء واحد في اليوم
تنبيه أسرعالنص البرمجي كل بضع دقائقالأسعار مباشرة؛ وكل تشغيل يكلّف استدعاءً واحدًا
تنبيه بلا برمجةZapier أو Make أو n8n مع خطوة طلب HTTPاستخدم طلب HTTP في سير العمل؛ ويمكن لـ Zapier وMake ترشيح السعر قبل إجراء البريد أو الدردشة.

كيف أعيد ضبط حالة التجاوز المحفوظة؟

احذف gold_state.json لإعادة ضبط الجانب المحفوظ. وعند غياب هذا الملف تكون قيمة was_above هي None، فلا يتحقق شرط التنبيه. ويخزّن البرنامج النصي جانب السعر المعاد بوصفه حالة البداية. لذا يعيد حذف الملف مقارنة التجاوز من البداية، ولا يجعل السعر الأول يطلق تنبيهًا.

هل يمكن لـ Webhook إرسال تنبيه سعر سلعة؟

لا تغطي webhooks في Narwhal مستويات الأسعار. فهي تنقل الإصدارات الاقتصادية ومنحنيات العائد وتقاويم العطلات وأحداث التنبؤات. وللحصول على حد سعري، استعلم عن السعر وفق جدول زمني. وتقع مقارنة السعر في النص البرمجي أو سير العمل الذي يقرأ تلك الأسعار.

هل يمكن بث تنبيه للنفط أو النحاس؟

النفط والنحاس متاحان عبر REST فقط، لذا استخدم الاستعلام الدوري لتلك التنبيهات. لا يمكن بث إلا المعادن XAU وXAG وXPT وXPD وأزواج الفوركس. ويعمل الاستعلام الدوري مع كل رموز الأسعار الفورية، ومنها XAU وXAG وXPT وXPD وXCU وBRENT وWTI.

مثال حسابي: الحد 4,000

ابدأ بسعر الذهب $3,996.00 في 24 أكتوبر 2026 وحدّ قدره $4,000. في هذا الاستدعاء الأول يكون السعر تحت الحد ولا يوجد جانب محفوظ. يخزّن البرنامج النصي false في ملف الحالة ويطبع gold 3996.00 من دون تنبيه.

فلنفترض مثلًا أن السعر $4,012.50 في اليوم 2 و$4,020 في اليوم 3. هذان السعران اللاحقان من اختلاقنا للتوضيح. في اليوم 2 يكون الجانب المحفوظ تحت الحد والجانب الجديد فوقه، فيطبع البرنامج النصي تنبيه التجاوز. وفي اليوم 3 يكون الجانب المحفوظ والجانب الجديد فوق الحد، فلا يتكرر التنبيه.

الاستدعاءسعر الذهبالجانب المحفوظ بعد الاستدعاءالتنبيه
اليوم 1، 24 أكتوبر 2026$3,996.00تحتلا شيء
اليوم 2، على سبيل المثال$4,012.50فوقALERT: gold rose above 4000.00 at 4012.50 (ناتج التنبيه)
اليوم 3، على سبيل المثال$4,020فوقلا شيء

نُشر في .

الخطوات التالية