Mã lỗi MT5: 10027, 10030, 10016 và các mã khác
Mục lục
Mã Lỗi MT5 / MQL5: Retcode 10004–10031 và Lỗi Runtime
MT5 báo hai loại lỗi: mã trả về giao dịch (retcode) gồm 5 chữ số (ví dụ 10027 AutoTrading bị tắt, 10030 kiểu khớp lệnh không được hỗ trợ, 10016 stop không hợp lệ, 10019 không đủ tiền) và lỗi runtime gồm 4 chữ số từ GetLastError() (ví dụ 4401, 4756) — bảng dưới đây đối chiếu từng mã với cách khắc phục.
Tra Cứu Nhanh: Mã → Ý Nghĩa → Cách Khắc Phục
Số mã và tên hằng số tuân theo tài liệu tham khảo chính thức của MQL5 (mã trả về của máy chủ giao dịch và lỗi runtime).
Mã trả về giao dịch (MqlTradeResult.retcode)
| Mã | Hằng số | Ý nghĩa | Cách khắc phục | Chi tiết |
|---|---|---|---|---|
| 10004 | TRADE_RETCODE_REQUOTE | Requote — giá đã thay đổi trước khi khớp lệnh | Nới rộng độ lệch cho phép, hoặc gửi lại lệnh theo giá mới | Off quotes & requote |
| 10006 | TRADE_RETCODE_REJECT | Yêu cầu bị từ chối | Thường do spread rộng hoặc thị trường biến động nhanh; hãy để EA thử lại ở một tick sau đó | — |
| 10013 | TRADE_RETCODE_INVALID | Yêu cầu không hợp lệ | Một trường của yêu cầu (action, loại lệnh, symbol) bị sai; hãy kiểm tra bằng OrderCheck() trước khi gửi | — |
| 10014 | TRADE_RETCODE_INVALID_VOLUME | Khối lượng trong yêu cầu không hợp lệ | Làm tròn lot theo mức tối thiểu, tối đa và bước khối lượng của symbol (SYMBOL_VOLUME_MIN / MAX / STEP) | — |
| 10015 | TRADE_RETCODE_INVALID_PRICE | Giá trong yêu cầu không hợp lệ | Chuẩn hóa giá theo số chữ số thập phân và tick size của symbol; đảm bảo lệnh chờ nằm đúng phía so với giá thị trường | — |
| 10016 | TRADE_RETCODE_INVALID_STOPS | Stop trong yêu cầu không hợp lệ | Đặt SL/TP cách xa hơn stops level của broker và nằm đúng phía so với giá | Invalid stops |
| 10017 | TRADE_RETCODE_TRADE_DISABLED | Giao dịch bị vô hiệu hóa | Kiểm tra trade mode của symbol trong Specification và đảm bảo bạn đăng nhập bằng mật khẩu giao dịch (không phải mật khẩu investor); nếu vẫn lỗi, hãy hỏi broker | — |
| 10018 | TRADE_RETCODE_MARKET_CLOSED | Thị trường đóng cửa | Chờ phiên giao dịch của symbol mở cửa | Thị trường đóng cửa |
| 10019 | TRADE_RETCODE_NO_MONEY | Không đủ tiền để hoàn tất yêu cầu | Giảm khối lượng lot, đóng bớt lệnh hoặc nạp thêm tiền | Không đủ tiền |
| 10021 | TRADE_RETCODE_PRICE_OFF | Không có báo giá để xử lý yêu cầu | Kiểm tra kết nối và xem symbol hiện có đang được báo giá hay không, rồi thử lại | Off quotes & requote |
| 10026 | TRADE_RETCODE_SERVER_DISABLES_AT | Giao dịch tự động bị máy chủ vô hiệu hóa | Broker chặn giao dịch thuật toán trên tài khoản này; hãy liên hệ broker | AutoTrading bị tắt |
| 10027 | TRADE_RETCODE_CLIENT_DISABLES_AT | Giao dịch tự động bị terminal phía khách hàng vô hiệu hóa | Bật nút Algo Trading và cho phép algo trading trong Options cũng như trong thuộc tính của EA | AutoTrading bị tắt |
| 10030 | TRADE_RETCODE_INVALID_FILL | Kiểu khớp lệnh không hợp lệ | Đặt type_filling thành chế độ mà symbol hỗ trợ (FOK / IOC / Return) | Kiểu khớp lệnh không được hỗ trợ |
| 10031 | TRADE_RETCODE_CONNECTION | Không có kết nối với máy chủ giao dịch | Kiểm tra thanh trạng thái kết nối, mạng của VPS và tình trạng máy chủ của broker | — |
Lỗi runtime (GetLastError())
| Mã | Hằng số | Ý nghĩa | Cách khắc phục | Chi tiết |
|---|---|---|---|---|
| 4001 | ERR_INTERNAL_ERROR | Lỗi nội bộ không mong muốn | Không gắn với một nguyên nhân cụ thể: hãy gọi ResetLastError() trước hàm bạn đang kiểm tra, sau đó khởi động lại hoặc cập nhật terminal nếu lỗi vẫn còn | — |
| 4401 | ERR_HISTORY_NOT_FOUND | Không tìm thấy lịch sử được yêu cầu | Gọi HistorySelect() cho khoảng thời gian chứa deal hoặc lệnh đó trước khi đọc | — |
| 4752 | ERR_TRADE_DISABLED | Expert Advisor bị cấm giao dịch | Bật Algo Trading và đánh dấu "Allow Algo Trading" trong thuộc tính của EA | AutoTrading bị tắt |
| 4756 | ERR_TRADE_SEND_FAILED | Gửi yêu cầu giao dịch thất bại | OrderSend() trả về false; hãy đọc MqlTradeResult.retcode để biết nguyên nhân thực sự (thường là 10027, 10030 hoặc 10016) | — |
Bạn chuyển từ MT4 sang? MT4 dùng các số khác, chủ yếu gồm 3 chữ số, cho cùng những tình huống này (134, 130, 132, 136, 4109 …). Mỗi mục bên dưới đều ghi mã tương đương trên MT4, lấy từ tài liệu tham khảo chính thức của MQL4. Lưu ý rằng trên MT5, số 4109 có nghĩa là ERR_CHART_WRONG_PROPERTY (một lỗi biểu đồ), không phải lỗi giao dịch.
Cách Kiểm Tra Tab Experts
Nhấp vào tab Experts ở phía dưới MT5 để xem log theo thứ tự thời gian của toàn bộ hoạt động EA.
Định dạng log:
2026.05.18 10:00:01.234 GOLD VIPER XAUUSD,M30: [ERROR] 10016
Thời gian Tên EA Symbol Khung TG Thông báo
Khi có lỗi xuất hiện, hãy dùng số mã để tìm nguyên nhân trong bảng ở trên.
Các Mã Lỗi Thường Gặp và Cách Xử Lý
10019 — Không đủ tiền (TRADE_RETCODE_NO_MONEY)
Mã tương đương trên MT4: 134 ERR_NOT_ENOUGH_MONEY. ERR_NO_MONEY là cách gọi tắt được dùng rộng rãi cho cùng tình huống này.
Ví dụ thông báo: "Order failed: not enough money"
"No money"
Nguyên nhân: Không đủ ký quỹ — EA không thể mở lệnh mới.
Cách xử lý:
- Kiểm tra mức ký quỹ (margin level) hiện tại trong tab Trade của MT5
- Nếu mức ký quỹ gần hoặc dưới 100%, hãy cân nhắc nạp thêm tiền
- Giảm thiết lập
RiskPercentcủa EA để thu nhỏ khối lượng lệnh - Đóng thủ công một số lệnh đang mở để giải phóng ký quỹ
📖 Để biết vì sao lỗi xuất hiện ngay cả khi số dư có vẻ ổn, cùng đoạn mã MQL5 giúp ngăn chặn lỗi, hãy xem Not enough money trên MT5 — nguyên nhân và cách khắc phục.
10027 — AutoTrading bị tắt ở phía khách hàng (TRADE_RETCODE_CLIENT_DISABLES_AT)
Lỗi runtime MT5 liên quan: 4752 ERR_TRADE_DISABLED. Mã tương đương trên MT4: 4109 ERR_TRADE_NOT_ALLOWED.
Ví dụ thông báo: "AutoTrading disabled by client"
"Trade is not allowed"
Nguyên nhân: Giao dịch tự động đang bị tắt trong MT5.
Cách xử lý:
- Nhấp vào nút Algo Trading trên thanh công cụ MT5 để bật (nút sẽ chuyển sang màu xanh)
- Vào Tools → Options → Expert Advisors → bật Allow Algo Trading, rồi khởi động lại MT5
Lỗi này thường xảy ra khi MT5 tự khởi động sau khi VPS khởi động lại.
📖 Để xem toàn bộ chuỗi quyền (thiết lập trong Options, Allow Algo Trading theo từng biểu đồ, mật khẩu investor và sự khác nhau giữa 10027 và 10026), hãy xem AutoTrading disabled trên MT5 — cách khắc phục đầy đủ.
10018 — Thị trường đóng cửa (TRADE_RETCODE_MARKET_CLOSED)
Mã tương đương trên MT4: 132 ERR_MARKET_CLOSED.
Ví dụ thông báo: "Market closed"
Nguyên nhân: EA cố vào lệnh ngoài giờ thị trường (cuối tuần hoặc ngày lễ).
Cách xử lý: Không cần làm gì. Thị trường đóng cửa vào cuối tuần, và mọi lần thử vào lệnh trong khoảng thời gian đó đều tạo ra lỗi này; EA sẽ tự động tiếp tục khi thị trường mở cửa trở lại.
📖 Gặp lỗi này vào ngày thường? Phiên giao dịch của symbol, giờ máy chủ và chế độ close-only được trình bày trong Market closed (10018/132) — nguyên nhân và cách khắc phục.
10016 — Stop không hợp lệ (TRADE_RETCODE_INVALID_STOPS)
Mã tương đương trên MT4: 130 ERR_INVALID_STOPS.
Ví dụ thông báo: "Invalid stops"
Nguyên nhân: Giá trị SL (stop loss) hoặc TP (take profit) vi phạm yêu cầu về stop level tối thiểu của broker.
Cách xử lý:
- Kiểm tra stop level của broker (khoảng cách SL tối thiểu): nhấp chuột phải vào symbol trong MT5 → Specification → tìm trường Stops level
- Đảm bảo khoảng cách SL của EA lớn hơn stop level
- Lỗi này phổ biến nhất trong các giai đoạn biến động thấp khi giá trị ATR rất nhỏ
📖 Để hiểu stop level thực sự hoạt động thế nào, sự khác nhau giữa 10016 và 130, cùng đoạn mã MQL5 ngăn lỗi này triệt để, hãy xem Invalid stops (10016/130) — cách khắc phục đầy đủ.
10021 — Không có báo giá (TRADE_RETCODE_PRICE_OFF)
Mã tương đương trên MT4: 136 ERR_OFF_QUOTES.
Ví dụ thông báo: "Off quotes"
Nguyên nhân: Không nhận được báo giá từ máy chủ broker — vấn đề về kết nối.
Cách xử lý:
- Kiểm tra trạng thái kết nối trên thanh trạng thái của MT5 ở cuối màn hình
- Nếu bị ngắt kết nối, hãy khởi động lại MT5
- Xem trang trạng thái máy chủ của broker để biết có sự cố hay không
- Xác minh kết nối mạng trên VPS của bạn
📖 Để biết sự khác nhau so với requote (10004/138), cách tinh chỉnh độ lệch và cách triển khai thử lại, hãy xem Off quotes & requote (10021/10004) — cách khắc phục đầy đủ.
📖 Gặp Unsupported filling mode (10030) ngay sau khi đổi broker? Đó là một vấn đề khác — hãy xem Unsupported filling mode (10030) — cách khắc phục.
10012 — Yêu cầu hết thời gian chờ (TRADE_RETCODE_TIMEOUT)
Mã tương đương trên MT4: 128 ERR_TRADE_TIMEOUT.
Ví dụ thông báo: "Request canceled by timeout"
Nguyên nhân: Lệnh hết thời gian chờ do máy chủ quá tải hoặc độ trễ mạng.
Cách xử lý:
- Lỗi này phổ biến nhất ngay sau các tin tức lớn khi tải máy chủ cao
- EA thường sẽ thử lại ở tick tiếp theo — không cần làm gì
- Nếu xảy ra thường xuyên, hãy xem lại môi trường mạng của VPS hoặc cân nhắc một broker khác
10006 — Yêu cầu bị từ chối (TRADE_RETCODE_REJECT)
Ví dụ thông báo: "Request rejected"
Nguyên nhân: Broker từ chối lệnh — thường do spread vượt giới hạn hoặc giá biến động quá nhanh.
Cách xử lý:
- Xem lại thiết lập
MaxSpreadPoints; lỗi này hay gặp khi spread giãn rộng đáng kể - Trong lúc và ngay sau khi công bố tin tức, đây là hành vi dễ hiểu — bạn có thể bỏ qua
- Nếu xảy ra thường xuyên, hãy tăng nhẹ giá trị
MaxSpreadPoints
"Margin level too low"
Ví dụ thông báo: "Margin level too low. Skip signal."
Nguyên nhân: Thiết lập UseMarginCheck = true của EA phát hiện mức ký quỹ đã xuống dưới MinMarginLevel (ví dụ 200%), nên các lệnh mới tự động bị chặn.
Cách xử lý:
- Đây là hành vi bảo vệ bình thường — không phải lỗi
- Việc vào lệnh sẽ tự động tiếp tục khi mức ký quỹ phục hồi
- Giải pháp căn bản: nạp thêm tiền hoặc giảm
RiskPercent
"No signal on this bar" hoặc "Wait for next bar"
Đây không phải lỗi — đây là các dòng log debug.
"No signal. ATR=1245, EMA(50)=1998.23"
EA đánh giá biểu đồ ở mỗi bar và ghi log khi điều kiện vào lệnh chưa được đáp ứng. Đây là hoạt động bình thường.
Phân Loại Mức Độ Ưu Tiên của Lỗi
| Mức độ | Lỗi | Xử lý |
|---|---|---|
| Khẩn cấp | 10019 Không đủ tiền (MT4: 134) | Nạp tiền hoặc giảm khối lượng lot ngay lập tức |
| Khẩn cấp | 10027 AutoTrading bị tắt / 4752 (MT4: 4109) | Bật Algo Trading |
| Chú ý | 10016 Stop không hợp lệ (MT4: 130) | Xem lại thiết lập SL |
| Chú ý | 10030 Kiểu khớp lệnh không hợp lệ | Đặt chế độ khớp lệnh mà symbol hỗ trợ |
| Chú ý | 10021 Không có báo giá (MT4: 136) lặp lại | Kiểm tra kết nối |
| Bình thường | 10018 Thị trường đóng cửa (MT4: 132) chỉ cuối tuần | Không cần làm gì |
| Bình thường | 10012 Hết thời gian chờ (MT4: 128) thỉnh thoảng | Không cần làm gì |
| Bình thường | Margin level too low | Cơ chế bảo vệ bình thường khi ký quỹ thấp |
Cách Đọc Tab Experts Hiệu Quả
Lọc Log
Nhấp chuột phải bên trong tab Experts và chọn Filter để chỉ hiển thị log của một EA hoặc một loại lỗi cụ thể.
Vị Trí Lưu File Log
File log của MT5 được lưu tại đây:
C:\Users\[TênNgườiDùng]\AppData\Roaming\MetaQuotes\Terminal\[ID]\MQL5\Logs\
Các file được tạo tự động theo ngày. Hãy mở thư mục này khi điều tra lỗi.
Tóm Tắt
Hầu hết các lỗi EA thuộc bốn nhóm:
- Thiếu ký quỹ (10019) — Nạp thêm tiền hoặc giảm khối lượng lot
- AutoTrading tắt (10027 / 4752) — Nhấp vào nút Algo Trading để bật
- Vấn đề kết nối (10021 / 10031) — Khởi động lại MT5 hoặc kiểm tra mạng VPS
- Hoạt động bình thường — Không cần làm gì (thị trường đóng cửa cuối tuần, né spread, v.v.)
Hãy tập thói quen kiểm tra tab Experts hằng ngày để nhanh chóng phát hiện các lỗi nghiêm trọng (10019 và 10027) trước khi chúng gây ra vấn đề.
Câu Hỏi Thường Gặp
H: Tôi có thể tra cứu mã lỗi ở đâu?
Tài liệu tham khảo chính thức của MQL5 liệt kê mọi mã: mã trả về của máy chủ giao dịch cho dải 10004–10046 và lỗi runtime cho dải 4xxx. Bạn cũng có thể tìm kiếm trong phần trợ giúp tích hợp của MT5 (nhấn F1).
H: Retcode và GetLastError() khác nhau thế nào?
Retcode (10004–10046) là phản hồi của máy chủ giao dịch đối với một lệnh và được lưu trong MqlTradeResult.retcode. GetLastError() trả về lỗi runtime của chính chương trình MQL5 (4xxx và 5xxx). Khi OrderSend() thất bại, bạn thường nhận được cả hai: 4756 từ GetLastError() cùng một retcode cho biết nguyên nhân thực sự.
H: Tôi có nên dừng EA nếu lỗi xuất hiện thường xuyên không?
Nếu 10018 (thị trường đóng cửa) hoặc 10012 (hết thời gian chờ) thỉnh thoảng xuất hiện thì không cần dừng EA. Tuy nhiên, nếu 10019 (không đủ tiền) lặp lại, hãy tạm dừng EA, xem lại tình trạng ký quỹ và chạy lại sau khi đã xử lý.
H: Tôi đang gặp lỗi "Invalid account".
Thông tin đăng nhập MT5 của bạn (tên máy chủ, ID đăng nhập hoặc mật khẩu) có thể không chính xác. Vào File → Open an Account để đăng nhập lại.
H: Không có lỗi nào hiển thị nhưng EA không vào lệnh nào.
Nếu không có lỗi và cũng không có lệnh nào, EA chỉ đang chờ điều kiện vào lệnh được đáp ứng — điều này hoàn toàn bình thường. EA không vào lệnh ở mọi cây nến; chúng chỉ vào khi tất cả điều kiện cùng hội tụ. Hãy chờ thêm một thời gian. Một EA khung H1 vào lệnh từ một đến ba lần mỗi ngày là đang hoạt động bình thường.
Liên quan
📧 Khóa học email miễn phí (8 email) + gói 13 chỉ báo MT5 dành riêng cho người đăng ký
Ngay sau khi đăng ký, bạn nhận được liên kết tải gói dành riêng cho người đăng ký gồm 13 chỉ báo MT5 của chúng tôi: tệp đã biên dịch (.ex5), mã nguồn và hướng dẫn cài đặt. Sau đó là 8 email về nền tảng giao dịch tự động, cách đọc backtest đúng và cách chọn sàn (mỗi ngày một email trong 5 ngày đầu, sau đó vào ngày thứ 7, 14 và 30 kể từ khi đăng ký). Bạn cũng được báo trước mỗi lần tăng giá của các phiên bản bán trên MQL5 Market (giá ra mắt tăng dần theo doanh số). Trên trang này, EA của chúng tôi miễn phí khi có tài khoản thật tại sàn đối tác.
* 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.
Bạn có câu hỏi về EA hay Forex?
Bạn có thể đăng câu hỏi trên diễn đàn giao dịch Nattzy (đăng ký miễn phí). Không nhất thiết liên quan đến bài viết này — cài đặt EA, chọn sàn môi giới, v.v. đều được.
Hỏi trên Nattzy ↗