Nhập môn và giao dịch
Lệnh giới hạn không khớp, khớp một phần hoặc bị hủy: nguyên nhân và cách xử lý
Lệnh giới hạn treo mãi, chỉ khớp một phần hay bỗng báo đã hủy, hết hạn thường là do quy tắc của lệnh. Bài viết dùng ảnh chụp sổ lệnh thật để tính thứ tự xếp hàng và phần khớp, đối chiếu bảng trạng thái lệnh, và hướng dẫn xử lý phần lẻ không bán được, IOC/FOK, Post Only và lệnh bị từ chối.
Đặt lệnh giới hạn mãi không khớp, chỉ khớp được một phần, hoặc lệnh bỗng hiện "Đã hủy", "Hết hạn" là những tình huống khiến người mới bối rối nhất trên sàn giao dịch. Phần lớn trường hợp không phải lỗi hệ thống, mà là quy tắc của lệnh đang vận hành đúng như thiết kế. Bài này dùng một ảnh chụp sổ lệnh thật và quy tắc giao dịch công khai để giải thích nguyên nhân của từng trạng thái và việc bạn nên làm tiếp theo.
Đọc hiểu trạng thái lệnh: tên gọi giữa các sàn gần như giống nhau
Chữ hiển thị trên ứng dụng mỗi sàn khác nhau, nhưng trạng thái mà công cụ khớp lệnh trả về khá thống nhất. Hình dưới là bảng định nghĩa trạng thái lệnh trong tài liệu API giao dịch giao ngay của Binance, rất tiện để đối chiếu:

Nguồn ảnh: Tài liệu Binance Spot API: ENUM Definitions, chụp ngày 8/10/2026.
Đối chiếu với chữ thường gặp trên ứng dụng:
| Chữ thường thấy trên ứng dụng | Trạng thái API | Ý nghĩa |
|---|---|---|
| Chưa khớp, đang chờ | NEW | Lệnh đã được chấp nhận và đang chờ trên sổ lệnh |
| Khớp một phần | PARTIALLY_FILLED | Một phần khối lượng đã khớp, phần còn lại vẫn chờ |
| Đã khớp toàn bộ | FILLED | Toàn bộ khối lượng đã khớp |
| Đã hủy | CANCELED | Người dùng tự hủy lệnh |
| Bị từ chối, đặt lệnh thất bại | REJECTED | Công cụ khớp lệnh không chấp nhận, lệnh chưa từng vào sổ lệnh |
| Hết hạn, hệ thống hủy | EXPIRED | Bị hủy theo quy tắc của loại lệnh hoặc do sàn hủy |
| Hủy do chống tự khớp | EXPIRED_IN_MATCH | Lệnh sẽ khớp với lệnh chờ của chính tài khoản bạn (hoặc cùng nhóm tài khoản) nên bị cơ chế chống tự khớp (STP) chặn |
Hai điểm người mới hay hiểu nhầm:
- EXPIRED không có nghĩa là bạn đã bấm hủy. Tài liệu nêu ví dụ: lệnh giới hạn FOK không khớp được toàn bộ, lệnh giới hạn IOC hoặc lệnh thị trường chỉ khớp một phần thì phần còn lại sẽ hết hiệu lực theo quy tắc; lệnh bị sàn hủy khi bảo trì hoặc thanh lý cũng thuộc nhóm này.
- REJECTED nghĩa là lệnh chưa hề được đặt lên sổ, không chiếm số dư và không có giao dịch nào phát sinh.
Trường hợp 1: Lệnh giới hạn mãi không khớp
Lệnh giới hạn chỉ khớp ở "giá của bạn hoặc giá tốt hơn". Lệnh mua đặt thấp hơn giá bán thấp nhất hiện tại, hay lệnh bán đặt cao hơn giá mua cao nhất hiện tại, thì phải chờ thị trường đi đến mức giá đó.
Dưới đây là sổ lệnh BTC/USDT do giao diện dữ liệu công khai của Kraken trả về (ảnh chụp lúc 16:09:04 ngày 8/10/2026 giờ Việt Nam, 8 mức giá đầu):

