يرسل كل تنبيه رسالة واحدة إلى كل مكان حددته. والرسالة وحدها تذكر ما حدث، والسعر في تلك اللحظة، وما إذا كان التنبيه سيبقى نشطًا. أضف ملاحظة عن خطة تداولك لترى ما خططت له قبل أن تفتح الرسم البياني. وإعداد تنبيهك ورسالته بسيط وسريع ودقيق. اكتبها في المحرر، أو أخبر AI Trading Assistant أو اطلب منه بصوتك أو كتابةً.
وإذا كنت تستخدم برنامجك الخاص أو Discord أو Slack، فيمكن لعنوان webhook أن يرسل كل تنبيه إلى هناك أيضًا، دون أن تنسخ أي شيء يدويًا. ويشرح هذا الدليل الأمرين.
المثال: تنبيه على EURUSD يتم تشغيله عندما يتقاطع السعر صعودًا مع المستوى 1.09 على الرسم البياني 5m.
ما تقوله الرسالة التلقائية
عندما يكون حقل Message فارغًا، يكتب التنبيه رسالته بنفسه عند تشغيله. وفي المثال تكون الرسالة:
EURUSD crossed above 1.09
Price 1.0901.
This alert is now off. It was set to fire once.
يذكر السطر الأول ما حدث، بكلمات محرر التنبيهات. ويعطي السطر التالي أرقام تلك اللحظة. ويذكر السطر الأخير ما إذا كان التنبيه سيبقى نشطًا. والمثال يستخدم الخيار Once only، لذلك أصبح التنبيه متوقفًا الآن. ومع الخيارات الأخرى في إعداد Trigger، يكون السطر الأخير «This alert stays on.».
وتتبع التنبيهات الأخرى الترتيب نفسه. وهذه بعض الأسطر الأولى، وتحت كل منها سطر الأرقام:
خط: «GBPJPY touched 1h Resistance R1» ثم «Price 210.16, line at 210.20.»
اختراق خط: «GBPJPY broke above 1h Resistance R1» ثم «The 1h candle closed at 210.32, above the line at 210.20.»
مؤشر: «BTCUSD: 1h RSI(14) crossed above 70» ثم «RSI(14) was 71.4 when the 1h candle closed at 105240.50.»
تغيّر في التوقع: «GBPJPY: 1h forecast turned bearish» ثم «Before: bullish above 209.80. Now: bearish below 209.40.»
التنبيه الذي يضم عدة شروط يذكر عدد الشروط التي تحققت. ثم يعطي سطرًا لكل شرط تحقق:
BTCUSD: both conditions met
• Price crossed above 105000: the 1h candle closed at 105240.50
• 1h RSI(14) is above 55 (now 58.2)
This alert stays on.
ومع عدد أكبر من الشروط، يكون السطر الأول مثلًا «all 3 conditions met» أو «2 of 3 conditions met». وعندما يتحقق شرط واحد فقط، كما يحدث مع أداة الربط or، يذكر السطر الأول ذلك الشرط، ثم تأتي أرقامه.
كتابة الرسالة
افتح محرر التنبيهات وانتقل إلى علامة التبويب Options.
انقر على صف Message. فهو يعرض الكلمة Auto ما دام فارغًا. ويُفتح تحته حقل نصي.
اكتب رسالتك. ويتسع الحقل لما يصل إلى 400 حرف.
لإضافة قيمة لحظية، افتح قسم Available variables تحت الحقل. وانسخ المتغير كما هو تمامًا، مع أقواسه المعقوفة المزدوجة.

