تمایز بین انواع معاملات در فیدهای WebSocket هنگکنگ
دادههای بازار در لحظه (Real-time) با سرعت زیادی حرکت میکنند. وقتی جریان معاملات سهام هنگکنگ را دریافت میکنید، انواع مختلفی از ثبت معاملات (prints) را مشاهده میکنید. همه معاملات نشاندهنده یک چیز واحد نیستند. برخی از آنها سفارشهای سرمایهگذاران هستند، در حالی که برخی دیگر تطبیقهای خودکار سیستمی (auto-matches) یا معاملات لاتهای غیرمعمول (odd-lot) میباشند.
شما باید این معاملات را به سرعت دستهبندی کنید.
مشکل
فیلدهای داده استاندارد اغلب کمککننده نیستند. فیلد نوع معامله (trade type) معمولاً غیرقابل اعتماد است. برای رفع این مشکل، از این سه قانون استفاده کنید:
- بررسی حجم: اکثر سهام هنگکنگ در لاتهای ۱۰۰ سهم معامله میشوند. هر معاملهای کمتر از ۱۰۰ سهم، یک odd lot محسوب میشود.
- خوشهبندی زمانی: معاملات تطبیقیافته خودکار (auto-matched) در فورانهای سریع رخ میدهند. شما تعداد زیادی از تکمیل شدن سفارشها (fills) را در بازه میلیثانیه مشاهده میکنید. معاملات odd lot از این الگو پیروی نمیکنند.
- بررسی طرف مقابل معامله: به خریدار و فروشنده نگاه کنید. اگر هر دو حسابهای سیستمی مانند SYS باشند، آن معامله یک auto-match است.
پیادهسازی
شما میتوانید این منطق را در جریان دادههای خود کدنویسی کنید.
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