הבחנה בין סוגי עסקאות ב-Hong Kong WebSocket Feeds
נתוני שוק בזמן אמת נעים במהירות. כשאתם מזרמים (stream) עסקאות מניות בהונג קונג, אתם רואים סוגים שונים של רישומים (prints). לא כל העסקאות מייצגות את אותו הדבר. חלקן הן פקודות של משקיעים. אחרות הן התאמות אוטומטיות של המערכת (auto-matches) או עסקאות odd-lot.
עליכם לסווג את העסקאות הללו במהירות.
הבעיה
שדות נתונים סטנדרטיים לרוב אינם מסייעים. שדה סוג העסקה (trade type) הוא לעיתים קרובות לא אמין. כדי לפתור זאת, השתמשו בשלושת הכללים הבאים:
- בדיקת נפח (Volume check): רוב המניות בהונג קונג נסחרות במנות (lots) של 100 מניות. כל עסקה של פחות מ-100 מניות היא odd lot.
- אשכול זמן (Time clustering): עסקאות auto-matched מתרחשות בפרצים מהירים. ניתן לראות הרבה ביצועים (fills) תוך מילישניות. עסקאות odd lot אינן עוקבות אחר דפוס זה.
- בדיקת צד נגדי (Counterparty check): בדקו את הקונה והמוכר. אם שניהם חשבונות מערכת כמו SYS, מדובר ב-auto-match.
מימוש
ניתן לתכנת את הלוגיקה הזו בתוך זרם הנתונים (data stream) שלכם.
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'])
מיון העסקאות הללו עוזר לכם לראות את תנועת השוק האמיתית.
קהילת למידה אופציונלית: https://t.me/GyaanSetuAi