हर अलर्ट आपके टिक किए गए हर स्थान पर एक मैसेज भेजता है। अपने आप बनने वाले मैसेज में लिखा होता है कि क्या हुआ, उस पल कीमत क्या थी और क्या अलर्ट चालू रहेगा। इसमें अपने ट्रेडिंग प्लान से जुड़ा एक नोट जोड़ें, ताकि चार्ट खोलने से पहले ही आपको याद रहे कि आपकी योजना क्या थी। अपना अलर्ट और उसका मैसेज सेट करना आसान, तेज़ और सटीक है। इसे एडिटर में लिखें, या AI Trading Assistant से बोलकर या लिखकर कहें।
अगर आप अपना खुद का सॉफ़्टवेयर, Discord या Slack इस्तेमाल करते हैं, तो webhook हर अलर्ट को वहाँ भी भेज देता है, और आपको हाथ से कुछ भी कॉपी नहीं करना पड़ता। इस गाइड में दोनों चीज़ें समझाई गई हैं।
उदाहरण: EURUSD पर एक अलर्ट जो 5m चार्ट पर कीमत के 1.09 से ऊपर जाने पर ट्रिगर होता है।
ऑटोमैटिक मैसेज में क्या लिखा होता है
जब 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" (3 में से 2 शर्तें पूरी हुईं) लिखा होता है। जब सिर्फ़ एक शर्त पूरी होती है, जैसे 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.
कीमत और शर्त पहले से ही आपके शब्दों के नीचे वाली पंक्तियों में मौजूद हैं। अपने मैसेज का उपयोग उस बात के लिए करें जो वे पंक्तियाँ नहीं बता सकतीं, जैसे आपका ट्रेडिंग प्लान।
आपका लिखा गया मैसेज Alerts सूची में उस अलर्ट का नाम भी बन जाता है। अगर आपने कोई मैसेज नहीं लिखा है, तो सूची में शर्त से बना नाम दिखता है। प्राइस लेवल के लिए नाम छोटा होता है, जैसे "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"। अगर टाइमज़ोन गलत है, तो Your profile पेज पर Timezone के नीचे अपना टाइमज़ोन चुनें। जब 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}} |
हर वेरिएबल की वैल्यू भरने के बाद आपका मैसेज, या वह नाम जो Alerts सूची दिखाती है | 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}} होता है उसके नीचे ऑटोमैटिक पंक्तियाँ नहीं जुड़तीं, क्योंकि सारांश पहले ही बता देता है कि क्या हुआ।
ज़्यादातर 4CM-AI अलर्ट्स के लिए {{price}} और {{close}} खाली रहते हैं, क्योंकि उनमें कोई एक कीमत नहीं होती। {{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 होते हैं। ये दोनों अलर्ट और उस एक ट्रिगर की पहचान बताते हैं। इसके फ़ील्ड्स पर निर्भर रहने वाला कोई सिस्टम बनाने से पहले एक असली डिलीवरी को ज़रूर देखें।
बॉक्स के नीचे, एडिटर उस सर्वर का पता दिखाता है जहाँ से हमारे अनुरोध आते हैं। अगर आपका रिसीवर सिर्फ़ जाने-पहचाने पतों को ही स्वीकार करता है, तो इसे अपनी अनुमति सूची में जोड़ें।
पते की ज़रूरतें
मानक पोर्ट पर एक सार्वजनिक पता: http के लिए 80, https के लिए 443। अन्य पोर्ट्स, 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 समय होता है।
परिणाम जाँचना
अलर्ट के ट्रिगर होने का इंतज़ार करें, फिर Alerts पैनल का Log टैब खोलें।
आपके रिसीवर को जो मिला उसकी तुलना Log के रिकॉर्ड से करें: क्या हुआ, सिंबल और समय।
Log दिखाता है कि अलर्ट ट्रिगर हुआ था। यह नहीं दिखाता कि आपके रिसीवर ने मैसेज स्वीकार किया या नहीं, इसलिए अपने रिसीवर का अपना लॉग भी जाँचें। अगर आपको {{prices}} जैसे ब्रेसेज़ दिखते हैं, तो वेरिएबल की स्पेलिंग गलत है। अगर आपका रिसीवर बॉडी को अस्वीकार कर देता है, तो JSON की जाँच करें।
ध्यान रखने योग्य बातें
मैसेज आपके टिक किए गए हर स्थान पर जाता है। webhook बॉडी सिर्फ़ webhook पर जाती है।
Discord 1900 अक्षर तक और Slack 3000 अक्षर तक दिखाता है। इससे लंबा टेक्स्ट काट दिया जाता है।