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!