Setiap alert mengirim satu pesan yang sama ke semua tujuan yang Anda centang. Secara otomatis, pesan tersebut menyebutkan apa yang terjadi, harga pada saat itu, dan apakah alert tetap aktif. Tambahkan catatan tentang rencana trading Anda agar Anda langsung melihat rencana tersebut sebelum membuka chart. Menyiapkan alert beserta pesannya sangat mudah, cepat, dan akurat. Ketik langsung di editor, atau beri tahu maupun minta AI Trading Assistant melalui suara atau tulisan.
Jika Anda menggunakan perangkat lunak sendiri, Discord, atau Slack, fitur webhook dapat mengirimkan setiap alert ke sana secara otomatis tanpa perlu menyalin apa pun secara manual. Panduan ini membahas keduanya.
Contoh: alert pada EURUSD yang dipicu saat harga memotong ke atas 1.09 pada chart 5m.
Isi pesan otomatis
Saat kolom Message dikosongkan, alert akan menyusun pesannya sendiri ketika dipicu. Untuk contoh di atas, isi pesannya adalah:
EURUSD crossed above 1.09
Price 1.0901.
This alert is now off. It was set to fire once.
Baris pertama menyebutkan apa yang terjadi sesuai rumusan di editor alert. Baris berikutnya menampilkan angka pada saat pemicuan. Baris terakhir menjelaskan apakah alert tetap aktif. Karena contoh ini menggunakan Once only, alert langsung nonaktif setelah dipicu. Pada pilihan Trigger lainnya, baris terakhir berbunyi “This alert stays on.”
Alert jenis lain mengikuti urutan yang sama. Berikut beberapa contoh baris pertama beserta baris angka di bawahnya:
Garis: “GBPJPY touched 1h Resistance R1” dan “Price 210.16, line at 210.20.”
Penembusan garis: “GBPJPY broke above 1h Resistance R1” dan “The 1h candle closed at 210.32, above the line at 210.20.”
Indikator: “BTCUSD: 1h RSI(14) crossed above 70” dan “RSI(14) was 71.4 when the 1h candle closed at 105240.50.”
Perubahan prakiraan: “GBPJPY: 1h forecast turned bearish” dan “Before: bullish above 209.80. Now: bearish below 209.40.”
Alert dengan beberapa kondisi menyebutkan berapa banyak kondisi yang terpenuhi, lalu menampilkan satu baris rincian untuk setiap kondisi yang terpenuhi:
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.
Jika kondisinya lebih banyak, baris pertama akan berbunyi misalnya “all 3 conditions met” atau “2 of 3 conditions met”. Jika hanya satu kondisi yang terpenuhi, misalnya ketika memakai penghubung or, baris pertama akan menyebutkan kondisi tersebut diikuti angkanya.
Menulis pesan sendiri
Buka editor alert dan masuk ke tab Options.
Klik baris Message. Baris ini menampilkan Auto selama masih kosong. Sebuah kotak teks akan terbuka di bawahnya.
Ketik pesan Anda. Kotak ini dapat menampung hingga 400 karakter.
Untuk menyisipkan nilai langsung saat pemicuan, buka Available variables di bawah kotak teks. Salin variabel persis seperti yang tertulis, lengkap dengan kurung kurawal gandanya.

