Hong Kong WebSocket Feeds లో ట్రేడ్లను వేరు చేయడం
రియల్-టైమ్ మార్కెట్ డేటా చాలా వేగంగా మారుతుంటుంది. మీరు Hong Kong equity trades ని స్ట్రీమ్ చేస్తున్నప్పుడు, వివిధ రకాల ప్రింట్స్ (prints) కనిపిస్తాయి. అన్ని ట్రేడ్లు ఒకే రకమైన వాటిని సూచించవు. కొన్ని ఇన్వెస్టర్ ఆర్డర్లు. మరికొన్ని సిస్టమ్ ఆటో-మ్యాచ్లు లేదా ఆడ్-లాట్ లావాదేవీలు.
మీరు ఈ ట్రేడ్లను త్వరగా వర్గీకరించాల్సి ఉంటుంది.
సమస్య
సాధారణ డేటా ఫీల్డ్లు తరచుగా సహాయపడవు. ట్రేడ్ టైప్ ఫీల్డ్ తరచుగా నమ్మదగినదిగా ఉండదు. దీనిని పరిష్కరించడానికి, ఈ మూడు నియమాలను ఉపయోగించండి:
- వాల్యూమ్ చెక్ (Volume check): చాలా Hong Kong స్టాక్స్ 100 షేర్ల లాట్లలో ట్రేడ్ అవుతాయి. 100 షేర్ల కంటే తక్కువ ఉన్న ఏ ట్రేడ్ అయినా ఒక ఆడ్ లాట్ (odd lot).
- టైమ్ క్లస్టరింగ్ (Time clustering): ఆటో-మ్యాచ్డ్ ట్రేడ్లు వేగవంతమైన బర్స్ట్లుగా (bursts) జరుగుతాయి. మీరు మిల్లీసెకన్ల వ్యవధిలో అనేక ఫిల్స్ (fills) చూడవచ్చు. ఆడ్ లాట్లు ఈ పద్ధతిని అనుసరించవు.
- కౌంటర్ పార్టీ చెక్ (Counterparty check): కొనుగోలుదారు మరియు విక్రేతలను చూడండి. ఒకవేళ ఇద్దరూ SYS వంటి సిస్టమ్ ఖాతాలు అయితే, అది ఆటో-మ్యాచ్.
అమలు చేయడం (Implementation)
మీరు ఈ లాజిక్ను మీ డేటా స్ట్రీమ్లో కోడ్ చేయవచ్చు.
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'])
ఈ ట్రేడ్లను క్రమబద్ధీకరించడం (Sorting) వల్ల మార్కెట్ యొక్క నిజమైన కదలికను మీరు చూడవచ్చు.
ఐచ్ఛిక అభ్యాస సమూహం: https://t.me/GyaanSetuAi