𝗗𝗶𝗳𝗲𝗿𝗲𝗻𝗰𝗶𝗮𝗻𝗱𝗼 𝗧𝗿𝗮𝗱𝗲𝘀 𝗲𝗺 𝗙𝗲𝗲𝗱𝘀 𝗪𝗲𝗯𝗦𝗼𝗰𝗸𝗲𝘁 𝗱𝗲 𝗛𝗼𝗻𝗴 𝗞𝗼𝗻𝗴
Dados de mercado em tempo real movem-se rapidamente. Ao transmitir negociações de ações de Hong Kong, você verá diferentes tipos de registros. Nem todas as negociações representam a mesma coisa. Algumas são ordens de investidores. Outras são correspondências automáticas do sistema (auto-matches) ou transações de lotes ímpares (odd-lot).
Você precisa classificar essas negociações rapidamente.
O Problema
Campos de dados padrão muitas vezes não ajudam. O campo de tipo de negociação (trade type) costuma ser pouco confiável. Para resolver isso, use estas três regras:
- Verificação de volume: A maioria das ações de Hong Kong é negociada em lotes de 100 ações. Qualquer negociação abaixo de 100 ações é um lote ímpar (odd lot).
- Agrupamento temporal (Time clustering): Negociações com correspondência automática ocorrem em rajadas rápidas. Você vê muitas execuções em milissegundos. Lotes ímpares não seguem esse padrão.
- Verificação de contraparte: Observe o comprador e o vendedor. Se ambos forem contas do sistema, como SYS, trata-se de uma correspondência automática (auto-match).
Implementação
Você pode codificar essa lógica em seu fluxo de dados.
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'])
Ordenar essas negociações ajuda você a visualizar o movimento real do mercado.
Comunidade de aprendizado opcional: https://t.me/GyaanSetuAi