Driver de aceleração WebSocket
Baseado em WebSocket, uma biblioteca de classes modelo para aceleração de dados de mercado em tempo real
Descrição:
Esta estratégia otimiza o processamento em tempo real de dados de múltiplas exchanges através de conexões WebSocket com múltiplas threads. Na plataforma de trading quantitativo FMZ, utiliza conexões WebSocket para obter dados do order book (livro de ofertas) e de negociações, reduzindo significativamente a latência na obtenção de dados de mercado e melhorando o desempenho de sistemas de trading de alta frequência.
Principais características:
- Suporte a múltiplas exchanges: A estratégia suporta conexões WebSocket com diversas exchanges, como Binance, OKX, Bybit, Bitget, entre outras, fornecendo fluxos de dados mais rápidos e estáveis do que a consulta tradicional via REST API.
- Assinaturas personalizáveis: Permite assinar canais de mercado específicos (como profundidade, negociações, etc.) e processar os dados recebidos de forma eficiente para uso imediato pelas estratégias de trading.
- Tratamento avançado de erros: Possui rastreamento de erros e mecanismos de reconexão WebSocket integrados, garantindo a confiabilidade e continuidade do fluxo de dados.
- Verificação CRC32: Para exchanges como a OKX, incorpora funcionalidade de verificação CRC32 para garantir a integridade dos dados do order book recebido.
Esta solução baseada em WebSocket substitui a consulta tradicional por API, sendo adequada para traders que necessitam de latência mínima e máxima capacidade de resposta ao mercado.
Como usar:
- Inicialização: Utilize
$.setupWebsocket()para inicializar a conexão WebSocket com a exchange alvo. - Assinatura: O sistema assinará automaticamente os canais relevantes (como profundidade, negociações, etc.) para o instrumento que está sendo negociado.
- Obtenção de dados: Através das chamadas das funções
GetDepth()eGetTrades(), utiliza automaticamente os dados em tempo real do WebSocket para retornar a profundidade de mercado e o histórico de negociações. - Tratamento de erros: A estratégia inclui um mecanismo de rastreamento para registrar erros de conexão e dados, e tentará automaticamente reconectar quando a conexão for interrompida.
Este script foi projetado para ser executado na plataforma FMZ, fornecendo acesso rápido, confiável e escalável aos dados de mercado de múltiplas exchanges.
javascript
function main() {
$.setupWebsocket()
while (true) {
exchanges.map(e=>{
Log(e.GetName(), e.GetDepth())
Log(e.GetName(), e.GetTrades())
// suporta assinatura personalizada e automática Exemplo: e.GetDepth('ETH_USDT')
})
EventLoop(100) // acionado por websocket ou use Sleep para controlar o delay
}
}
// @ts-check
$.setupWebsocket = function (main_exchanges) {
let crc32 = function (r) {
for (var a, o = [], c = 0; c < 256; c++) {
a = c;
for (var f = 0; f < 8; f++) a = 1 & a ? 3988292384 ^ a >>> 1 : a >>> 1;
o[c] = a
}
for (var n = -1, t = 0; t < r.length; t++) n = n >>> 8 ^ o[255 & (n ^ r.charCodeAt(t))];
return (-1 ^ n) >>> 0
}