Phân biệt các loại giao dịch trong nguồn cấp dữ liệu WebSocket tại Hồng Kông
Dữ liệu thị trường thời gian thực biến động rất nhanh. Khi bạn truyền dữ liệu các giao dịch cổ phiếu Hồng Kông, bạn sẽ thấy nhiều loại dữ liệu giao dịch khác nhau. Không phải tất cả các giao dịch đều có ý nghĩa như nhau. Một số là lệnh của nhà đầu tư. Số khác là các lệnh khớp tự động của hệ thống hoặc các giao dịch lô lẻ (odd-lot).
Bạn cần phân loại các giao dịch này một cách nhanh chóng.
Vấn đề
Các trường dữ liệu tiêu chuẩn thường không giúp ích được nhiều. Trường loại giao dịch (trade type) thường không đáng tin cậy. Để khắc phục điều này, hãy sử dụng ba quy tắc sau:
- Kiểm tra khối lượng: Hầu hết các cổ phiếu Hồng Kông được giao dịch theo lô 100 cổ phiếu. Bất kỳ giao dịch nào dưới 100 cổ phiếu đều là lô lẻ.
- Phân cụm thời gian: Các giao dịch khớp tự động thường xảy ra theo các đợt nhanh. Bạn sẽ thấy nhiều lệnh được khớp trong vòng vài mili giây. Các lô lẻ không tuân theo quy luật này.
- Kiểm tra bên đối tác: Xem xét người mua và người bán. Nếu cả hai đều là tài khoản hệ thống như SYS, đó là một lệnh khớp tự động.
Triển khai
Bạn có thể lập trình logic này vào luồng dữ liệu của mình.
from websocket import create_connection
import json
API_TOKEN = 'your_api_token'
ws_url = f"wss://ws.alltick.co/stock?token={API_TOKEN}"
ws = create_connection(ws_url)
subscribe_msg = {
"action": "subscribe",
"symbol": "00700.HK",
"type": "transaction"
}
ws.send(json.dumps(subscribe_msg))
def check_auto_match(tick):
return tick.get('buyer') == 'SYS' and tick.get('seller') == 'SYS'
while True:
data = ws.recv()
tick = json.loads(data)
volume = tick.get('volume', 0)
if volume < 100:
tick['tag'] = 'odd_lot'
elif check_auto_match(tick):
tick['tag'] = 'auto_match'
else:
tick['tag'] = 'normal'
print(tick['time'], tick['price'], tick['volume'], tick['tag'])
Việc phân loại các giao dịch này giúp bạn thấy được chuyển động thực sự của thị trường.
Cộng đồng học tập tùy chọn: https://t.me/GyaanSetuAi