Type/to search

Controlador de aceleración de WebSocket

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

Biblioteca de clases de plantillas para acelerar datos de mercado en tiempo real basada en WebSocket

Descripción:

Esta estrategia optimiza el procesamiento de datos en tiempo real de múltiples exchanges mediante conexiones WebSocket multihilo. En la plataforma de trading cuantitativo FMZ, utiliza conexiones WebSocket para obtener datos de profundidad de libro de órdenes y transacciones, reduciendo significativamente la latencia en la obtención de datos de mercado y mejorando el rendimiento de sistemas de trading de alta frecuencia.

Características principales:

  • Soporte para múltiples exchanges: La estrategia admite conexiones WebSocket de exchanges como Binance, OKX, Bybit, Bitget, entre otros, proporcionando flujos de datos más rápidos y estables en comparación con el polling tradicional de la API REST.
  • Suscripción personalizable: Permite suscribirse a canales de mercado específicos (como profundidad, transacciones, etc.) y procesar de manera eficiente los datos recibidos para uso inmediato en estrategias de trading.
  • Manejo avanzado de errores: Incorpora mecanismos internos de seguimiento de errores y reconexión WebSocket para garantizar la fiabilidad y continuidad del flujo de datos.
  • Verificación CRC32: Para exchanges como OKX, integra la función de verificación CRC32 para asegurar la integridad de los datos del libro de órdenes recibidos.

Esta solución basada en WebSocket reemplaza el polling tradicional de la API, siendo adecuada para traders que requieren minimizar la latencia y maximizar la velocidad de respuesta del mercado.

Uso:

  1. Inicialización: Utilice $.setupWebsocket() para inicializar la conexión WebSocket del exchange objetivo.
  2. Suscripción: El sistema se suscribirá automáticamente a los canales relevantes (como profundidad, transacciones) para los pares de trading operados.
  3. Obtención de datos: Al llamar a las funciones GetDepth() y GetTrades(), los datos de profundidad de mercado y registro de transacciones se devolverán automáticamente utilizando los datos en tiempo real de WebSocket.
  4. Manejo de errores: La estrategia incluye un mecanismo de seguimiento para registrar errores de conexión y datos, y reintentar la conexión automáticamente cuando se interrumpe.

Este script está diseñado para ejecutarse en la plataforma FMZ, proporcionando acceso rápido, fiable y escalable a datos de mercado de múltiples exchanges.

javascript
function main() { $.setupWebsocket() while (true) { exchanges.map(e=>{ Log(e.GetName(), e.GetDepth()) Log(e.GetName(), e.GetTrades()) // support custom and auto subscribe Eg: e.GetDepth('ETH_USDT') }) EventLoop(100) // trigger by websocket or use Sleep control 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)