Controlador de aceleración de WebSocket
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:
- Inicialización: Utilice
$.setupWebsocket()para inicializar la conexión WebSocket del exchange objetivo. - Suscripción: El sistema se suscribirá automáticamente a los canales relevantes (como profundidad, transacciones) para los pares de trading operados.
- Obtención de datos: Al llamar a las funciones
GetDepth()yGetTrades(), los datos de profundidad de mercado y registro de transacciones se devolverán automáticamente utilizando los datos en tiempo real de WebSocket. - 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
}
}
// @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
}