Mỗi cảnh báo gửi một tin nhắn đến tất cả những nơi bạn đã chọn. Tự bản thân tin nhắn đã cho biết điều gì vừa xảy ra, mức giá tại thời điểm đó và liệu cảnh báo có tiếp tục hoạt động hay không. Hãy thêm ghi chú về kế hoạch giao dịch của bạn để nắm được dự định trước khi mở biểu đồ. Việc thiết lập cảnh báo và tin nhắn rất đơn giản, nhanh chóng và chính xác. Bạn có thể nhập trực tiếp trong trình chỉnh sửa, hoặc nói hay nhắn bằng văn bản với AI Trading Assistant.
Nếu bạn sử dụng phần mềm riêng, Discord hoặc Slack, một webhook sẽ tự động gửi mỗi cảnh báo đến đó mà không cần sao chép thủ công. Hướng dẫn này trình bày cả hai phần.
Ví dụ: một cảnh báo trên EURUSD kích hoạt khi giá cắt lên trên mức 1.09 trên biểu đồ 5m.
Nội dung của tin nhắn tự động
Khi ô Message để trống, cảnh báo sẽ tự tạo tin nhắn khi kích hoạt. Với ví dụ trên, tin nhắn có nội dung:
EURUSD crossed above 1.09
Price 1.0901.
This alert is now off. It was set to fire once.
Dòng đầu tiên cho biết điều gì đã xảy ra theo cách diễn đạt của trình chỉnh sửa cảnh báo. Dòng tiếp theo cung cấp các con số tại thời điểm đó. Dòng cuối cùng cho biết cảnh báo có tiếp tục hoạt động hay không. Ví dụ này dùng tùy chọn Once only nên cảnh báo hiện đã tắt. Với các lựa chọn Trigger khác, dòng cuối cùng sẽ hiển thị “This alert stays on.” (Cảnh báo này vẫn tiếp tục bật).
Các cảnh báo khác cũng tuân theo cùng thứ tự này. Dưới đây là một vài dòng đầu tiên kèm theo dòng số liệu ngay bên dưới:
Một đường vẽ: “GBPJPY touched 1h Resistance R1” (GBPJPY đã chạm đường kháng cự R1 trên khung 1h) và “Price 210.16, line at 210.20.” (Giá 210.16, đường ở 210.20).
Phá vỡ một đường vẽ: “GBPJPY broke above 1h Resistance R1” (GBPJPY đã phá vỡ lên trên đường kháng cự R1 trên khung 1h) và “The 1h candle closed at 210.32, above the line at 210.20.” (Nến 1h đóng ở 210.32, phía trên đường ở 210.20).
Một chỉ báo: “BTCUSD: 1h RSI(14) crossed above 70” (BTCUSD: RSI(14) khung 1h đã cắt lên trên 70) và “RSI(14) was 71.4 when the 1h candle closed at 105240.50.” (RSI(14) ở mức 71.4 khi nến 1h đóng ở 105240.50).
Thay đổi dự báo: “GBPJPY: 1h forecast turned bearish” (GBPJPY: dự báo khung 1h đã chuyển sang giảm giá) và “Before: bullish above 209.80. Now: bearish below 209.40.” (Trước đó: tăng giá trên 209.80. Hiện tại: giảm giá dưới 209.40).
Một cảnh báo có nhiều điều kiện sẽ cho biết có bao nhiêu điều kiện đã được đáp ứng. Sau đó, tin nhắn hiển thị một dòng cho từng điều kiện thỏa mãn:
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.
Khi có nhiều điều kiện hơn, dòng đầu tiên sẽ hiển thị ví dụ như “all 3 conditions met” (cả 3 điều kiện đều thỏa mãn) hoặc “2 of 3 conditions met” (2 trong 3 điều kiện thỏa mãn). Khi chỉ có một điều kiện thỏa mãn, chẳng hạn với liên từ or, dòng đầu tiên sẽ nêu tên điều kiện đó và theo sau là các con số tương ứng.
Viết tin nhắn
Mở trình chỉnh sửa cảnh báo và chuyển sang thẻ Options.
Nhấp vào hàng Message. Khi còn trống, hàng này hiển thị Auto. Một ô văn bản sẽ mở ra bên dưới.
Nhập tin nhắn của bạn. Ô này chứa tối đa 400 ký tự.
Để chèn một giá trị trực tiếp, hãy mở mục Available variables bên dưới ô văn bản. Sao chép chính xác biến đó cùng với cặp dấu ngoặc nhọn kép.