Automatic message: kotak teks yang masih kosong. Ketik catatan Anda sendiri di sini, atau biarkan kosong.
Keterangan di bawah kotak: “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: daftar nilai langsung yang dapat Anda tambahkan ke dalam pesan.
Teks yang Anda tulis akan menjadi baris pertama, lalu diikuti oleh teks otomatis di bawahnya. Untuk contoh tadi, pesan berikut:
{{symbol}} on {{timeframe}}: check the 1h trend before entering.
akan diterima seperti ini:
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.
Harga dan kondisi sudah tercantum pada baris-baris di bawah catatan Anda. Gunakan pesan kustom untuk menulis hal yang tidak tercantum pada teks otomatis, seperti rencana trading Anda.
Pesan yang Anda ketik juga menjadi nama alert di dalam daftar Alerts. Tanpa pesan khusus, daftar tersebut menampilkan nama singkat yang dibuat dari kondisi alert. Untuk level harga, namanya ringkas seperti “EURUSD crossing up 1.09”. Untuk garis atau gabungan beberapa kondisi, namanya mengikuti kalimat di editor, seperti “GBPJPY: 1h Price touches 1h Resistance R1”. Saat Anda mengubah kondisi, nama otomatis ini ikut berubah. Ketika Anda membuka kembali alert tersebut, kotak Message tetap kosong. Alert lama yang disimpan tanpa pesan juga menampilkan namanya dengan format ini.
Tampilan pesan di setiap tujuan
Setiap tujuan pengiriman menerima pesan yang sama, dengan tata letak yang disesuaikan untuk tujuan tersebut:
| Tujuan | Yang ditampilkan |
|---|---|
| Notifikasi di dalam aplikasi | Baris pertama dicetak tebal, diikuti baris angka di bawahnya. |
| Notify my devices | Baris pertama sebagai judul, dengan baris-baris lainnya di bawah judul. |
| Send to MetaTrader | Baris pertama sebagai judul, dengan baris-baris lainnya di bawah judul. MetaTrader menampilkan waktunya sendiri di samping pesan. |
| Telegram | Isi pesan, waktu sesuai zona waktu Anda, dan tautan ke chart. |
| Send email | Isi pesan, lengkap dengan tanggal dan waktu sesuai zona waktu Anda. |
| Webhook URL | Discord dan Slack menerima pesan dengan waktu dalam UTC. Dengan opsi Raw JSON, perangkat lunak Anda menerima variabel-variabel pada tabel di bawah. |
Telegram menuliskan waktu seperti ini: “24 Sep, 11:02 London time”. Jika zona waktunya belum sesuai, pilih zona waktu Anda pada pengaturan Timezone di halaman Your profile. Apabila ForecastCity belum mengetahui zona waktu Anda, waktu akan ditampilkan dalam UTC.
Tautan di dalam pesan Telegram, email, notifikasi ponsel, atau pop-up MetaTrader akan langsung membuka chart simbol tersebut beserta panel Alerts. Untuk sebagian besar alert 4CM-AI, tautan tersebut membuka chart beserta tampilan Alert observation dari pemicuan tersebut.
Menambahkan nilai langsung dengan variabel
Setiap variabel akan digantikan oleh nilainya yang sebenarnya saat alert dipicu. Berikut adalah variabel yang tersedia di Available variables:
| Variabel | Nilai yang dihasilkan | Contoh |
|---|---|---|
{{symbol}} |
Simbol instrumen | EURUSD |
{{price}} dan {{close}} |
Harga saat alert dipicu | 1.0901 |
{{condition_text}} |
Apa yang terjadi, tanpa nama simbol | Price crossed above 1.09 |
{{condition}} |
Kondisi dalam bentuk kode singkat | CROSSING_UP 1.09 |
{{timeframe}} |
Timeframe alert | 5m |
{{time_iso}} |
Tanggal dan waktu dalam UTC | 2026-09-24 10:02 UTC |
{{time}} |
Waktu yang sama dalam satuan detik, untuk perangkat lunak | 1790244120 |
{{time_now}} |
Waktu saat pesan dikirim, dalam bentuk angka | 1790244121 |
{{exchange}} |
Sumber aliran data harga | TwelveData |
{{status}} |
Status apakah alert tetap aktif | This alert stays on. |
{{alert_url}} |
Tautan menuju chart simbol tersebut beserta daftar alert Anda | alamat web |
{{name}} |
Pesan Anda setelah setiap variabel diganti nilainya, atau nama yang tampil di daftar Alerts | EURUSD crossing up 1.09 |
Untuk kondisi garis, {{condition_text}} tampak seperti “Price touched 1h Resistance R1”. Pada alert dengan beberapa kondisi, variabel ini menggabungkan kondisi-kondisi yang terpenuhi dengan kata and. Setelah alert berjenis Once only dipicu, {{status}} berisi “This alert is now off. It was set to fire once.” Untuk alert dengan beberapa kondisi, objek garis, atau indikator, {{condition}} bernilai TREE. Variabel ini adalah kode khusus untuk perangkat lunak.
Untuk alert 4CM-AI, {{forecast_summary}} merangkum perubahan prakiraan dan {{forecast_symbol}} menyebutkan simbol prakiraan tersebut. Variabel {{forecast_cycle}} adalah penghitung siklus yang bertambah setiap kali alert mulai mengawasi kembali. Pesan yang memuat {{forecast_summary}} tidak menambahkan baris otomatis di bawahnya, karena ringkasan tersebut sudah menjelaskan apa yang terjadi.
Variabel {{price}} dan {{close}} tetap kosong untuk sebagian besar alert 4CM-AI karena tidak merujuk pada satu harga tunggal. Variabel {{time_iso}} menggunakan UTC, sehingga dapat berbeda dari jam di layar Anda. Variabel yang namanya tidak dikenal akan dibiarkan apa adanya: salah ketik seperti {{prices}} akan terkirim tetap sebagai {{prices}}.
Mengirim alert ke webhook
Webhook mengirimkan setiap alert ke sebuah alamat web, tempat perangkat lunak Anda sendiri, kanal Discord, atau kanal Slack menerimanya. Paket langganan Anda harus mencakup fitur webhook.
Pada tab Options, di bawah Notifications, centang Webhook URL. Kolom alamat, pemilih Format, dan kotak body akan muncul.
Tempel alamat tempat penerima (endpoint) Anda mendengarkan permintaan. Alamat harus diawali dengan
http://atauhttps://.Atur Format ke Raw JSON dan biarkan kotak body kosong.
Tekan tombol Create, atau Save jika Anda sedang mengedit alert.

