> For the complete documentation index, see [llms.txt](https://docs.fiinquant.vn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fiinquant.vn/ham-va-cong-thuc/2.-du-lieu-giao-dich/2.4.-ham-du-lieu-so-lenh.md).

# 2.4. Hàm dữ liệu sổ lệnh

Mô tả cách sử dụng thư viện sau khi người dùng đã đăng nhập. Các ví dụ chi tiết được nêu ra ở cuối chương này.

```python
event = client.BidAsk(tickers = tickers, callback = callback)
```

**Tham số**

<table><thead><tr><th>Tên tham số</th><th width="187">Mô tả</th><th>Kiểu dữ liệu</th><th>Bắt buộc</th></tr></thead><tbody><tr><td>tickers</td><td>Tên mã , bao gồm mã chứng khoán, mã chỉ số, mã phái sinh và mã chứng quyền. Các mã này được viết in hoa.</td><td><p>str hoặc list</p><p><br></p></td><td>Có</td></tr><tr><td>callback</td><td>Là hàm do người dùng tự định nghĩa để thao tác với dữ liệu.</td><td>function</td><td>Có</td></tr></tbody></table>

Class nhận dữ liệu là BidAsk, có 2 phương thức sau:

<figure><img src="/files/YAC6Nv3mqcMFLlwm4Sma" alt=""><figcaption></figcaption></figure>

**Hàm callback**

Là phương thức do người dùng tự định nghĩa để thao tác với dữ liệu, sẽ được truyền vào khi khởi tạo đối tượng nhận dữ liệu như là một đối số. Phương thức này sẽ có dạng như sau:

```
//pseudocode
//callback_function
def name_of_callback(data: BidAskData):
    //do something

event = client.BidAsk(tickers = ['ticker_1','ticker_2',,,'ticker_n'], callback = name_of_callback)
event.start()
# tickers can include ticker, coveredwarrant, index and derivative.
event = client.BidAsk(tickers = ['ticker_1','ticker_2',,,'ticker_n'], callback = name_of_callback)
evente.start()
```

BidAskData có các phương thức và thuộc tính sau:

| Tên phương thức của object dữ liệu | Mô tả                                                                                                                  |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| to\_dataFrame( )                   | Trả về tất cả các thuộc tính của dữ liệu thay vì một thuộc tính riêng lẻ, được lưu trữ dưới dạng một Pandas DataFrame. |

**Dữ liệu BidAskData có các thuộc tính:**

<table><thead><tr><th width="163">Tên cột</th><th width="500">Mô tả</th><th>Kiểu dữ liệu</th></tr></thead><tbody><tr><td>ComGroupCode</td><td>Mã chỉ số.</td><td>str</td></tr><tr><td>StockType</td><td>Loại chứng khoán.</td><td>str</td></tr><tr><td>Ticker</td><td>Tên mã.</td><td>str</td></tr><tr><td>TradingDate</td><td>Thời gian.</td><td>str</td></tr><tr><td>Timestamp</td><td>Thời gian (làm tròn về giây).</td><td>str</td></tr><tr><td>Spread</td><td>Best1Ask - Best1Bid.</td><td>float</td></tr><tr><td>SpreadDelta</td><td>Spread tick hiện tại - Spread tick trước.</td><td>float</td></tr><tr><td>DepthImbalance</td><td>TotalBidVolume / (TotalBidVolume + TotalAskVolume).</td><td>float</td></tr><tr><td>TotalBuyTradeVolume</td><td>Tổng khối lượng giao dịch mua.</td><td>int</td></tr><tr><td>TotalSellTradeVolum</td><td>Tổng khối lượng giao dịch bán.</td><td>int</td></tr><tr><td>TotalBidVolume</td><td>Tổng khối lượng đặt mua.</td><td>int</td></tr><tr><td>TotalAskVolume</td><td>Tổng khối lượng đặt bán.</td><td>int</td></tr><tr><td>Best1Bid</td><td>Bước giá mua 1.</td><td>float</td></tr><tr><td>Best2Bid</td><td>Bước giá mua 2.</td><td>float</td></tr><tr><td>Best3Bid</td><td>Bước giá mua 3.</td><td>float</td></tr><tr><td>Best4Bid</td><td>Bước giá mua 4.</td><td>float</td></tr><tr><td>Best5Bid</td><td>Bước giá mua 5.</td><td>float</td></tr><tr><td>Best6Bid</td><td>Bước giá mua 6.</td><td>float</td></tr><tr><td>Best7Bid</td><td>Bước giá mua 7.</td><td>float</td></tr><tr><td>Best8Bid</td><td>Bước giá mua 8.</td><td>float</td></tr><tr><td>Best9Bid</td><td>Bước giá mua 9.</td><td>float</td></tr><tr><td>Best10Bid</td><td>Bước giá mua 10.</td><td>float</td></tr><tr><td>Best1Ask</td><td>Bước giá bán 1.</td><td>float</td></tr><tr><td>Best2Ask</td><td>Bước giá bán 2.</td><td>float</td></tr><tr><td>Best3Ask</td><td>Bước giá bán 3.</td><td>float</td></tr><tr><td>Best4Ask</td><td>Bước giá bán 4.</td><td>float</td></tr><tr><td>Best5Ask</td><td>Bước giá bán 5.</td><td>float</td></tr><tr><td>Best6Ask</td><td>Bước giá bán 6.</td><td>float</td></tr><tr><td>Best7Ask</td><td>Bước giá bán 7.</td><td>float</td></tr><tr><td>Best8Ask</td><td>Bước giá bán 8.</td><td>float</td></tr><tr><td>Best9Ask</td><td>Bước giá bán 9.</td><td>float</td></tr><tr><td>Best10Ask</td><td>Bước giá bán 10.</td><td>float</td></tr><tr><td>Best1BidVolume</td><td>Khối lượng đặt mua bước giá mua 1.</td><td>int</td></tr><tr><td>Best2BidVolume</td><td>Khối lượng đặt mua bước giá mua 2.</td><td>int</td></tr><tr><td>Best3BidVolume</td><td>Khối lượng đặt mua bước giá mua 3.</td><td>int</td></tr><tr><td>Best4BidVolume</td><td>Khối lượng đặt mua bước giá mua 4.</td><td>int</td></tr><tr><td>Best5BidVolume</td><td>Khối lượng đặt mua bước giá mua 5.</td><td>int</td></tr><tr><td>Best6BidVolume</td><td>Khối lượng đặt mua bước giá mua 6.</td><td>int</td></tr><tr><td>Best7BidVolume</td><td>Khối lượng đặt mua bước giá mua 7.</td><td>int</td></tr><tr><td>Best8BidVolume</td><td>Khối lượng đặt mua bước giá mua 8.</td><td>int</td></tr><tr><td>Best9BidVolume</td><td>Khối lượng đặt mua bước giá mua 9.</td><td>int</td></tr><tr><td>Best10BidVolume</td><td>Khối lượng đặt mua bước giá mua 10.</td><td>int</td></tr><tr><td>Best1AskVolume</td><td>Khối lượng đặt bán bước giá bán 1.</td><td>int</td></tr><tr><td>Best2AskVolume</td><td>Khối lượng đặt bán bước giá bán 2.</td><td>int</td></tr><tr><td>Best3AskVolume</td><td>Khối lượng đặt bán bước giá bán 3.</td><td>int</td></tr><tr><td>Best4AskVolume</td><td>Khối lượng đặt bán bước giá bán 4.</td><td>int</td></tr><tr><td>Best5AskVolume</td><td>Khối lượng đặt bán bước giá bán 5.</td><td>int</td></tr><tr><td>Best6AskVolume</td><td>Khối lượng đặt bán bước giá bán 6.</td><td>int</td></tr><tr><td>Best7AskVolume</td><td>Khối lượng đặt bán bước giá bán 7.</td><td>int</td></tr><tr><td>Best8AskVolume</td><td>Khối lượng đặt bán bước giá bán 8.</td><td>int</td></tr><tr><td>Best9AskVolume</td><td>Khối lượng đặt bán bước giá bán 9.</td><td>int</td></tr><tr><td>Best10AskVolume</td><td>Khối lượng đặt bán bước giá bán 10.</td><td>int</td></tr><tr><td>BidPriceDelta1</td><td>Chênh lệch bước giá mua 1 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>BidPriceDelta2</td><td>Chênh lệch bước giá mua 2 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>BidPriceDelta3</td><td>Chênh lệch bước giá mua 3 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>BidPriceDelta4</td><td>Chênh lệch bước giá mua 4 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>BidPriceDelta5</td><td>Chênh lệch bước giá mua 5 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>BidPriceDelta6</td><td>Chênh lệch bước giá mua 6 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>BidPriceDelta7</td><td>Chênh lệch bước giá mua 7 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>BidPriceDelta8</td><td>Chênh lệch bước giá mua 8 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>BidPriceDelta9</td><td>Chênh lệch bước giá mua 9 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>BidPriceDelta10</td><td>Chênh lệch bước giá  mua 10 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>AskPriceDelta1</td><td>Chênh lệch bước giá bán 1 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>AskPriceDelta2</td><td>Chênh lệch bước giá bán 2 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>AskPriceDelta3</td><td>Chênh lệch bước giá bán 3 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>AskPriceDelta4</td><td>Chênh lệch bước giá bán 4 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>AskPriceDelta5</td><td>Chênh lệch bước giá bán 5 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>AskPriceDelta6</td><td>Chênh lệch bước giá bán 6 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>AskPriceDelta7</td><td>Chênh lệch bước giá bán 7 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>AskPriceDelta8</td><td>Chênh lệch bước giá bán 8 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>AskPriceDelta9</td><td>Chênh lệch bước giá bán 9 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>AskPriceDelta10</td><td>Chênh lệch bước giá bán 10 tick hiện tại với tick trước.</td><td>float</td></tr><tr><td>BidVolumeDelta1</td><td>Chênh lệch khối lượng bước giá mua 1 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>BidVolumeDelta2</td><td>Chênh lệch khối lượng bước giá mua 2 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>BidVolumeDelta3</td><td>Chênh lệch khối lượng bước giá mua 3 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>BidVolumeDelta4</td><td>Chênh lệch khối lượng bước giá mua 4 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>BidVolumeDelta5</td><td>Chênh lệch khối lượng bước giá mua 5 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>BidVolumeDelta6</td><td>Chênh lệch khối lượng bước giá mua 6 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>BidVolumeDelta7</td><td>Chênh lệch khối lượng bước giá mua 7 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>BidVolumeDelta8</td><td>Chênh lệch khối lượng bước giá mua 8 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>BidVolumeDelta9</td><td>Chênh lệch khối lượng bước giá mua 9 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>BidVolumeDelta10</td><td>Chênh lệch khối lượng bước giá mua 10 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>AskVolumeDelta1</td><td>Chênh lệch khối lượng bước giá bán 1 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>AskVolumeDelta2</td><td>Chênh lệch khối lượng bước giá bán 2 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>AskVolumeDelta3</td><td>Chênh lệch khối lượng bước giá bán 3 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>AskVolumeDelta4</td><td>Chênh lệch khối lượng bước giá bán 4 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>AskVolumeDelta5</td><td>Chênh lệch khối lượng bước giá bán 5 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>AskVolumeDelta6</td><td>Chênh lệch khối lượng bước giá bán 6 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>AskVolumeDelta7</td><td>Chênh lệch khối lượng bước giá bán 7 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>AskVolumeDelta8</td><td>Chênh lệch khối lượng bước giá bán 8 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>AskVolumeDelta9</td><td>Chênh lệch khối lượng bước giá bán 9 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>AskVolumeDelta10</td><td>Chênh lệch khối lượng bước giá bán 10 tick hiện tại với tick trước.</td><td>int</td></tr><tr><td>VWAPBid</td><td>Mức giá trung bình mà người mua sẵn sàng trả.</td><td>float</td></tr><tr><td>VWAPAsk</td><td>Mức giá trung bình mà người bán sẵn sàng chấp nhận.</td><td>float</td></tr><tr><td>VWAPBidSpread</td><td>Hiệu số giữa giá mua tốt nhất (Best1Bid) và VWAP Bid.</td><td>float</td></tr><tr><td>VWAPAskSpread</td><td>Hiệu số giữa VWAP Ask và giá bán tốt nhất (Best1Ask).</td><td>float</td></tr><tr><td>VWAPBidAskSpread</td><td>Chênh lệch giữa VWAP Ask và VWAP Bid.</td><td>float</td></tr><tr><td>OrderFlowImbalance</td><td>VWAPBidSpread/ (VWAPBidSpread + VWAPAskSpread).</td><td>float</td></tr></tbody></table>

Ví dụ về dữ liệu sổ lệnh (BidAskData):

<pre class="language-python"><code class="lang-python"><strong>from FiinQuantX import FiinSession, BidAskData
</strong><strong>
</strong>import pandas as pd
import time

username = 'REPLACE_WITH_YOUR_USER_NAME'
password = 'REPLACE_WITH_YOUR_PASS_WORD'

client = FiinSession(username=username, password=password).login()

tickers = ['HPG','VNINDEX','VN30F1M']

def onTickerEvent(data: BidAskData):
    print('----------------')
    print(data.to_dataFrame())

Events = client.BidAsk(tickers=tickers, callback = onTickerEvent)
Events.start()

try:
    while not Events._stop: 
        time.sleep(1)
except KeyboardInterrupt:
    print("KeyboardInterrupt received, stopping...")
    Events.stop()
</code></pre>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.fiinquant.vn/ham-va-cong-thuc/2.-du-lieu-giao-dich/2.4.-ham-du-lieu-so-lenh.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