Nguồn ảnh: Kraken API công khai: Depth. Số liệu thay đổi liên tục, ở đây chỉ dùng đúng thời điểm chụp.
Giả sử đúng lúc đó bạn đặt lệnh giới hạn mua ở giá 83.030 USDT:
- Giá bán thấp nhất là 83.036,1, cao hơn giá của bạn 6,1 USDT, nên lệnh không khớp ngay mà vào phía mua để chờ.
- Xếp trước bạn là các lệnh mua giá cao hơn: 83.036,0 (0,007 BTC), 83.033,5 (0,022 BTC), 83.033,4 (0,121 BTC), 83.031,6 (0,010 BTC), tổng cộng 0,160 BTC.
- Quy tắc khớp lệnh là "ưu tiên giá, rồi ưu tiên thời gian": người bán phải bán hết 0,160 BTC này thì mới đến lượt mức 83.030; kể cả khi có người bán ở 83.030, các lệnh cùng giá đặt sớm hơn bạn vẫn khớp trước.
Vì vậy lý do phổ biến nhất của việc "treo lâu không khớp" chỉ đơn giản là: giá chưa chạm tới lệnh của bạn, hoặc đã chạm nhưng bạn đứng sau trong hàng chờ.
Cách xử lý:
- Kiểm tra lại chiều lệnh và giá có nhập sai không (ví dụ muốn mua mà chọn bán, thừa hoặc thiếu một chữ số).
- Mở sổ lệnh xem giá của bạn cách giá mua/bán tốt nhất bao xa. Khoảng cách lớn nghĩa là khó khớp trong thời gian ngắn.
- Quyết định "chờ" hay "đuổi giá": nếu chấp nhận trả thêm một chút để được khớp, hãy hủy và đặt lại gần giá bán tốt nhất, hoặc dùng lệnh thị trường; khác biệt giữa hai cách xem thêm ở bài lệnh thị trường và lệnh giới hạn khác nhau về giá khớp ra sao.
- Trong lúc lệnh đang chờ, số tiền tương ứng bị phong tỏa. Nếu ở chỗ khác bạn thấy báo "số dư khả dụng không đủ", thường là do lệnh chưa khớp này đang giữ tiền; hủy lệnh thì tiền mới được giải phóng.
Trường hợp 2: Lệnh chỉ khớp một phần
Khớp một phần xảy ra khi phía đối ứng không đủ khối lượng ở mức giá của bạn. Cũng với ảnh chụp trên, giả sử bạn đặt lệnh giới hạn mua 0,8 BTC ở giá 83.042,7:
| Mức giá bán bị khớp | Khối lượng khớp (BTC) | Thành tiền (USDT) |
|---|---|---|
| 83.036,1 | 0,030 | 2.491,083 |
| 83.038,7 | 0,556 | 46.169,517 |
| 83.042,7 | 0,121 | 10.048,167 |
| Tổng | 0,707 | 58.708,767 |
- 0,707 BTC khớp ngay, giá khớp trung bình khoảng 83.039,27 USDT (chưa tính phí).
- 0,093 BTC còn lại không mua ở mức 83.043,4 tiếp theo vì vượt giá giới hạn của bạn; phần này nằm lại trên sổ lệnh ở giá 83.042,7 và trở thành giá mua cao nhất mới, trạng thái lệnh chuyển thành "khớp một phần".
- 0,707 BTC đã khớp là giao dịch đã hoàn tất. Hủy lệnh chỉ rút lại 0,093 BTC chưa khớp, không hoàn lại phần đã khớp.
Lưu ý thêm: phần khớp ngay là bạn ăn lệnh chờ của người khác (Taker), còn phần nằm chờ trên sổ nếu khớp sau đó sẽ tính là bên đặt lệnh chờ (Maker); hai bên có thể chịu phí khác nhau, chi tiết xem cách phân biệt Maker, Taker và chênh lệch phí.
Sau khi khớp một phần, bạn có thể chọn:
- Giữ phần còn lại: bạn vẫn muốn mua ở giá này và sẵn sàng chờ.
- Hủy phần còn lại: lượng đã mua là đủ, hoặc giá đã rời xa mức của bạn.
- Hủy rồi đặt lại giá mới: muốn khớp hết thì đặt lại khối lượng còn lại với giá mới. Trước khi đổi giá, hãy ước tính chi phí phải trả thêm để không đuổi giá chỉ vì một phần lẻ; cách tính chênh lệch giá và trượt giá xem bài tính chi phí trượt giá và chênh lệch mua bán.
Trường hợp 3: Phần lẻ còn lại quá nhỏ, không bán được
Sau khi khớp một phần hoặc trừ phí, thường sẽ còn lại một lượng rất nhỏ. Mỗi cặp giao dịch đều có quy định đặt lệnh tối thiểu, lượng quá nhỏ không thể đặt riêng. Dưới đây là quy tắc giao dịch BTC/USDT công khai của Kraken:

