𝗗𝗶𝗳𝗳𝗲𝗿𝗲𝗻𝘁𝗶𝗮𝘁𝗶𝗻𝗴 𝗧𝗿𝗮𝗱𝗲𝘀 𝗶𝗻 𝗛𝗼𝗻𝗴 𝗞𝗼𝗻𝗴 𝗪𝗲𝗯𝗦𝗼𝗰𝗸𝗲𝘁 𝗙𝗲𝗲𝗱𝘀

실시간 시장 데이터는 매우 빠르게 움직입니다. 홍콩 주식 거래를 스트리밍하면 다양한 유형의 체결 내역(prints)을 보게 됩니다. 모든 거래가 동일한 의미를 갖는 것은 아닙니다. 어떤 것은 투자자의 주문이며, 다른 것은 시스템 자동 체결(auto-matches) 또는 단주(odd-lot) 거래입니다.

이러한 거래를 신속하게 분류해야 합니다.

문제점

표준 데이터 필드는 도움이 되지 않는 경우가 많습니다. 거래 유형(trade type) 필드는 신뢰할 수 없는 경우가 빈번합니다. 이를 해결하려면 다음 세 가지 규칙을 사용하십시오.

  • 거래량 확인: 대부분의 홍콩 주식은 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://dev.to/emily19980210/differentiating-auto-matched-and-odd-lot-trades-in-hong-kong-stock-websocket-feeds-3bgg

선택 사항 학습 커뮤니티: https://t.me/GyaanSetuAi