External Signals
Webhook ingress cho n8n, Zapier, AI bot, Python
External Signals hoạt động thế nào
External Signals (Tín hiệu ngoài) cho phép bất kỳ hệ thống nào gửi được HTTP request — n8n, Zapier, script Python, bot AI, hay bot Telegram — mở, sửa và đóng lệnh trên tài khoản MT5 hoặc cTrader của bạn. Bạn đặt quy tắc rủi ro; LOTUX áp dụng cho mọi lệnh.
Bạn gửi (POST) một đoạn JSON nhỏ tới địa chỉ webhook riêng của mình. LOTUX xác thực bằng secret của bạn, áp quy tắc rủi ro, rồi chuyển lệnh vào tài khoản — cùng đường tiếp nhận với TradingView Bridge.
LOTUX thực thi đúng lệnh bạn gửi. LOTUX không phải sàn môi giới và không phải lời khuyên đầu tư — bạn quyết định tín hiệu, LOTUX chỉ thực thi và áp giới hạn của bạn.
Schema payload webhook
Gửi POST tới địa chỉ webhook của bạn (copy đúng URL trong bảng điều khiển External Signals). Nội dung là JSON, luôn gồm secret và action.
{
"secret": "SECRET_WEBHOOK_CUA_BAN",
"action": "buy",
"symbol": "EURUSD",
"volume": 0.1,
"sl": 1.0800,
"tp": 1.1000
}Các action cốt lõi và trường đi kèm:
| Action | Bắt buộc | Tùy chọn |
|---|---|---|
| buy / sell | symbol, volume | sl, tp, price |
| buy_limit / sell_limit / buy_stop / sell_stop | symbol, volume, price | sl, tp |
| close | positionId — HOẶC — bộ lọc (symbol / side / pnl) | — |
| close_all | (không cần) | — |
| partial_close | positionId, partialVolume | — |
| cancel_pending | orderId | — |
- volume tính bằng lot (lớn hơn 0, tối đa 100).
- sl / tp là mức giá cho stop-loss / take-profit.
- Thêm "meta": { "origin": "n8n" } để đánh dấu nguồn tín hiệu — chỉ phục vụ thống kê của bạn, không ảnh hưởng định tuyến.
Action khác — modify_sl (positionId + sl), modify_tp (positionId + tp), và breakeven (positionId) dùng để sửa lệnh đang mở (cũng cần header X-Idempotency-Key, xem bên dưới). Lệnh stop-limit — buy_stop_limit / sell_stop_limit (thêm stopLimitPrice) — và modify_pending (orderId + ít nhất một trong price / stopLimitPrice / sl / tp / expiry) cần EA MT5 bản mới và có thể chưa hỗ trợ trên mọi venue; kiểm tra trong bảng điều khiển.
An toàn khi gửi lại: với breakeven, modify_sl, modify_tp và close có lọc (không có positionId), hãy gửi kèm header X-Idempotency-Key. Dùng LẠI đúng key đó khi retry cùng một hành động, để lần gửi lại không tạo lệnh thứ hai — key mới bị coi là hành động mới.
Giới hạn: nội dung JSON tối đa 64 KB và request bị giới hạn tần suất. Request thành công trả về HTTP 202 (đã tiếp nhận).
Quản lý webhook secret
Secret webhook là mã xác thực của bạn — nó gắn tín hiệu gửi tới với (các) tài khoản giao dịch của bạn. Tạo secret trong bảng điều khiển External Signals cho tài khoản bạn muốn giao dịch.
- Tạo — mở External Signals, tạo secret và đặt tên (ví dụ "bot n8n"), rồi copy địa chỉ webhook hiện bên cạnh.
- Xoay (Rotate) — sinh secret mới; secret cũ ngừng hoạt động ngay sau đó, nên hãy cập nhật giá trị mới vào automation của bạn ngay.
- Hiện (Reveal) — secret bị che trong bảng điều khiển; bạn có thể xem đầy đủ tại đó (có thể cần xác thực bổ sung tùy thiết lập bảo mật của tài khoản).
Định tuyến: POST tới /webhook/custom/{accountId} để gửi vào một tài khoản cụ thể, hoặc /webhook/custom (không có id) để gửi tới mọi tài khoản gắn với secret đó. Bạn có thể gắn một secret với một hoặc nhiều tài khoản.
Ví dụ tích hợp
n8n / Zapier — thêm bước HTTP Request: method POST, URL = địa chỉ webhook của bạn (lấy trong bảng điều khiển), body = JSON:
{
"secret": "SECRET_WEBHOOK_CUA_BAN",
"action": "buy",
"symbol": "XAUUSD",
"volume": 0.1,
"meta": { "origin": "n8n" }
}Python / bot AI — gửi cùng JSON từ bất kỳ ngôn ngữ nào (dán đúng URL webhook của bạn):
import requests
requests.post(
"DAN_URL_WEBHOOK_TU_DASHBOARD",
json={
"secret": "SECRET_WEBHOOK_CUA_BAN",
"action": "sell",
"symbol": "GBPUSD",
"volume": 0.2,
"sl": 1.2800,
"tp": 1.2600,
"meta": {"origin": "python-bot"},
},
)Thử trước khi chạy thật — dùng chức năng Validate trong bảng điều khiển để kiểm tra payload có lỗi không mà không gửi lệnh thật.