شغّل نصًا برمجيًا قصيرًا وفق جدول زمني لقراءة السعر الفوري ومقارنته بمستواك. عند سعر الذهب $3,996.00 في 24 أكتوبر 2026، يخزّن أول استدعاء بحد $4,000 الحالة الابتدائية دون تنبيه. الأسعار مباشرة، وكل تشغيل يكلّف استدعاءً واحدًا.
نفّذ ذلك باستخدام واجهة API
- الحصول على مفتاح وضبط الحد احصل على مفتاح مجاني واحتفظ به في متغيّر البيئة
NARWHAL_API_KEY. تستخدم Narwhal حسابًا واحدًا ومفتاح API واحدًا عبر واجهات بياناتها، وهو نفسه لـ REST وMCP. يرسله البرنامج النصي في الترويسةAuthorization: Bearer YOUR_KEYويقارن سعر الذهب بالدولار الأمريكي لكل أونصة تروي بـTHRESHOLD. - حفظ برنامج Python النصي يقرأ الطلب
priceمن نقطة نهاية السعر الفوري للذهب؛ ويُعد السعر المساوي لـTHRESHOLDأو الأعلى منه فوق الحد، والأقل منه تحته. يقارن البرنامج النصي هذا الجانب بالقيمة المحفوظة فيgold_state.json، ويطبع تنبيهًا عندما يتغير الجانب، ثم يحفظ الحالة الجديدة ويطبع السعر.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}") - جدولة تشغيل النص البرمجي الأسعار الفورية مباشرة، لذا يمكن تشغيل الجدول بالوتيرة التي تريدها. طلب واحد يوميًا يعني نحو 30 استدعاءً في الشهر، بتكلفة نحو $0.09.
- ربط التنبيه برسالة سطر
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 | فوق | لا شيء |
نُشر في .