Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

202
Vistas
Ejecutar una función dentro de Websocket dispara muchas veces

He estado tratando de aprovechar Binance Websocket para activar compras y ventas basadas en el precio en vivo con mi propia lógica. Sé que el WebSocket está devolviendo datos en vivo y puede haber incluso 5-6 o más respuestas al mismo tiempo, pero ¿cómo me aseguro de obtener solo 1 cuando cierre los Websockets?

Estoy tratando de asegurarme de que active solo 1 compra o 1 venta cuando eso suceda.

Estoy usando: (funciona muy bien)

 'node-binance-api'

El Websocket comienza desde aquí:

 binance.websockets.bookTickers('BNBBUSD', (mainTicker) => { var priceNow = mainTicker.bestBid; liveStrategy(priceNow).then(isSold => { // console.log('THIS IS WHEN IS CHECKED ->>>>>>'); if (isSold == true) { console.log('JUST SOLD -> Setting the count to 10'); sleep(3000).then(() => { console.log("Countdown finished: ", count); profitCalculations(mainCurrency); count = 10; }); } if (isSold == false) { console.log('THIS WAS A BUY ->'); count = 10; } }).catch((isSoldErr) => { console.warn('Error:', isSoldErr.message); dumpError(isSoldErr); }); });

El precio se envía de vuelta a la función, esta función se ejecuta continuamente hasta que ocurre una compra o una venta. Antes de activar una compra o una venta, cierro el WebSocket con:

 let endpoints = binance.websockets.subscriptions(); for ( let endpoint in endpoints ) { console.log("..terminating websocket: "+endpoint); let ws = endpoints[endpoint]; ws.terminate(); }

Este código detiene el WebSocket, pero tarda unos 3 segundos, así que activé la compra/venta después de esto:

 if (priceNow > buyPrice) { terminateAllWebsockets(); return new Promise((resolve) => { sleep(5000).then(sleep => { marketBuyFromNoLossStrategyAmount(buySymbol,buyAmount); resolve(false); }) })

}

Cuando regresa, básicamente se envía de vuelta a mi estrategia en liveStrategy(priceNow) para activar los cálculos de ganancias. Los profitCalculations(mainCurrency); podría activarse 3-4 veces o incluso comprar o vender. ¿Hay algo que pueda hacer para que eso no suceda? Entonces, ¿la ganancia o la compra y venta se activará solo una vez? ¿Cómo me aseguro de que eso suceda con mi configuración?

¡Cualquier pensamiento es bienvenido!

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda