Lập trình
Tài nguyên lập trình LOTUX
LOTUX thực thi tín hiệu CỦA BẠN trên tài khoản sàn CỦA BẠN (MT5 hoặc cTrader) với luật rủi ro bạn tự đặt. Bất cứ thứ gì gửi được HTTP POST — n8n, Zapier, Python, AI agent, bot Telegram — đều điều khiển được LOTUX qua External Signals API bên dưới. Trang này là mục lục chính thức của mọi tài nguyên máy-đọc-được của LOTUX.
API LOTUX & tài nguyên máy-đọc-được
Xác thực
- Webhook (POST /webhook/custom): xác thực bằng webhook secret nằm trong body JSON. Tạo và gắn secret vào tài khoản trong dashboard External Signals — không dùng chữ ký header.
- Xem kết quả (GET /v1/signals/{signalId}): xác thực bằng API token của LOTUX (`Authorization: Bearer lx_...`), tạo trong dashboard. Kết quả giới hạn trong các tài khoản token được cấp.
- Retry an toàn: header `X-Idempotency-Key` là BẮT BUỘC với breakeven, modify_sl, modify_tp, và close có bộ lọc (close không kèm positionId) — thiếu header thì 4 action này bị trả 400. Dùng lại ĐÚNG key đó khi retry: retry trong cửa sổ replay 45 giây được khử trùng lặp; quá cửa sổ đó, key dùng lại chạy như một action mới.
Chính sách phiên bản & ngừng hỗ trợ API
Phiên bản: các endpoint đọc gắn phiên bản trong URL (hiện là /v1/...). Đường webhook (/webhook/custom) là hợp đồng ổn định: trường và action chỉ THÊM, không bao giờ đổi hay xoá tại chỗ.
Ngừng hỗ trợ: nếu LOTUX buộc phải đổi gãy tương thích, bản mới ra ở path phiên bản mới (ví dụ /v2/...) trong khi bản cũ vẫn chạy. Endpoint bị ngừng sẽ báo trước ít nhất 90 ngày qua header HTTP `Deprecation` và `Sunset` trên chính endpoint đó, trong đặc tả OpenAPI, và trên trang này.
Hiện chưa có gì bị ngừng hỗ trợ. Trang này là nơi thay đổi đầu tiên.
Giới hạn tần suất & dung lượng
- Request webhook bị giới hạn tần suất theo hai lớp: lớp chặn route (khoá theo tài khoản đích, rồi secret, rồi IP) và lớp công bằng luôn bật (theo tài khoản đích trên URL per-account; theo NGƯỜI DÙNG trên URL broadcast — vì tài khoản↔secret là quan hệ nhiều-nhiều nên công bằng broadcast tính theo chủ tài khoản, không theo secret). Gặp 429 thì giãn ra rồi thử lại.
- Body JSON tối đa 64 KB (quá thì 413).
- Thực thi là bất đồng bộ: 202 nghĩa là "đã nhận để thực thi" — poll GET /v1/signals/{signalId} để xem kết quả từng tài khoản. Gặp 503 mà body có signalId là NHẬN MỘT PHẦN: poll handle đó trước khi gửi lại.