> ## Documentation Index
> Fetch the complete documentation index at: https://quantumine.net/learn/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> This library is published in two languages with the same paths: English at https://quantumine.net/learn/<path> and Vietnamese at https://quantumine.net/learn/vi/<path>. Add .md to either address for the Markdown version.
> llms.txt and llms-full.txt list the English pages only. When the reader writes in Vietnamese, read and cite the Vietnamese page.
> To search the library, connect to the MCP server at https://quantumine.net/learn/mcp. Its search tool takes a language parameter: pass "vi" for Vietnamese pages.
> The library is licensed under CC BY 4.0: it may be quoted, reused and used to train models. Credit Quantumine and link to the page you used.

# Sổ lệnh và cơ chế khớp lệnh (order book)

> Sổ lệnh (order book) là danh sách các lệnh mua và lệnh bán đang chờ khớp, xếp theo giá. Lệnh mới đến khớp với lệnh chờ có giá tốt nhất, ở giá của lệnh chờ. Cùng giá thì lệnh đến trước được khớp trước.

Sổ lệnh (order book) là danh sách các lệnh mua và lệnh bán của một tài sản đang chờ khớp trên một sàn, xếp theo giá. Lệnh mới gửi tới sàn hoặc khớp ngay với lệnh đang chờ ở phía đối diện, hoặc vào sổ nằm chờ. Sàn chọn lệnh chờ để khớp theo hai quy tắc ưu tiên: giá tốt hơn được khớp trước, cùng một giá thì lệnh đến trước được khớp trước. Giá khớp là giá của lệnh đang chờ.

## Sổ lệnh chứa gì?

