هر هشدار یک پیام را به همهی مقصدهایی که تیک زدهاید میفرستد. پیام خودکار نام نماد و شرط را میآورد. اگر میخواهید پیام چیزهای بیشتری داشته باشد، پیام خودتان را بنویسید: تایمفریم، قیمت در همان لحظه، یا یادداشتی دربارهی برنامهی معاملاتیتان.
اگر از نرمافزار خودتان، Discord یا Slack استفاده میکنید، وبهوک هر هشدار را به آنجا هم میفرستد. این راهنما هر دو را توضیح میدهد.
مثال: هشداری روی EURUSD که وقتی قیمت در چارت 5m از 1.09 رو به بالا عبور کند، فعال میشود. قیمتهای این راهنما مثالاند، نه توصیه.
نوشتن پیام
ویرایشگر هشدار را باز کنید و به تب Options بروید.
روی ردیف Message کلیک کنید. تا وقتی این ردیف خالی است، Auto را نشان میدهد. یک کادر متن زیر آن باز میشود.
پیامتان را بنویسید. این کادر حداکثر 400 کاراکتر جا دارد.
برای افزودن یک مقدار لحظهای، بخش Available variables را زیر کادر باز کنید. متغیر را دقیقاً همانطور که هست، همراه با آکولادهای دوتاییاش، کپی کنید.
برای مثال، این پیام:
{{symbol}} crossed 1.09 on {{timeframe}}. Price {{price}} at {{time_iso}}. Check the 1h trend.
اینطور میرسد:
EURUSD crossed 1.09 on 5m. Price 1.0901 at 2026-09-24 10:02 UTC. Check the 1h trend.
برای فرستادن پیام خودکار، کادر را خالی بگذارید. در مثال ما، پیام خودکار این است: «EURUSD crossing up 1.09». در هشداری با چند شرط، پیام خودکار فقط تعداد شرطها را میگوید، مثلاً «EURUSD multi-condition (2 rules)». در این حالت پیام خودتان را بنویسید تا با یک نگاه بفهمید کدام هشدار فعال شده است.
این پیام در فهرست هشدارها، نام هشدار هم هست.
افزودن مقدارهای لحظهای با متغیرها
وقتی هشدار فعال میشود، هر متغیر با مقدار خودش جایگزین میشود. متغیرهای بخش 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 is still active and can trigger again |
{{alert_url}} |
لینکی که هشدارهای شما را باز میکند | یک آدرس وب |
{{name}} |
متن پیام شما، همانطور که نوشتهاید | متن خودتان |
در هشدارهای 4CM-AI، متغیر {{forecast_summary}} خلاصهای از آنچه در پیشبینی رخ داده است مینویسد و متغیر {{forecast_symbol}} نماد پیشبینی را میآورد. متغیر {{forecast_cycle}} شمارندهای است که هر بار که هشدار دوباره پایش را شروع میکند، یکی بالا میرود.
متغیرهای {{price}} و {{close}} در بیشتر هشدارهای 4CM-AI خالی میمانند، چون این هشدارها قیمت واحدی ندارند. متغیر {{time_iso}} از UTC استفاده میکند، پس ممکن است با ساعت روی صفحهی شما فرق داشته باشد. متغیری که وجود نداشته باشد، دقیقاً همانطور که نوشتهاید باقی میماند: {{prices}} که غلط نوشته شده، به همان شکل {{prices}} میرسد.
فرستادن هشدارها به وبهوک
وبهوک هر هشدار را به یک آدرس وب میفرستد و آنجا نرمافزار خودتان، یک کانال Discord یا یک کانال Slack آن را دریافت میکند. هزینهی آن 2 اعتبار برای هر پیام است. اگر اعتبار حساب کافی نباشد، آن پیام فرستاده نمیشود. خود هشدار همچنان فعال میشود و در تب Log میآید. پلن شما هم باید وبهوک را شامل شود.
در تب 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 ثانیه، از خود همان آدرس. هدایت (redirect) به آدرسی دیگر، ناموفق حساب میشود.
ویرایشگر فقط بررسی میکند که آدرس با http:// یا https:// شروع شود. شرایط دیگر هنگام فرستادن پیام بررسی میشوند، پس آدرس خود را با یک هشدار واقعی آزمایش کنید. در هشدارهای قیمتی و تکنیکال، اگر گیرندهی شما خطای موقتی داشته باشد، پیام حداکثر دو بار دیگر فرستاده میشود. پیام هشدار 4CM-AI پس از تمام شدن مهلت پاسخ (timeout) یا خطای سرور دوباره فرستاده نمیشود، چون ممکن است گیرندهی شما قبلاً بر اساس آن کاری انجام داده باشد.
نوشتن بدنهی دلخواه وبهوک
در کادر بدنه میتوانید متنی با همان متغیرهای پیام بنویسید. این کادر حداکثر 2000 کاراکتر جا دارد. کادر اجازه میدهد بیشتر بنویسید، ولی بدنهی طولانیتر هنگام ذخیره پذیرفته نمیشود.
برای قالب Raw JSON، گیرندهای که یک شیء کوچک انتظار دارد میتواند این بدنه را دریافت کند:
{"symbol":"{{symbol}}","condition":"{{condition_text}}","time":"{{time_iso}}","source":"ForecastCity"}
متغیرها بهصورت متن ساده جایگذاری میشوند. مقداری که علامت نقلقول یا سطر جدید در خود داشته باشد، میتواند JSON شما را خراب کند. بدنهای که JSON معتبر نباشد، بهصورت متن ساده فرستاده میشود.
برای یک کانال Discord، کادر Format را روی Discord بگذارید و از آدرس وبهوک همان کانال استفاده کنید. سپس یک متن کوتاه یکسطری در کادر بدنه بنویسید، مثلاً:
{{symbol}}: {{condition_text}}. Open your alerts: {{alert_url}}
برای Slack، گزینهی Slack را انتخاب کنید و به همین شکل بنویسید. ForecastCity متن شما را به شکلی درمیآورد که هر سرویس انتظار دارد. اگر کادر خالی باشد، هر دو سرویس نماد، پیام شما، شرط، قیمت و زمان را دریافت میکنند.
بررسی نتیجه
صبر کنید تا هشدار فعال شود، سپس تب Log را در پنل Alerts باز کنید.
آنچه گیرندهی شما دریافت کرده است را با مورد ثبتشده در Log مقایسه کنید: نماد، شرط و زمان.
در Log میبینید که هشدار فعال شده است، ولی نمیبینید که گیرندهی شما پیام را پذیرفته است یا نه، پس گزارشهای خود گیرنده را هم بررسی کنید. اگر آکولادهایی مثل {{prices}} میبینید، نام یک متغیر غلط نوشته شده است. اگر گیرندهی شما بدنه را رد میکند، JSON را بررسی کنید.
خوب است بدانید
پیام به همهی مقصدهایی که تیک زدهاید میرود. بدنهی وبهوک فقط به وبهوک میرود.
سرویس Discord حداکثر 1900 کاراکتر و سرویس Slack حداکثر 3000 کاراکتر را نشان میدهد. متن طولانیتر بریده میشود.