Alamat tempat penerima Anda mendengarkan permintaan. Gunakan port standar, yaitu 80 atau 443.
Format: pilih Raw JSON untuk perangkat lunak Anda sendiri, atau pilih Discord maupun Slack untuk kedua layanan tersebut.
Jika kotak body dibiarkan kosong, penerima Anda akan mendapatkan objek JSON yang memuat semua variabel pada tabel di atas, ditambah alertId dan triggerId. Kedua nilai ini mengidentifikasi alert beserta pemicuan spesifik tersebut. Periksa satu contoh pengiriman nyata terlebih dahulu sebelum membangun otomasi yang bergantung pada kolom-kolomnya.
Di bawah kotak tersebut, editor menampilkan alamat server asal permintaan kami. Tambahkan alamat ini ke daftar izin (allowlist) jika penerima Anda hanya mengizinkan alamat yang dikenal.
Syarat alamat penerima
Alamat publik pada port standar: 80 untuk http, atau 443 untuk https. Pesan ke port lain, ke localhost, atau ke alamat jaringan privat tidak akan dikirim.
Tidak memuat nama pengguna atau kata sandi di dalam alamat.
Memberikan respons dalam waktu maksimal 3 detik langsung dari alamat tersebut. Pengalihan (redirect) ke alamat lain dihitung sebagai kegagalan.
Editor hanya memeriksa apakah alamat diawali dengan http:// atau https://. Persyaratan lainnya diperiksa saat pesan benar-benar dikirim, jadi ujilah alamat Anda dengan alert nyata. Untuk alert harga dan teknikal, jika penerima Anda mengalami gangguan sementara, pengiriman pesan akan dicoba ulang hingga dua kali lagi. Pesan untuk alert 4CM-AI tidak dikirim ulang setelah melewati batas waktu (timeout) atau mengalami gangguan server, karena penerima Anda mungkin sudah menindaklanjutinya.
Menulis body webhook sendiri
Kotak body menerima templat dengan variabel yang sama seperti kotak pesan. Kotak ini dapat menampung hingga 2000 karakter. Anda memang bisa mengetik lebih panjang di dalam kotak, tetapi body yang melebihi batas akan ditolak saat disimpan.
Untuk format Raw JSON, penerima yang membutuhkan objek ringkas dapat menggunakan body seperti ini:
{"symbol":"{{symbol}}","condition":"{{condition_text}}","time":"{{time_iso}}","source":"ForecastCity"}
Setiap variabel diisi sebagai teks biasa. Nilai yang mengandung tanda kutip atau baris baru dapat merusak struktur JSON Anda. Apabila isi body bukan JSON yang valid, pesan tetap dikirim sebagai teks biasa.
Untuk kanal Discord, atur Format ke Discord dan gunakan alamat webhook dari kanal tersebut. Setelah itu, tulis baris singkat di dalam kotak body, misalnya:
{{symbol}}: {{condition_text}}. Open your alerts: {{alert_url}}
Untuk Slack, pilih Slack dan tulis dengan cara yang sama. ForecastCity akan membungkus teks Anda ke dalam struktur yang dibutuhkan oleh masing-masing layanan. Jika kotak body dibiarkan kosong, keduanya akan menerima pesan alert seperti contoh di bagian atas, ditambah waktu dalam UTC pada baris terakhir.
Memeriksa hasil pengiriman
Tunggu hingga alert dipicu, lalu buka tab Log di panel Alerts.
Bandingkan data yang diterima oleh sistem penerima Anda dengan catatan di tab Log: apa yang terjadi, simbolnya, dan waktunya.
Tab Log menunjukkan bahwa alert telah dipicu. Namun, tab ini tidak menampilkan apakah penerima Anda berhasil menerima pesan tersebut, sehingga Anda juga perlu memeriksa log pada sistem penerima Anda. Jika Anda melihat kurung kurawal yang belum terganti seperti {{prices}}, berarti ada nama variabel yang salah ketik. Jika penerima Anda menolak isi pesan, periksa kembali format JSON Anda.
Perlu diketahui
Pesan alert dikirim ke setiap tujuan yang Anda centang, sedangkan body webhook hanya dikirim ke alamat webhook.
Discord menampilkan hingga 1900 karakter dan Slack hingga 3000 karakter. Teks yang lebih panjang akan dipotong.