تمييز التداولات في خلاصات WebSocket في هونج كونج
تتحرك بيانات السوق في الوقت الفعلي بسرعة كبيرة. عندما تقوم ببث تداولات الأسهم في هونج كونج، ستلاحظ أنواعاً مختلفة من سجلات التداول. لا تمثل جميع التداولات الشيء نفسه؛ فبعضها عبارة عن أوامر مستثمرين، بينما البعض الآخر عبارة عن عمليات مطابقة تلقائية من النظام أو معاملات "الكميات الفردية" (odd-lot).
أنت بحاجة إلى تصنيف هذه التداولات بسرعة.
المشكلة
غالباً ما تفشل حقول البيانات القياسية في تقديم المساعدة، حيث يكون حقل "نوع التداول" غير موثوق به في كثير من الأحيان. ولحل هذه المشكلة، استخدم القواعد الثلاث التالية:
- التحقق من الحجم: يتم تداول معظم أسهم هونج كونج في مجموعات (lots) مكونة من 100 سهم. أي تداول يقل عن 100 سهم يُعتبر كمية فردية (odd lot).
- التجميع الزمني: تحدث عمليات المطابقة التلقائية في دفعات سريعة، حيث ترى العديد من عمليات التنفيذ في غضون أجزاء من الثانية. أما الكميات الفردية فلا تتبع هذا النمط.
- التحقق من الطرف المقابل: انظر إلى المشتري والبائع. إذا كان كلاهما حسابات نظام مثل
SYS، فإنها عملية مطابقة تلقائية.
التنفيذ
يمكنك برمجة هذا المنطق ضمن تدفق البيانات الخاص بك.
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