2.5. Hàm theo dõi huỷ lệnh
from FiinQuantX import FiinSession
username = "REPLACE_WITH_YOUR_USERNAME"
password = "REPLACE_WITH_YOUR_PASSWORD"
client = FiinSession(username=username, password=password).login()
order_book = client.OrderBook()
ticker_config = {
"VJC": {"min_volume": 100_000},
"VNM": {"min_volume": 100_000},
"VPB": {"min_volume": 100_000},
"VRE": {"min_volume": 100_000}
}
def process_data(data: dict):
print(data)
# Theo dõi hủy lệnh bất thường
order_book.track_order_book_changes(ticker_config=ticker_config, action="add", accumulate_window=60, callback=process_data)
Tham số
Kiểu dữ liệu
Mô tả
ticker_config
dict
Từ điển chứa từng mã chứng khoán và ngưỡng khối lượng thay đổi (min_volume) cần cảnh báo
side
str
'bid', 'ask' hoặc 'all' – chỉ định hướng theo dõi
action
str
'cancel', 'add' hoặc 'all' – chỉ định loại thay đổi lệnh muốn theo dõi
accumulate_window
int
Đơn vị giây. Cho phép user định nghĩa tần suất tính lại để cộng tổng các giá trị hủy lệnh.
min_action_volume
int
Khối lượng cổ phiếu hủy/thêm tối thiểu để được tính là 1 lệnh hủy/thêm. Phục vụ thống kê số lệnh hủy/thêm
Theo dõi bám theo giá cố định:
Mỗi mã được theo dõi ở mức giá cụ thể: bid2.price hoặc ask2.price (tùy side) ngay tại thời điểm khởi đầu.
Trong quá trình theo dõi, chỉ quan sát khối lượng tại đúng mức giá đó.
Ngưng theo dõi khi giá vượt giới hạn số bước giá hiển thị (3 bước/10 bước):
Nếu mức giá ban đầu bị đẩy ra khỏi vùng nhìn thấy:
Với HOSE: ngoài 3 bước giá tốt nhất (ví dụ: từ bid1 đến bid3)
Với HNX/UPCoM: ngoài 10 bước giá tốt nhất
Hệ thống sẽ ngưng theo dõi ticker đó, nhằm tránh bị nhiễu (noise) do sự thay đổi không thực chất.
Xử lý giá bid1 / ask1:
Giá bid1 / ask1 sẽ được trừ khối lượng đã khớp để tránh nhầm lẫn là hủy lệnh, khi thực tế là do khớp lệnh.
Tính OTR:
Kết quả:

Ứng dụng thực tế:
Phát hiện các dấu hiệu thao túng lệnh như đẩy giả lệnh mua/bán rồi hủy ngay sau đó.
Phát hiện đột biến lượng lệnh đặt mới bất thường tại các vùng nhạy cảm.
Phân tích hành vi nhà đầu tư/cá mập trong thời gian thực.
Last updated