Type/to search

Driver de aceleração WebSocket

Template
Created: 2024-10-24 18:11:09
Last modified: 7 months ago
12
Follow
658
Followers

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:

  1. Inicialização: Utilize $.setupWebsocket() para inicializar a conexão WebSocket com a exchange alvo.
  2. Assinatura: O sistema assinará automaticamente os canais relevantes (como profundidade, negociações, etc.) para o instrumento que está sendo negociado.
  3. Obtenção de dados: Através das chamadas das funções GetDepth() e GetTrades(), utiliza automaticamente os dados em tempo real do WebSocket para retornar a profundidade de mercado e o histórico de negociações.
  4. 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 } }
Source
JavaScript
// @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
    }
Comment
All comments (4)

    Warning: __Thread is deprecated. Please use threading.Thread instead.
    麻烦能否更新到threading.Thread的版本?

    7 months ago

    已更

    7 months ago

    大佬动作好快,能否加上获取K线的代码呢?感激不尽!

    7 months ago

    K线没有做websocket这个完全没必要最后一根闭合了才生效

    7 months ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)