Ô Automatic message: ô văn bản đang trống. Nhập lời nhắn của riêng bạn vào đây hoặc để trống.
Dòng chữ bên dưới ô: “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.” (Để trống thì cảnh báo sẽ nêu điều gì đã xảy ra và ở mức giá nào; tin nhắn riêng của bạn sẽ được gửi ở dòng đầu, kèm nội dung tự động bên dưới).
Mục Available variables: các giá trị trực tiếp mà bạn có thể chèn vào tin nhắn.
Lời nhắn của bạn sẽ trở thành dòng đầu tiên và phần văn bản tự động sẽ nằm ngay phía dưới. Với ví dụ trên, tin nhắn này:
{{symbol}} on {{timeframe}}: check the 1h trend before entering.
sẽ được gửi đến như sau:
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.
Mức giá và điều kiện đã có sẵn trong các dòng bên dưới lời nhắn của bạn. Hãy dùng tin nhắn riêng cho những thông tin mà phần tự động không có, chẳng hạn như kế hoạch giao dịch của bạn.
Tin nhắn bạn nhập cũng chính là tên của cảnh báo trong danh sách Alerts. Nếu không nhập tin nhắn, danh sách sẽ hiển thị tên được tạo từ điều kiện. Với một mức giá, tên này rất ngắn gọn, ví dụ “EURUSD crossing up 1.09”. Với một đường vẽ hoặc nhiều điều kiện, tên sẽ hiển thị giống như trong trình chỉnh sửa, ví dụ “GBPJPY: 1h Price touches 1h Resistance R1”. Khi bạn thay đổi điều kiện, tên này cũng tự động đổi theo. Khi bạn mở lại cảnh báo, ô Message vẫn trống. Các cảnh báo bạn đã lưu trước đây mà không có tin nhắn riêng cũng hiển thị tên theo dạng này.
Nội dung hiển thị ở từng nơi nhận
Mỗi nơi nhận đều nhận cùng một tin nhắn, được trình bày phù hợp với nơi đó:
| Nơi nhận | Nội dung hiển thị |
|---|---|
| Thông báo trong ứng dụng | Dòng đầu tiên in đậm, kèm các con số bên dưới. |
| Tùy chọn Notify my devices | Dòng đầu tiên làm tiêu đề, kèm các dòng còn lại bên dưới. |
| Tùy chọn Send to MetaTrader | Dòng đầu tiên làm tiêu đề, kèm các dòng còn lại bên dưới. MetaTrader hiển thị thời gian riêng bên cạnh tin nhắn. |
| Tùy chọn Telegram | Nội dung tin nhắn, thời gian theo múi giờ của bạn và liên kết mở biểu đồ. |
| Tùy chọn Send email | Nội dung tin nhắn kèm ngày và giờ theo múi giờ của bạn. |
| Tùy chọn Webhook URL | Discord và Slack nhận tin nhắn kèm thời gian theo chuẩn UTC. Với định dạng Raw JSON, phần mềm của bạn sẽ nhận các biến trong bảng dưới đây. |
Telegram ghi thời gian theo dạng: “24 Sep, 11:02 London time”. Nếu múi giờ chưa đúng, hãy chọn lại múi giờ của bạn trong mục Timezone trên trang Your profile. Khi ForecastCity chưa biết múi giờ của bạn, thời gian sẽ hiển thị theo chuẩn UTC.
Liên kết trong tin nhắn Telegram, email, thông báo trên điện thoại hoặc cửa sổ bật lên trên MetaTrader sẽ mở biểu đồ của mã giao dịch đó cùng với bảng Alerts. Đối với hầu hết các cảnh báo 4CM-AI, liên kết sẽ mở biểu đồ kèm theo Alert observation của lần kích hoạt đó.
Thêm giá trị trực tiếp bằng biến
Một biến sẽ được thay thế bằng giá trị thực tế khi cảnh báo kích hoạt. Dưới đây là các biến trong mục Available variables:
| Biến | Nội dung chèn vào | Ví dụ |
|---|---|---|
{{symbol}} |
Mã giao dịch | EURUSD |
{{price}} và {{close}} |
Mức giá khi cảnh báo kích hoạt | 1.0901 |
{{condition_text}} |
Điều gì đã xảy ra, không kèm mã giao dịch | Price crossed above 1.09 |
{{condition}} |
Điều kiện dưới dạng mã ngắn | CROSSING_UP 1.09 |
{{timeframe}} |
Khung thời gian của cảnh báo | 5m |
{{time_iso}} |
Ngày và giờ theo chuẩn UTC | 2026-09-24 10:02 UTC |
{{time}} |
Cùng thời điểm đó tính bằng số giây, dùng cho phần mềm | 1790244120 |
{{time_now}} |
Thời điểm tin nhắn được gửi đi, dưới dạng số | 1790244121 |
{{exchange}} |
Nguồn cung cấp dữ liệu giá | TwelveData |
{{status}} |
Cho biết cảnh báo có tiếp tục hoạt động hay không | This alert stays on. |
{{alert_url}} |
Liên kết đến biểu đồ của mã giao dịch đó cùng các cảnh báo của bạn | một địa chỉ web |
{{name}} |
Tin nhắn của bạn sau khi đã thay từng biến bằng giá trị thực, hoặc tên hiển thị trong danh sách Alerts | EURUSD crossing up 1.09 |
Đối với một đường vẽ, biến {{condition_text}} có dạng như “Price touched 1h Resistance R1”. Khi có nhiều điều kiện, biến này nối các điều kiện đã thỏa mãn bằng từ and. Sau khi một cảnh báo Once only kích hoạt, biến {{status}} hiển thị “This alert is now off. It was set to fire once.” Đối với cảnh báo có nhiều điều kiện, đường vẽ hoặc chỉ báo, biến {{condition}} có giá trị là TREE. Biến này là mã dành cho phần mềm xử lý.
Đối với các cảnh báo 4CM-AI, biến {{forecast_summary}} tóm tắt diễn biến của dự báo và {{forecast_symbol}} nêu tên mã giao dịch của dự báo đó. Biến {{forecast_cycle}} là bộ đếm tăng lên mỗi khi cảnh báo bắt đầu theo dõi lại. Một tin nhắn có chứa {{forecast_summary}} sẽ không có thêm các dòng tự động bên dưới, vì bản thân phần tóm tắt đó đã nêu rõ điều gì vừa xảy ra.
Hai biến {{price}} và {{close}} sẽ để trống đối với hầu hết các cảnh báo 4CM-AI vì chúng không gắn với một mức giá đơn lẻ. Biến {{time_iso}} dùng giờ UTC nên có thể khác với đồng hồ trên màn hình của bạn. Một biến không tồn tại sẽ được giữ nguyên như những gì bạn đã gõ: nếu gõ sai thành {{prices}} thì kết quả nhận được vẫn là {{prices}}.
Gửi cảnh báo đến webhook
Webhook gửi mỗi cảnh báo đến một địa chỉ web (điểm cuối / endpoint), nơi phần mềm riêng của bạn, kênh Discord hoặc kênh Slack tiếp nhận. Gói thành viên của bạn phải bao gồm tính năng webhook.
Trên thẻ Options, trong phần Notifications, chọn hộp kiểm Webhook URL. Một ô địa chỉ, bộ chọn Format và ô phần thân (body) sẽ xuất hiện.
Dán địa chỉ mà bên nhận của bạn đang lắng nghe. Địa chỉ phải bắt đầu bằng
http://hoặchttps://.Đặt cài đặt Format thành Raw JSON và để trống ô phần thân.
Nhấp vào nút Create, hoặc nút Save nếu bạn đang chỉnh sửa cảnh báo.