العبارة Automatic message: الحقل الفارغ. اكتب فيه كلماتك الخاصة، أو اتركه فارغًا.
السطر الذي تحت الحقل: «Leave it blank and the alert says what happened and at what price. A message of your own is sent first, with that under it.»، أي إذا تركت الحقل فارغًا يذكر التنبيه ما حدث وبأي سعر. وإذا كتبت رسالتك الخاصة فإنها تُرسل أولًا، ويأتي ذلك النص تحتها.
قسم Available variables: القيم اللحظية التي يمكنك إضافتها إلى رسالتك.
تصبح كلماتك السطر الأول، ويأتي النص التلقائي بعدها. وفي المثال، هذه الرسالة:
{{symbol}} on {{timeframe}}: check the 1h trend before entering.
تصل على هذا النحو:
EURUSD on 5m: check the 1h trend before entering.
EURUSD crossed above 1.09. Price 1.0901.
This alert is now off. It was set to fire once.
السعر والشرط موجودان أصلًا في الأسطر التي تحت كلماتك. فاستخدم رسالتك لما لا تستطيع تلك الأسطر قوله، مثل خطة تداولك.
والرسالة التي تكتبها هي أيضًا اسم التنبيه في قائمة التنبيهات. وإذا لم تكتب رسالة، تعرض القائمة اسمًا مأخوذًا من الشرط. ففي مستوى السعر يكون الاسم قصيرًا، مثل «EURUSD crossing up 1.09». أما الخط أو الشروط المتعددة فتظهر كما يكتبها المحرر، مثل «GBPJPY: 1h Price touches 1h Resistance R1». وعندما تغيّر الشرط، يتغير هذا الاسم معه. وعندما تفتح التنبيه من جديد، يبقى حقل Message فارغًا. والتنبيهات التي حفظتها من قبل بلا رسالة تعرض اسمها بهذه الصيغة أيضًا.
ما يعرضه كل مكان
يستقبل كل مكان الرسالة نفسها، معروضة بالطريقة التي تناسبه:
| المكان | ما يعرضه |
|---|---|
| الإشعار داخل التطبيق | السطر الأول بخط عريض، وتحته الأرقام. |
| Notify my devices | السطر الأول عنوانًا، وتحته الأسطر الأخرى. |
| Send to MetaTrader | السطر الأول عنوانًا، وتحته الأسطر الأخرى. ويعرض MetaTrader وقته الخاص بجانب الرسالة. |
| Telegram | الرسالة، والوقت حسب منطقتك الزمنية، ورابط إلى الرسم البياني. |
| Send email | الرسالة، مع التاريخ والوقت حسب منطقتك الزمنية. |
| Webhook URL | تستقبل خدمة Discord وخدمة Slack الرسالة مع الوقت بتوقيت UTC. ومع الخيار Raw JSON، يستقبل برنامجك المتغيرات المذكورة أدناه. |
يكتب Telegram الوقت بهذه الصيغة: «24 Sep, 11:02 London time». وإذا كانت المنطقة الزمنية غير صحيحة، فاختر منطقتك في حقل Timezone في صفحة Your profile. وعندما لا يعرف ForecastCity منطقتك الزمنية، يكون الوقت بتوقيت UTC.
والرابط في رسالة Telegram، أو في البريد الإلكتروني، أو في إشعار الهاتف، أو في النافذة المنبثقة في MetaTrader يفتح الرسم البياني لذلك الرمز مع لوحة Alerts. وفي أغلب تنبيهات 4CM-AI، يفتح الرسم البياني مع نافذة Alert observation الخاصة بذلك التشغيل.
إضافة قيم لحظية باستخدام المتغيرات
يُستبدل المتغير بقيمته عندما يتم تشغيل التنبيه. وهذه هي المتغيرات الموجودة في قسم Available variables:
| المتغير | ما يكتبه | مثال |
|---|---|---|
{{symbol}} |
الرمز | EURUSD |
{{price}}، والمتغير {{close}} |
السعر عند تشغيل التنبيه | 1.0901 |
{{condition_text}} |
ما حدث، بدون الرمز | Price crossed above 1.09 |
{{condition}} |
الشرط بصيغة برمجية مختصرة | CROSSING_UP 1.09 |
{{timeframe}} |
الإطار الزمني للتنبيه | 5m |
{{time_iso}} |
التاريخ والوقت بتوقيت UTC | 2026-09-24 10:02 UTC |
{{time}} |
الوقت نفسه في صورة عدد من الثواني، للبرامج | 1790244120 |
{{time_now}} |
لحظة إرسال الرسالة، في صورة رقم | 1790244121 |
{{exchange}} |
مصدر الأسعار | TwelveData |
{{status}} |
ما إذا كان التنبيه سيبقى نشطًا | This alert stays on. |
{{alert_url}} |
رابط إلى الرسم البياني لذلك الرمز، مع تنبيهاتك | عنوان ويب |
{{name}} |
رسالتك بعد استبدال كل متغير فيها بقيمته، أو الاسم الذي تعرضه قائمة التنبيهات | EURUSD crossing up 1.09 |
في الخط، يكون المتغير {{condition_text}} مثلًا «Price touched 1h Resistance R1». ومع عدة شروط، يجمع الشروط التي تحققت بكلمة and. وبعد تشغيل تنبيه مضبوط على الخيار Once only، يكون المتغير {{status}} «This alert is now off. It was set to fire once.». وفي التنبيه ذي الشروط المتعددة، أو تنبيه الخط، أو تنبيه المؤشر، يكون المتغير {{condition}} هو TREE. وهذا المتغير كود مخصص للبرامج.
في تنبيهات 4CM-AI، المتغير {{forecast_summary}} يلخّص ما حدث في التوقع، والمتغير {{forecast_symbol}} يذكر رمز التوقع. أما المتغير {{forecast_cycle}} فهو عدّاد يزيد في كل مرة يبدأ فيها التنبيه المراقبة من جديد. والرسالة التي تتضمن المتغير {{forecast_summary}} لا تُضاف تحتها أسطر تلقائية، لأن الملخص يذكر ما حدث أصلًا.
المتغير {{price}} والمتغير {{close}} يبقيان فارغين في معظم تنبيهات 4CM-AI، لأن هذه التنبيهات ليس لها سعر واحد. والمتغير {{time_iso}} يستخدم توقيت UTC، لذا قد يختلف عن الساعة على شاشتك. أما المتغير غير الموجود فيبقى كما كتبته تمامًا: فالمتغير {{prices}} المكتوب خطأً يصل كما هو {{prices}}.
إرسال التنبيهات إلى عنوان webhook
الإرسال عبر webhook يوصل كل تنبيه إلى عنوان ويب، حيث يستقبله برنامجك الخاص أو قناة على Discord أو قناة على Slack. ويجب أن تشمل خطة اشتراكك ميزة webhook.
في علامة التبويب Options، في قسم Notifications، حدّد مربع Webhook URL. فيظهر حقل العنوان، وإعداد Format، وحقل المتن.
الصق العنوان الذي يستمع إليه المستقبِل لديك. ويجب أن تكون بدايته
http://أوhttps://.اضبط إعداد Format على Raw JSON، واترك حقل المتن فارغًا.
اضغط على زر Create، أو على زر Save إذا عدّلت تنبيهًا موجودًا.