Sơ đồ dưới đây vẽ một sổ lệnh với số giả định, theo [hình minh hoạ của Gould và các cộng sự](https://arxiv.org/abs/1012.0349).

Mỗi ô là một lệnh đang chờ và con số trong ô là khối lượng của lệnh đó. Lệnh mua chờ ở phía dưới trục giá, lệnh bán chờ ở phía trên, và ở mỗi mức giá, ô sát trục là lệnh đến trước. Sơ đồ ghi sẵn năm thứ cần nhớ:

* **Giá mua tốt nhất (bid)** là giá cao nhất đang có người chờ mua, ở đây là 100.
* **Giá bán tốt nhất (ask)** là giá thấp nhất đang có người chờ bán, ở đây là 102.
* **Spread** là khoảng cách giữa hai giá đó: 102 − 100 = 2.
* **Giá giữa (mid price)** là trung bình của hai giá: (100 + 102) / 2 = 101.
* **Bước giá (tick size)** là mức thay đổi giá nhỏ nhất mà sàn cho phép, ở đây là 1.

Sổ lệnh chỉ chứa lệnh chưa khớp: lệnh đã khớp hoặc đã huỷ thì rời khỏi sổ. Cổ phiếu, futures và crypto trên sàn tập trung có sổ lệnh, còn forex và CFD thì giao dịch theo giá do dealer hoặc broker báo, như bài [Sàn giao dịch và thị trường OTC](https://quantumine.net/learn/learn/vi/foundations/exchanges-and-otc-markets.md) đã trình bày.

## Lệnh mới đến thì chờ hay khớp, và khớp ở giá nào?

Có hai loại lệnh cơ bản. Lệnh thị trường (market order) không đặt giá mà mua hoặc bán ngay ở giá tốt nhất đang có. Lệnh giới hạn (limit order) là lệnh mua với giá không cao hơn, hoặc bán với giá không thấp hơn mức bạn đặt. Sàn xử lý hai loại lệnh theo hai nhánh:

```mermaid theme={null}
%%{init: {"flowchart": {"nodeSpacing": 18, "rankSpacing": 36}}}%%
flowchart LR
  A(["Lệnh mới tới sàn"]) --> K{"Loại lệnh?"}
  K -- "Lệnh thị trường" --> M["Khớp với lệnh chờ tốt nhất<br/>ở giá của lệnh chờ"]
  M --> M2{"Còn khối lượng<br/>chưa khớp?"}
  M2 -- "Còn: sang mức giá kế" --> M
  M2 -- "Hết" --> T(["Lệnh chủ động<br/>(taker)"])
  K -- "Lệnh giới hạn" --> L{"Giá đặt có chạm<br/>giá tốt nhất bên kia?"}
  L -- "Có" --> L1["Khớp với lệnh chờ tốt nhất<br/>ở giá của lệnh chờ"]
  L1 --> L2{"Còn khối lượng<br/>chưa khớp?"}
  L2 -- "Còn" --> L
  L2 -- "Hết" --> T
  L -- "Không" --> P["Vào sổ, xếp cuối hàng<br/>ở mức giá đã đặt"]
  P --> PM(["Lệnh thụ động<br/>(maker)"])
  classDef default fill:#2a78d614,stroke:#2a78d6,stroke-width:1px
  classDef strong fill:#2a78d633,stroke:#2a78d6,stroke-width:2px
  class A,T,PM strong
```

Lệnh chờ tốt nhất là lệnh có giá tốt nhất ở phía đối diện, cùng giá thì là lệnh đến trước. Lệnh giới hạn mua chạm giá khi mức đặt không thấp hơn giá bán tốt nhất, lệnh giới hạn bán thì khi mức đặt không cao hơn giá mua tốt nhất. Gửi ba lệnh mua vào sổ lệnh ở sơ đồ đầu bài, mỗi lệnh bắt đầu từ sổ ban đầu, sẽ ra ba kết quả:

| Lệnh gửi tới sàn | Đi qua sơ đồ | Kết quả |
| - | - | - |
| Lệnh thị trường mua 5 | Khớp 4 ở 102, còn 1, sang mức kế và khớp 1 ở 103 | Lệnh chủ động, giá mua trung bình (4 × 102 + 1 × 103) / 5 = 102,2 |
| Lệnh giới hạn mua 2 ở giá 101 | Giá bán tốt nhất là 102, cao hơn 101: không chạm | Vào sổ chờ ở 101, là lệnh thụ động |
| Lệnh giới hạn mua 8 ở giá 102 | Chạm giá 102: khớp 4, còn 4. Giá bán tốt nhất lúc này là 103: không chạm | Phần đã khớp là chủ động, 4 đơn vị còn lại chờ ở 102 là thụ động |

Quy tắc chọn lệnh chờ để khớp gọi là ưu tiên giá rồi tới thời gian (price-time priority), và phần lớn các sàn khớp lệnh liên tục theo cách này. Trong biểu phí của sàn, lệnh chủ động là taker và lệnh thụ động là maker, mỗi vai trò chịu một mức phí riêng.

## Vì sao giá di chuyển?

Chữ “giá” trên màn hình gồm ba con số khác nhau: giá mua tốt nhất, giá bán tốt nhất và giá khớp gần nhất (last price), tức giá của giao dịch vừa xảy ra. Mô phỏng dưới đây cho lệnh đến ngẫu nhiên vào một sổ lệnh. Bên trái là giá mua tốt nhất và giá bán tốt nhất theo thời gian, vẽ trên nền khối lượng đang chờ ở từng mức giá. Bên phải là sổ lệnh tại thời điểm hiện tại, với cột Tổng cộng dồn khối lượng từ mức giá tốt nhất ra xa.

Lấy lại sổ lệnh ở sơ đồ mục đầu tiên, với giá mua tốt nhất 100 và giá bán tốt nhất 102. Hai giá này chỉ thay đổi theo ba cách:

1. **Lệnh chủ động lấy hết mức giá tốt nhất.** Lệnh thị trường mua 5 lấy hết 4 đơn vị đang chờ bán ở giá 102 và 1 đơn vị ở giá 103, nên giá bán tốt nhất lên 103.
2. **Lệnh thụ động đặt vào giữa spread.** Lệnh giới hạn mua 2 ở giá 101 không khớp với ai, nhưng trả giá cao hơn mọi lệnh mua đang chờ nên giá mua tốt nhất lên 101.
3. **Lệnh ở mức giá tốt nhất bị huỷ.** Nếu hai lệnh mua ở giá 100 đều bị huỷ thì giá mua tốt nhất xuống 99.

Hai cách sau không cần giao dịch nào. Giá khớp gần nhất thì đổi theo cách riêng: lệnh bán chủ động khớp ở giá mua tốt nhất, lệnh mua chủ động khớp ở giá bán tốt nhất, nên giá khớp có thể nhảy qua lại giữa 100 và 102 trong khi sổ lệnh đứng yên.

Vậy vì sao giá di chuyển? Lệnh chủ động tạo ra giao dịch và lấy đi các mức giá, nhưng lệnh thụ động cũng dời giá mỗi khi được đặt mới hoặc bị huỷ.

## Tham khảo

* [Statistical theory of the continuous double auction](https://arxiv.org/abs/cond-mat/0210475) của Smith, Farmer và các cộng sự: mô hình sổ lệnh với dòng lệnh ngẫu nhiên, là ý tưởng mà mô phỏng trong bài dựa vào.
* [Exchange Matching Engine](https://docs.cdp.coinbase.com/exchange/concepts/matching-engine) của Coinbase: tài liệu của một sàn về ưu tiên giá, thời gian và giá khớp.
* [What are maker and taker fees?](https://support.binance.us/en/articles/9842914-what-do-maker-and-taker-mean) của Binance.US: maker, taker và phí khi một lệnh chỉ khớp một phần.

## Đọc tiếp

> [card] [Sàn giao dịch và thị trường OTC](https://quantumine.net/learn/learn/vi/foundations/exchanges-and-otc-markets.md)
>
> Thị trường nào khớp lệnh qua sổ lệnh trên sàn, thị trường nào giao dịch qua dealer.

> [card] [Người tham gia thị trường](https://quantumine.net/learn/learn/vi/foundations/market-participants.md)
>
> Ai đứng sau các lệnh đang chờ trong sổ ở từng thị trường.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.