Driver do acelerador WebSocket
Repositório de modelos acelerados baseado em WebSocket
descrever:
A estratégia optimiza o processamento de dados em tempo real de várias exchanges por meio de conexões WebSocket de múltiplos threads. O uso da conexão WebSocket na plataforma de negociação quantitativa FMZ para acessar o livro de pedidos e dados de negociação em profundidade reduz significativamente a latência para obter dados de mercado e melhora o desempenho do sistema de negociação de alta frequência.
Principais características:
- Suporte para múltiplas trocasA estratégia suporta a conexão WebSocket de várias exchanges, como Binance, OKX, Bybit e Bitget, oferecendo um fluxo de dados mais rápido e mais estável do que as pesquisas REST API tradicionais.
- Assinatura personalizável: Permite a assinatura de canais de mercado específicos (como profundidade, negociação, etc.) e o processamento eficiente dos dados recebidos para uso imediato em estratégias de negociação.
- Tratamento avançado de erros: Rastreamento de erros integrado e mecanismo de reconexão WebSocket para garantir a confiabilidade e a continuidade do fluxo de dados.
- Revisão CRC32Para o OKX, a verificação CRC32 foi integrada para garantir a integridade dos dados do livro de pedidos recebidos.
Esta solução baseada no WebSocket substitui a tradicional pesquisa de API e é indicada para os comerciantes que precisam minimizar a latência e maximizar a velocidade de resposta do mercado.
Instruções:
- inicialização:usar
$.setupWebsocket()Inicialize a conexão WebSocket com a troca de destino. - subscrição: O sistema se inscreverá automaticamente nos canais relevantes (como profundidade, negociação, etc.) para os produtos que você negocia.
- Aquisição de dados: Por chamada
GetDepth()eGetTrades()Função que usa automaticamente dados em tempo real do WebSocket para retornar profundidade de mercado e registros de transações. - Tratamento de erros: A política inclui um mecanismo de rastreamento que registra erros de conexão e dados e tenta reconectar automaticamente se a conexão for perdida.
O script foi desenvolvido para funcionar na plataforma de quantificação FMZ, fornecendo acesso rápido, confiável e escalável a dados de mercado para várias exchanges.
javascript
function main() {
$.setupWebsocket()
while (true) {
exchanges.map(e=>{
Log(e.GetName(), e.GetDepth())
Log(e.GetName(), e.GetTrades())
// support custom and auto subsribe Eg: e.GetDepth('ETH_USDT')
})
EventLoop(100) // trigger by websocket or use Sleep control 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
}