العنوان الذي يستمع إليه المستقبِل لديك. استخدم المنافذ القياسية: المنفذ 80 أو المنفذ 443.
إعداد Format: الخيار Raw JSON لبرنامجك الخاص، أو الخيار Discord أو الخيار Slack لهاتين الخدمتين.
عندما يكون حقل المتن فارغًا، يستقبل المستقبِل لديك كائن JSON فيه كل متغيرات الجدول، إضافةً إلى المفتاح alertId والمفتاح triggerId. ويحدّد هذان المفتاحان التنبيه ومرة التشغيل هذه تحديدًا. واطّلع على رسالة واحدة وصلت فعلًا قبل أن تبني أي شيء يعتمد على مفاتيحها.
يعرض المحرر تحت الحقل عنوان الخادم الذي تصدر منه طلباتنا. أضفه إلى قائمة السماح إذا كان المستقبِل لديك لا يقبل إلا عناوين معروفة.
متطلبات العنوان
عنوان عام على منفذ قياسي: المنفذ 80 للبروتوكول http، والمنفذ 443 للبروتوكول https. ولا تُرسل الرسائل الموجهة إلى منافذ أخرى، أو إلى localhost، أو إلى عنوان في شبكة خاصة.
لا اسم مستخدم ولا كلمة مرور داخل العنوان.
ردّ خلال 3 ثوانٍ، من العنوان نفسه. وإعادة التوجيه إلى عنوان آخر تُعدّ فشلًا.
لا يتحقق المحرر إلا من أن بداية العنوان هي http:// أو https://. أما المتطلبات الأخرى فيُتحقق منها عند إرسال الرسالة، لذا اختبر عنوانك بتنبيه حقيقي. وفي تنبيهات السعر والتنبيهات الفنية، إذا واجه المستقبِل لديك خطأً مؤقتًا، تُعاد محاولة إرسال الرسالة مرتين إضافيتين على الأكثر. أما رسالة تنبيه 4CM-AI فلا يُعاد إرسالها بعد انتهاء المهلة أو حدوث خطأ في الخادم، لأن المستقبِل لديك ربما تصرّف بناءً عليها بالفعل.
كتابة متن webhook الخاص بك
يقبل حقل المتن قالبًا بالمتغيرات نفسها التي تستخدمها الرسالة. ويتسع لما يصل إلى 2000 حرف. ويسمح لك الحقل بكتابة أكثر من ذلك، لكن المتن الأطول يُرفض عند الحفظ.
مع الخيار Raw JSON، يمكن أن يستقبل المستقبِل الذي ينتظر كائنًا صغيرًا هذا المتن:
{"symbol":"{{symbol}}","condition":"{{condition_text}}","time":"{{time_iso}}","source":"ForecastCity"}
تُملأ المتغيرات كنص عادي. والقيمة التي تحتوي على علامات تنصيص أو فاصل أسطر قد تُفسد بنية JSON لديك. والمتن الذي ليس JSON صالحًا يُرسل كنص عادي.
لقناة على Discord، اضبط إعداد Format على Discord واستخدم عنوان webhook الخاص بالقناة. ثم اكتب سطرًا قصيرًا في حقل المتن، مثل:
{{symbol}}: {{condition_text}}. Open your alerts: {{alert_url}}
وفي حالة Slack، اختر الخيار Slack واكتب بالطريقة نفسها. ويضع ForecastCity نصك في الصيغة التي تتوقعها كل خدمة. وإذا كان الحقل فارغًا، تستقبل الخدمتان رسالة التنبيه كما ظهرت أعلاه، مع الوقت بتوقيت UTC في سطرها الأخير.
التحقق من النتيجة
انتظر حتى يتم تشغيل التنبيه، ثم افتح علامة التبويب Log في لوحة Alerts.
قارن ما استقبله المستقبِل لديك بالإدخال في Log: ما حدث، والرمز، والوقت.
يُظهر Log أن التنبيه تم تشغيله. لكنه لا يُظهر ما إذا كان المستقبِل لديك قد قبل الرسالة، لذا راجع سجل المستقبِل نفسه أيضًا. وإذا رأيت أقواسًا معقوفة مثل {{prices}}، فهناك اسم متغير مكتوب خطأً. وإذا رفض المستقبِل لديك المتن، فتحقّق من صحة JSON.
معلومات مفيدة
الرسالة تذهب إلى كل مكان حددته. أما متن webhook فلا يذهب إلا إلى عنوان webhook.
يعرض تطبيق Discord ما يصل إلى 1900 حرف، ويعرض تطبيق Slack ما يصل إلى 3000 حرف. ويُقطع النص الأطول.