Lỗi Off quotes / Requote trên MT5 — 10021
Mục lục
- Hai lỗi này (+ lỗi 136/138 của MT4) khác nhau ở điểm nào
- ① TRADE_RETCODE_PRICE_OFF = 10021 (không có báo giá để xử lý)
- ② TRADE_RETCODE_REQUOTE = 10004 (Requote — đề xuất lại giá mới)
- ③ Lỗi 136 / 138 thời MT4
- Phân loại nhanh trong 30 giây
- Nguyên nhân và cách xử lý (5 kiểu)
- ① Biến động giá đột ngột / tin tức mạnh (giá cũ trước khi kịp gửi đi)
- ② Deviation (trượt giá cho phép) bị đặt quá chặt
- ③ Khác biệt về phương thức khớp lệnh (requote là hiện tượng của instant execution)
- ④ Thời điểm hoặc sản phẩm có báo giá thưa / ngưng trệ
- ⑤ Độ trễ đường truyền (VPS ở xa server của broker)
- Đoạn code MQL5 giúp giảm lỗi này (dành cho lập trình viên EA)
- Đặt deviation theo đơn vị point một cách hợp lý
- Chỉ retry với các retcode thuộc nhóm lỗi giá (gửi lại với tick mới nhất)
- Sử dụng giá đề xuất lại của requote (10004)
- Tạo ra khung thời gian không vào lệnh ngay từ đầu
- Bảng kiểm tra theo mức độ ưu tiên
- Tổng kết
- Câu hỏi thường gặp
- Hỏi: 10004 và 10021, lỗi nào nghiêm trọng hơn?
- Hỏi: Broker không bao giờ bị requote có phải là broker tốt không?
- Hỏi: EA trên MT4 báo lỗi 136 / 138, xử lý giống vậy được không?
- Hỏi: Backtest không thấy lỗi này nhưng khi chạy thật lại gặp?
Giải quyết triệt để lỗi Off quotes / Requote (MT5/MQL5)
Khi chạy EA, nếu bạn thấy off quotes (10021) hoặc requote (10004) xuất hiện trong Journal hay tab Experts, cảm giác đầu tiên thường là "bị broker từ chối khớp lệnh" và khá lo lắng. Nhưng thực chất hai lỗi này không liên quan đến vốn hay khối lượng lệnh, mà là vấn đề về "giá". Giá bạn gửi đi và giá mà server đang nắm giữ tại thời điểm đó không khớp nhau — chỉ đơn giản vậy thôi, và phần lớn nguyên nhân rơi vào một trong bốn nhóm: biến động giá đột ngột, deviation (trượt giá cho phép), phương thức khớp lệnh, hoặc độ trễ đường truyền.
Bài viết này dành cho cả người dùng EA trên MT5 lẫn người viết EA bằng MQL5, tổng hợp đầy đủ về 10021 (TRADE_RETCODE_PRICE_OFF), 10004 (TRADE_RETCODE_REQUOTE), và lỗi 136/138 thời MT4 — từ bản chất, nguyên nhân, cách xử lý ngay lập tức, cho đến giải pháp lâu dài trong code. Để xem danh sách đầy đủ các mã lỗi khác, hãy tham khảo Hướng dẫn tổng hợp xử lý mã lỗi MQL5 / MT5.
Bài viết này dựa trên MT5 (build 4xxx) tính đến thời điểm tháng 7 năm 2026. Chi tiết hành vi cụ thể (có trả về requote hay khớp lệnh luôn) sẽ khác nhau tùy theo phương thức khớp lệnh của từng broker.
Hai lỗi này (+ lỗi 136/138 của MT4) khác nhau ở điểm nào
Các lỗi thuộc nhóm "giá không khớp" được chia thành hai kiểu phản hồi khác nhau từ server.
① TRADE_RETCODE_PRICE_OFF = 10021 (không có báo giá để xử lý)
Đây là giá trị trả về trong MqlTradeResult.retcode từ OrderSend(), mang ý nghĩa "không có báo giá để xử lý yêu cầu (There are no quotes to process the request)". Lỗi này xảy ra khi server không có giá hợp lệ, hoặc giá được gửi đi chênh lệch quá xa so với báo giá hiện tại nên không thể xử lý.
Ý nghĩa: Không có báo giá để xử lý yêu cầu
Hằng số: TRADE_RETCODE_PRICE_OFF
Giá trị: 10021
② TRADE_RETCODE_REQUOTE = 10004 (Requote — đề xuất lại giá mới)
Cũng là retcode trả về từ OrderSend(), nhưng đây không đơn thuần là từ chối mà là "giá đó không được, nhưng giá mới này thì sao" — tức là đề xuất lại giá (requote). Giá trị bid / ask trong MqlTradeResult sẽ chứa giá mà server đề xuất lại.
Ý nghĩa: Requote — đề xuất lại giá mới
Hằng số: TRADE_RETCODE_REQUOTE
Giá trị: 10004
// Ví dụ log điển hình có thể thấy trong Journal
2026.07.07 21:30:02.118 EA_NAME EURUSD,M5: OrderSend error 10004 (requote)
2026.07.07 21:30:02.310 EA_NAME EURUSD,M5: OrderSend error 10021
③ Lỗi 136 / 138 thời MT4
Trong MQL4 (MT4), hiện tượng tương tự được trả về qua mã lỗi của GetLastError().
| Hằng số MT4 | Giá trị | Retcode tương ứng trên MT5 |
|---|---|---|
ERR_OFF_QUOTES | 136 | 10021 (TRADE_RETCODE_PRICE_OFF) |
ERR_REQUOTE | 138 | 10004 (TRADE_RETCODE_REQUOTE) |
Nếu bạn thấy "error 136" hay "error 138" trong các bài viết hướng dẫn EA cũ hoặc log của EA phiên bản MT4, nội dung bài viết này áp dụng nguyên vẹn (với MT4, cách xử lý kinh điển là gọi RefreshRates() để lấy lại giá trước khi gửi lại lệnh — cách viết trên MT5 sẽ trình bày ở phần sau).
Cách phân biệt trên thực tế:
| retcode | Ý server muốn nói | Hành động EA nên thực hiện |
|---|---|---|
| 10004 (requote) | "Giá đã thay đổi. Đây là giá mới được đề xuất" | Gửi lại lệnh với giá mới nhất (hoặc bỏ qua) |
| 10021 (price off) | "Không có báo giá để xử lý" | Chờ một chút rồi gửi lại lệnh với tick mới nhất |
Cả hai đều là lỗi tạm thời (có thể retry), không thể "loại bỏ hoàn toàn" chỉ bằng sửa code hay thay đổi cấu hình, nhưng hoàn toàn có thể giảm đáng kể tần suất xảy ra.
Phân loại nhanh trong 30 giây
- Kiểm tra thời điểm xảy ra dựa vào giờ trong Journal
- Đúng vào thời điểm công bố tin tức như bảng lương phi nông nghiệp, FOMC... → biến động giá bình thường. Nếu EA có bộ lọc tin tức, hãy bật nó lên
- Khoảng 0 giờ theo giờ server (rollover) hoặc khoảng trống đầu tuần → thời điểm báo giá thưa thớt. Đây là hiện tượng bình thường
- Xảy ra ngẫu nhiên, không liên quan thời điểm → nghi ngờ đường truyền, VPS, hoặc cấu hình deviation
- Kiểm tra cặp tiền/sản phẩm nào bị lỗi
- Nếu tập trung ở các cặp tiền phụ, exotic, CFD... tức các sản phẩm có thanh khoản thấp → nguyên nhân do báo giá của sản phẩm đó thưa
- Thử đặt lệnh thủ công xem có bị lỗi không
- Nếu lệnh nhanh thủ công vào bình thường nhưng chỉ EA bị từ chối → khả năng cao
deviation(trượt giá cho phép) của EA đang bị đặt quá chặt
- Nếu lệnh nhanh thủ công vào bình thường nhưng chỉ EA bị từ chối → khả năng cao
Sau khi khoanh vùng được nguyên nhân thuộc "do thị trường", "do sản phẩm", hay "do cấu hình/môi trường" qua ba bước trên, hãy chuyển sang phần xử lý theo từng nguyên nhân cụ thể bên dưới.
Nguyên nhân và cách xử lý (5 kiểu)
① Biến động giá đột ngột / tin tức mạnh (giá cũ trước khi kịp gửi đi)
Triệu chứng: Lỗi 10004/10021 tập trung vào thời điểm công bố tin tức kinh tế, phát biểu của quan chức, hoặc sáng sớm thứ Hai.
Nguyên nhân: EA nhận tick, tính toán giá, và trong vài chục đến vài trăm mili-giây trước khi lệnh đến được server, giá đã dịch chuyển vài pips. Giá đã gửi không còn tồn tại nữa, nên server sẽ trả về requote (10004) hoặc không có báo giá (10021). Đây không hẳn là lỗi, mà là hiện tượng đương nhiên xảy ra khi thị trường biến động nhanh.
Cách xử lý:
- Dừng vào lệnh mới quanh thời điểm tin tức (bộ lọc tin tức). Các EA phân phối trên trang này mặc định tích hợp
EconomicFilter - Nới
deviation(trượt giá cho phép) lên mức hợp lý hơn (xem mục ②) - Thêm logic retry (trình bày ở phần code bên dưới)
② Deviation (trượt giá cho phép) bị đặt quá chặt
Triệu chứng: Lỗi xuất hiện lác đác ngay cả khi thị trường yên tĩnh. Lệnh thủ công vào bình thường nhưng chỉ EA bị từ chối.
Nguyên nhân: MqlTradeRequest.deviation là khai báo "chấp nhận lệch bao nhiêu points so với giá đã gửi". Nếu đặt giá trị này ở mức 0 đến vài points, ngay cả mức lệch thông thường khi giá tick cập nhật cũng đủ để bị từ chối. Việc nhầm lẫn giữa points và pips (với broker 5 chữ số, 1 pip = 10 points) cũng là lỗi thường gặp.
Cách xử lý:
- Thử đặt
deviationở mức khoảng 1030 points (= 13 pips). Nếu không phải chiến lược scalping, 20 points là điểm khởi đầu an toàn - Kiểm tra xem có bị nhầm đơn vị kiểu "tưởng deviation=5 là 5 pips nhưng thực ra chỉ là 0.5 pips" hay không
- Nếu chiến lược không chấp nhận bất kỳ trượt giá nào, hãy chấp nhận việc bị từ chối là đúng thiết kế, chỉ cần kiểm soát số lần retry
③ Khác biệt về phương thức khớp lệnh (requote là hiện tượng của instant execution)
Triệu chứng: Lỗi xảy ra liên tục ở broker A, nhưng chưa từng thấy ở broker B.
Nguyên nhân: Requote (10004) là hiện tượng đặc trưng của instant execution (khớp lệnh tức thì). Với instant execution, lệnh gửi đi mang ý nghĩa "khớp đúng giá này", nên khi giá thay đổi, server sẽ đề xuất lại giá mới (requote). Ngược lại, market execution (khớp lệnh theo thị trường) mang ý nghĩa "khớp theo giá thị trường hiện tại", nên về nguyên lý sẽ không xảy ra requote, mà thay vào đó lệnh vẫn được khớp với giá đã lệch (slippage).
Nói cách khác, "không bao giờ bị requote" không có nghĩa là "tốt hơn" — đây là sự đánh đổi giữa bị từ chối và bị trượt giá rồi vẫn khớp. Bạn có thể kiểm tra phương thức khớp lệnh của một symbol tại mục Execution trong "Đặc tả sản phẩm (Specification)" của MT5, hoặc trong code là SYMBOL_TRADE_EXEMODE.
Cách xử lý:
- Kiểm tra phương thức khớp lệnh của tài khoản mình đang dùng (nhiều broker nước ngoài dùng tài khoản chuẩn với market execution, nên sẽ không có requote)
- Nếu requote xảy ra thường xuyên gây cản trở chiến lược, cân nhắc chuyển sang loại tài khoản hoặc broker dùng market execution
- Ngay cả với market execution, có broker tôn trọng
deviationvà có broker thì không, nên nếu không chấp nhận trượt giá quá lớn, hãy kiểm tra mức trượt giá thực tế qua lịch sử khớp lệnh
④ Thời điểm hoặc sản phẩm có báo giá thưa / ngưng trệ
Triệu chứng: Lỗi 10021 xuất hiện quanh 0 giờ theo giờ server (rollover), ngay sau khi mở cửa đầu tuần, mùa nghỉ lễ Giáng sinh, hoặc trên các sản phẩm có thanh khoản thấp.
Nguyên nhân: Vào thời điểm rollover, việc xử lý swap có thể khiến báo giá tạm dừng hoặc spread giãn ra bất thường. Ngay sau khi mở cửa đầu tuần hoặc với các sản phẩm thanh khoản thấp, báo giá có thể xử lý được vốn dĩ đã thưa thớt. Nếu đặt lệnh trong tình trạng này, kết quả sẽ là lỗi 10021 (không có báo giá).
Cách xử lý:
- Tránh vào lệnh mới quanh 23:55~0:05 giờ server (bộ lọc thời gian)
- Tránh vài phút đầu tiên ngay sau khi mở cửa đầu tuần (cấu hình dạng
AvoidMondayOpen) - Áp dụng bộ lọc spread (
MaxSpread). Vì spread thường giãn ra vào các thời điểm báo giá thưa, đây cũng là cách tự động tránh các khung giờ này
⑤ Độ trễ đường truyền (VPS ở xa server của broker)
Triệu chứng: Tần suất lỗi rõ ràng cao hơn hẳn so với môi trường khác, bất kể thời điểm hay sản phẩm nào. Chỉ số ping cao.
Nguyên nhân: Thời gian khứ hồi (latency) để lệnh đến được server càng dài, xác suất giá bị thay đổi trong khoảng thời gian đó càng cao. Nếu chạy EA trên máy tính cá nhân ở nhà, hoặc VPS đặt ở khu vực xa nơi đặt server của broker (thường là London, New York...), tần suất 10004/10021 sẽ tăng lên một cách có tính cấu trúc. Chỉ số ping hiển thị ở góc dưới bên phải MT5 là một thước đo tham khảo (vài trăm mili-giây rõ ràng là bất lợi, dưới vài chục mili-giây là lý tưởng).
Cách xử lý:
- Kiểm tra chỉ số ping ở góc dưới bên phải MT5, nếu luôn cao thì cần xem lại môi trường chạy EA
- Chuyển sang VPS ở khu vực gần server của broker hơn. Thực tế thì lỗi 10004/10021 do độ trễ gây ra không thể giảm bằng code, mà chỉ có thể giải quyết bằng cách đặt vị trí vật lý gần hơn. Cách chọn VPS phù hợp được tổng hợp tại Hướng dẫn chọn VPS cho EA
- EA scalping càng chịu ảnh hưởng lớn từ độ trễ. Với EA khung thời gian ngày (D1) hoặc H4, mức độ ưu tiên của nguyên nhân này thấp hơn
Đoạn code MQL5 giúp giảm lỗi này (dành cho lập trình viên EA)
Có 3 hướng tiếp cận: (1) đặt deviation ở mức hợp lý, (2) khi bị từ chối thì lấy lại tick mới nhất rồi gửi lại lệnh, (3) chỉ retry với các retcode thuộc nhóm lỗi giá.
Đặt deviation theo đơn vị point một cách hợp lý
MqlTradeRequest req; MqlTradeResult res;
ZeroMemory(req); ZeroMemory(res);
req.action = TRADE_ACTION_DEAL;
req.symbol = _Symbol;
req.type = ORDER_TYPE_BUY;
req.volume = lots;
req.deviation = 20; // Trượt giá cho phép 20 points (5 chữ số thì tương đương 2.0 pips)
// cũng cần thiết lập req.price / req.sl / req.tp / req.magic...
Đơn vị của deviation là points. Với broker hiển thị 5 chữ số (3 chữ số), 10 points = 1 pip. Đặt giá trị 0 hoặc quá nhỏ sẽ làm tăng tỷ lệ bị từ chối một cách không cần thiết.
Chỉ retry với các retcode thuộc nhóm lỗi giá (gửi lại với tick mới nhất)
Điểm mấu chốt là mỗi lần retry phải lấy lại giá bằng SymbolInfoTick() (gửi lại với giá cũ thì chỉ nhận lại cùng một lỗi từ chối mà thôi), và chỉ giới hạn retry cho 10004/10021. Việc tự động gửi lại với lỗi thiếu vốn (10019) hay yêu cầu không hợp lệ (10013) sẽ không có ý nghĩa gì, chỉ làm log bị nhiễu.
bool IsRetryableRetcode(uint rc)
{
return (rc == TRADE_RETCODE_REQUOTE // 10004
|| rc == TRADE_RETCODE_PRICE_OFF); // 10021
}
// Cập nhật giá bằng tick mới nhất và gửi lại lệnh tối đa 3 lần
bool SendWithRetry(MqlTradeRequest &req, MqlTradeResult &res, int maxTries = 3)
{
for(int attempt = 0; attempt < maxTries; attempt++)
{
MqlTick tick;
if(!SymbolInfoTick(req.symbol, tick))
{
Print("SymbolInfoTick failed: ", GetLastError());
return false;
}
req.price = (req.type == ORDER_TYPE_BUY) ? tick.ask : tick.bid;
if(OrderSend(req, res) && res.retcode == TRADE_RETCODE_DONE)
return true; // Khớp lệnh thành công
if(!IsRetryableRetcode(res.retcode))
{
PrintFormat("OrderSend failed (no retry): retcode=%d", res.retcode);
return false; // Không retry với lỗi ngoài nhóm giá
}
PrintFormat("Retry %d/%d after retcode=%d", attempt + 1, maxTries, res.retcode);
Sleep(200 + 150 * attempt); // Chờ tăng dần 200ms → 350ms → 500ms
}
Print("Order abandoned after retries (price kept moving).");
return false;
}
Lý do tăng dần thời gian chờ của Sleep() là vì nếu gửi liên tục với 0ms ngay tại thời điểm biến động mạnh, bạn sẽ chỉ nhận lại cùng một lỗi từ chối liên tiếp. Ngược lại, chờ quá lâu sẽ khiến giá vào lệnh lệch xa khỏi kỳ vọng của chiến lược, nên nên bỏ cuộc sau 2~3 lần retry là hợp lý. Với lệnh chờ (TRADE_ACTION_PENDING), cần lưu ý retcode khi thành công sẽ là TRADE_RETCODE_PLACED (10008).
Sử dụng giá đề xuất lại của requote (10004)
Khi gặp lỗi 10004, giá đề xuất lại từ server sẽ nằm trong bid / ask của MqlTradeResult. Cách gửi lại lệnh với tick mới nhất như trên đã đủ dùng trong thực tế, nhưng nếu muốn xây dựng logic "chấp nhận giá đề xuất lại nếu nằm trong khoảng cho phép" đối với instant execution, bạn có thể so sánh chênh lệch theo points giữa res.ask / res.bid và giá dự kiến ban đầu trước khi gửi lại lệnh.
Tạo ra khung thời gian không vào lệnh ngay từ đầu
Retry trong code chỉ là giải pháp tình thế. Bộ lọc dừng vào lệnh mới quanh thời điểm rollover, quanh tin tức, hay khi spread giãn rộng mới thực sự giải quyết vấn đề tận gốc.
// Ví dụ bộ lọc spread: bỏ qua vào lệnh mới khi spread đang giãn rộng
long spreadPts = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD);
if(spreadPts > MaxSpreadPoints)
{
// Bỏ qua vào lệnh mới (tự động tránh được khung giờ dễ xảy ra lỗi 10021)
return;
}
Các EA do FXEA365 phân phối đều tích hợp sẵn bộ lọc spread, bộ lọc tin tức, và cơ chế tự động retry cho các retcode thuộc nhóm lỗi giá nói trên.
Bảng kiểm tra theo mức độ ưu tiên
| Ưu tiên | Kiểm tra | Cách xử lý |
|---|---|---|
| 🚨 Trước tiên | Có tập trung vào thời điểm công bố tin tức / biến động mạnh không | Bật bộ lọc tin tức, chấp nhận đây là đặc thù trong khung giờ đó |
| 🚨 Trước tiên | deviation có đang quá nhỏ không (đơn vị là points) | Điều chỉnh lên 10~30 points, kiểm tra nhầm lẫn pips/points |
| ⚠️ Tiếp theo | Có thiên về rollover, đầu tuần, sản phẩm ít giao dịch không | Bộ lọc thời gian + bộ lọc spread |
| ⚠️ Tiếp theo | Phương thức khớp lệnh có phải instant không | Cân nhắc tài khoản market execution (đánh đổi với slippage) |
| ⚠️ Tiếp theo | Ping có cao không (vài trăm mili-giây) | Chuyển sang VPS gần server hơn |
| 🛠 Phát triển | Retry có giới hạn cho retcode thuộc nhóm lỗi giá không | Lấy lại giá bằng SymbolInfoTick, dừng sau 2~3 lần |
Tổng kết
- 10021 (TRADE_RETCODE_PRICE_OFF) nghĩa là "không có báo giá để xử lý", còn 10004 (TRADE_RETCODE_REQUOTE) nghĩa là "đề xuất lại giá mới". Đây cùng thuộc nhóm lỗi từ chối giá như lỗi 136/138 thời MT4, không liên quan đến vốn hay khối lượng lệnh.
- Nguyên nhân tập trung vào 5 nhóm: biến động giá đột ngột, deviation quá nhỏ, instant execution, thời điểm/sản phẩm có báo giá thưa, và độ trễ đường truyền.
- Requote là hiện tượng đặc trưng của instant execution; với market execution, nó sẽ biểu hiện dưới dạng slippage thay thế. "Không xảy ra" không đồng nghĩa với "tốt hơn" — đây là sự đánh đổi.
- Lập trình viên EA nên xử lý lâu dài bằng cách retry 2~3 lần lấy lại tick mới nhất (chỉ giới hạn cho 10004/10021) + đặt deviation hợp lý + bộ lọc thời gian/spread. Riêng phần do độ trễ đường truyền chỉ có thể giảm bằng giải pháp vật lý (VPS gần broker hơn).
Xem đầy đủ các mã lỗi khác tại Hướng dẫn tổng hợp xử lý mã lỗi MQL5 / MT5, và các EA miễn phí đã tích hợp sẵn các giải pháp này tại Danh sách EA.
Câu hỏi thường gặp
Hỏi: 10004 và 10021, lỗi nào nghiêm trọng hơn?
Cả hai đều là lỗi tạm thời thuộc nhóm giá, mức độ nghiêm trọng không chênh lệch nhiều. 10004 là "được đề xuất lại giá mới", 10021 là "không có báo giá để xử lý" — chỉ khác nhau ở cách phản hồi. Nếu chỉ xảy ra đơn lẻ thì không cần lo lắng, chỉ khi lỗi lặp lại thường xuyên ở một khung giờ hoặc sản phẩm cụ thể thì mới cần xử lý nguyên nhân (tin tức, rollover, deviation, đường truyền).
Hỏi: Broker không bao giờ bị requote có phải là broker tốt không?
Nhiều khả năng đây chỉ là do khác biệt về phương thức khớp lệnh. Với tài khoản market execution, requote về nguyên lý sẽ không xảy ra, và khi giá thay đổi, lệnh vẫn được khớp với giá đã lệch (slippage). Đây là sự đánh đổi giữa bị từ chối và bị trượt giá, nên hãy kiểm tra mức trượt giá thực tế qua lịch sử khớp lệnh để đánh giá.
Hỏi: EA trên MT4 báo lỗi 136 / 138, xử lý giống vậy được không?
Được. Lỗi 136 (ERR_OFF_QUOTES) tương ứng với 10021, lỗi 138 (ERR_REQUOTE) tương ứng với 10004, cả nguyên nhân lẫn cách xử lý đều giống nhau. Với MQL4, cách xử lý kinh điển là gọi RefreshRates() để cập nhật Bid / Ask trước khi gửi lại lệnh — cùng ý tưởng với việc lấy lại giá bằng SymbolInfoTick() trong MQL5.
Hỏi: Backtest không thấy lỗi này nhưng khi chạy thật lại gặp?
Đây là điều bình thường. Strategy Tester không có (hoặc đã được đơn giản hóa) "độ trễ để lệnh đến được server" và "biến động giá trong khoảng thời gian đó", nên lỗi 10004/10021 chỉ xuất hiện rõ khi chạy forward thực tế. Dù backtest cho kết quả tốt, khi chạy thật vẫn cần thiết lập riêng về deviation, retry, và môi trường thực thi (VPS).
Liên quan
📧 Cảnh báo trước khi tăng giá + khóa học email miễn phí 5 ngày
Tất cả EA đang ở giá ra mắt và tăng dần theo doanh số. Nhận thông báo trước mỗi lần tăng giá, cùng email hằng ngày về giao dịch thuật toán, cách đọc backtest và chọn sàn.
* Quyền riêng tư được bảo vệ nghiêm ngặt. Bạn có thể hủy đăng ký bất cứ lúc nào.