Địa chỉ mà bên nhận của bạn lắng nghe. Hãy dùng các cổng chuẩn là 80 hoặc 443.
Cài đặt Format: chọn Raw JSON cho phần mềm riêng của bạn, hoặc chọn Discord hay Slack cho các dịch vụ đó.
Khi ô phần thân để trống, bên nhận sẽ nhận được một đối tượng JSON chứa mọi biến trong bảng trên, cộng thêm alertId và triggerId. Hai trường này dùng để định danh cảnh báo và lần kích hoạt cụ thể đó. Hãy kiểm tra một lần gửi thực tế trước khi xây dựng bất kỳ công cụ nào phụ thuộc vào các trường dữ liệu này.
Bên dưới ô phần thân, trình chỉnh sửa có hiển thị địa chỉ máy chủ gửi các yêu cầu của chúng tôi. Hãy thêm địa chỉ này vào danh sách cho phép (allowlist) nếu bên nhận của bạn chỉ chấp nhận các địa chỉ đã biết.
Yêu cầu đối với địa chỉ nhận
Một địa chỉ công khai trên cổng chuẩn: 80 cho http, 443 cho https. Tin nhắn gửi đến các cổng khác, đến localhost hoặc địa chỉ mạng nội bộ sẽ không được gửi đi.
Không chứa tên người dùng hoặc mật khẩu bên trong địa chỉ.
Phản hồi trong vòng 3 giây từ chính địa chỉ đó. Việc chuyển hướng (redirect) sang một địa chỉ khác được tính là gửi thất bại.
Trình chỉnh sửa chỉ kiểm tra xem địa chỉ có bắt đầu bằng http:// hoặc https:// hay không. Các yêu cầu khác sẽ được kiểm tra khi tin nhắn thực sự được gửi đi, vì vậy hãy thử nghiệm địa chỉ của bạn bằng một cảnh báo thực tế. Đối với cảnh báo giá và cảnh báo kỹ thuật, nếu bên nhận gặp lỗi tạm thời, hệ thống sẽ thử gửi lại tối đa hai lần nữa. Tin nhắn của cảnh báo 4CM-AI sẽ không được gửi lại sau khi quá thời gian chờ hoặc gặp lỗi máy chủ, vì bên nhận của bạn có thể đã xử lý thông tin đó rồi.
Tự viết phần thân cho webhook
Ô phần thân nhận một mẫu nội dung sử dụng cùng các biến như tin nhắn thông thường. Ô này chứa được tối đa 2000 ký tự. Bạn vẫn có thể gõ nhiều hơn trong ô, nhưng phần thân dài quá giới hạn sẽ bị từ chối khi lưu.
Với định dạng Raw JSON, một bên nhận cần đối tượng JSON gọn nhẹ có thể dùng phần thân như sau:
{"symbol":"{{symbol}}","condition":"{{condition_text}}","time":"{{time_iso}}","source":"ForecastCity"}
Các biến được điền vào dưới dạng văn bản thuần túy. Một giá trị có chứa dấu ngoặc kép hoặc ký tự xuống dòng có thể làm hỏng cấu trúc JSON của bạn. Phần thân không phải là JSON hợp lệ sẽ được gửi đi dưới dạng văn bản thuần túy.
Đối với kênh Discord, hãy đặt Format thành Discord và dùng địa chỉ webhook của kênh đó. Sau đó viết một dòng ngắn vào ô phần thân, ví dụ:
{{symbol}}: {{condition_text}}. Open your alerts: {{alert_url}}
Đối với Slack, hãy chọn Slack và viết theo cách tương tự. ForecastCity sẽ đóng gói văn bản của bạn theo đúng cấu trúc mà từng dịch vụ yêu cầu. Nếu để trống ô phần thân, cả hai dịch vụ sẽ nhận được tin nhắn mặc định của cảnh báo như minh họa ở trên, kèm thời gian theo chuẩn UTC ở dòng cuối cùng.
Kiểm tra kết quả
Đợi cảnh báo kích hoạt, sau đó mở thẻ Log trong bảng Alerts.
So sánh dữ liệu bên nhận nhận được với mục ghi trong thẻ Log: điều gì đã xảy ra, mã giao dịch và thời gian.
Thẻ Log cho thấy cảnh báo đã kích hoạt. Thẻ này không cho biết liệu bên nhận của bạn có chấp nhận tin nhắn hay không, vì vậy hãy kiểm tra cả nhật ký riêng ở phía bên nhận. Nếu bạn thấy còn nguyên dấu ngoặc nhọn như {{prices}}, nghĩa là tên biến đã bị gõ sai. Nếu bên nhận từ chối phần thân, hãy kiểm tra lại cú pháp JSON.
Điều cần biết
Tin nhắn cảnh báo được gửi đến tất cả những nơi bạn đã chọn. Phần thân webhook chỉ được gửi riêng cho webhook.
Discord hiển thị tối đa 1900 ký tự và Slack hiển thị tối đa 3000 ký tự. Phần văn bản dài hơn sẽ bị cắt bớt.