Nguồn ảnh: Kraken API công khai: AssetPairs, chụp ngày 8/10/2026.
Ý nghĩa các trường:
ordermin: 0.00005: mỗi lệnh tối thiểu 0,00005 BTC.costmin: 0.5: giá trị lệnh tối thiểu 0,5 USDT.tick_size: 0.1: giá chỉ được đặt theo bước 0,1 USDT, ví dụ đặt được 83.030,1 nhưng không đặt được 83.030,15.
Vì vậy nếu bạn còn 0,00003 BTC, dù theo giá ở ảnh chụp trên trị giá khoảng 2,49 USDT, đã vượt mức tối thiểu 0,5 USDT, khối lượng vẫn dưới 0,00005 BTC nên lệnh bán sẽ bị từ chối. Cách xử lý thường gặp: sau này mua thêm một ít để vượt ngưỡng rồi bán gộp, hoặc dùng chức năng đổi tài sản nhỏ mà sàn cung cấp (tên gọi và điều kiện mỗi sàn khác nhau, hãy theo hướng dẫn của sàn đó).
Con số ở mỗi sàn, mỗi cặp giao dịch đều khác nhau và có thể được điều chỉnh; khi lệnh bị từ chối, hãy đọc thông báo ở khu vực đặt lệnh và trang quy tắc giao dịch của cặp đó trước.
Trường hợp 4: Lệnh bị hủy, hết hạn hoặc bị từ chối
Dựa vào bảng trạng thái ở trên, xác định trước là loại nào rồi xử lý tương ứng:
| Bạn thấy | Nguyên nhân có thể | Nên làm gì |
|---|---|---|
| Bị từ chối (REJECTED) | Sai bước giá, khối lượng, giá trị tối thiểu; số dư không đủ; cặp giao dịch tạm dừng hoặc chỉ cho phép hủy lệnh | Sửa giá hoặc khối lượng theo thông báo, kiểm tra số dư khả dụng; cặp giao dịch bất thường thì tạm dừng |
| Hết hạn, và bạn dùng IOC hoặc FOK | IOC: khớp được bao nhiêu thì khớp, phần còn lại hết hiệu lực ngay; FOK: không khớp được toàn bộ thì hủy cả lệnh | Muốn giữ phần chưa khớp thì dùng lệnh giới hạn thông thường (GTC, treo đến khi khớp hoặc tự hủy) |
| Hết hạn, và bạn dùng Post Only (chỉ làm Maker) | Loại lệnh này sẽ bị từ chối hoặc hủy nếu khớp ngay, để bảo đảm bạn chỉ là bên đặt lệnh chờ | Đặt giá mua thấp hơn giá bán tốt nhất, giá bán cao hơn giá mua tốt nhất |
| Lệnh thị trường khớp một phần rồi hết hạn | Sổ lệnh không đủ sâu, hoặc chạm cơ chế bảo vệ giá của sàn | Kiểm tra khối lượng và giá khớp trung bình thực tế; phần còn lại chia nhỏ hoặc dùng lệnh giới hạn |
| Hủy do chống tự khớp (EXPIRED_IN_MATCH) | Lệnh mới sẽ khớp với lệnh chờ của chính tài khoản bạn | Hủy lệnh chờ ngược chiều cũ của mình trước, rồi đặt lại |
| Hệ thống hủy, không đặt được lệnh | Sàn bảo trì, cặp giao dịch bị gỡ hoặc tạm dừng, tài khoản bị hạn chế | Xem thông báo của sàn và thông báo trong tài khoản; tài khoản bị hạn chế thì làm theo hướng dẫn của sàn, đừng thử đi thử lại |
Kiểm tra cố định sau khi xem trạng thái
Dù gặp tình huống nào, xử lý xong hãy đối chiếu một lượt để tránh hiểu sai:
- Xem chi tiết khớp lệnh, không chỉ xem trạng thái. Lệnh "đã hủy" có thể đã khớp một phần trước đó; vào lịch sử giao dịch để xác nhận khối lượng khớp thực tế, giá trung bình và phí.
- Đối chiếu số dư khả dụng. Bảo đảm tiền bị phong tỏa của lệnh đã hủy đã được giải phóng.
- Tránh đặt trùng lệnh. Khi trang bị treo hoặc mạng không ổn định, hãy tải lại và xem "lệnh đang mở", chắc chắn lệnh cũ không còn rồi mới đặt lại, nếu không có thể khớp cả hai lệnh.
- Xem lại giá trước khi đặt lại. Từ lúc hủy đến lúc đặt lại, thị trường có thể đã thay đổi; hãy dựa vào sổ lệnh mới để chọn mức giá.
Câu hỏi thường gặp
Lệnh khớp một phần có hủy toàn bộ để lấy lại hết tiền được không?
Không. Hủy chỉ rút lại phần chưa khớp; phần đã khớp là giao dịch đã hoàn tất, muốn đảo ngược thì phải đặt một lệnh bán (hoặc mua) khác và trả thêm một lần phí cùng chênh lệch giá.
Lệnh giới hạn có treo mãi không?
Đa số sàn mặc định lệnh giới hạn là GTC (Good Till Canceled), treo đến khi khớp hoặc bạn tự hủy. Tuy vậy sàn vẫn có thể hủy khi bảo trì hay gỡ cặp giao dịch; nếu bạn chọn IOC, FOK hoặc lệnh có thời hạn thì lệnh sẽ hết hiệu lực sớm theo quy tắc.
Giá đã chạm mức của tôi, sao lệnh vẫn chưa khớp?
Các lệnh cùng mức giá khớp theo thứ tự thời gian. Khi giá thị trường "chạm" mức của bạn, có thể chỉ đủ khớp các lệnh xếp trước rồi giá bật lại. Nếu được khớp quan trọng hơn giá, hãy điều chỉnh giá nhích về phía đối ứng một chút.
Lệnh bị từ chối có bị trừ phí không?
Lệnh bị từ chối không vào sổ lệnh và không khớp, mà phí chỉ phát sinh khi khớp lệnh; nếu tài khoản có khoản trừ không rõ, hãy xem lịch sử giao dịch và chi tiết tài sản rồi liên hệ bộ phận hỗ trợ của sàn.