Ungewöhnliche Verzögerung von Binance Web Socket erhaltenJavaScript

Javascript-Forum
Anonymous
 Ungewöhnliche Verzögerung von Binance Web Socket erhalten

Post by Anonymous »

function forceTerminate(){
forceTerm = setTimeout(() => {
ws.terminate();
isClosing = true;
}, 30000);
}

async function buyTicker(selectedToken){
if(!selectedToken){
throw new Error("No ticker found to buy & sell.");
}

const priceApiUrl = `https://api.binance.com/api/v3/ticker/p ... ectedToken}`;
const response = await fetch(priceApiUrl);
const data = await response.json();
buyPrice = parseFloat(data["price"]);
buyTime = Date.now();
lastBought = selectedToken;

return console.log("Ticker:", selectedToken, "bought at", buyPrice);
}

async function sellTicker(selectedToken){
i = 0;
manuallyClosed = false;
ws = new webSocket(`wss://stream.binance.com:443/ws/${selectedToken.toLowerCase()}@trade`);

ws.on("open", () => {
console.log("Connected to sell price check stream.");
});

ws.on("ping", data => {
ws.pong(data);
});

ws.on("error", err => {
console.log("WebSocket error:", err.message);
});

ws.on("close", () => {
ws.removeAllListeners();
ws = undefined;
isClosing = false;
clearTimeout(forceTerm);

if(manuallyClosed){
mainLoop = setTimeout(() => {
mainFunc();
}, delayTime);

console.log("Sell completed & disconnected from sell price check stream.");
}else{
setTimeout(() => {
sellTicker(selectedTicker);
}, 500);

console.log("Disconnected from sell price check stream. Attempting re-connection......");
}
});

ws.on("message", data => {
console.log("tick.."); // to be deleted.

lastMessage = Date.now();

++i;

if(i > 10000){
ws.close(1000, "Requested closure.");
ws.removeAllListeners("message");
isClosing = true;
forceTerminate();
return;
}

data = JSON.parse(data.toString());
sellPrice = parseFloat(data["p"]);
let gainNow = (sellPrice - buyPrice) / buyPrice;

if((gainNow < -0.002) && (sellWindow === 450000)){
sellWindow = (2 * sellWindow);
}

if(gainNow >= profitGain){
GAIN = GAIN * (1 + gainNow - 0.002);
sellTime = Date.now();
ws.close(1000, "Requested closure.");
manuallyClosed = true;
ws.removeAllListeners("message");
isClosing = true;
forceTerminate();
sellWindow = 450000;
profitGain = 0.0033;

if((sellTime - buyTime) > 32500){
delayTime = 2500;
}else{
delayTime = 32500 - sellTime + buyTime;
}

return console.log("Ticker:", selectedTicker, "sold at", sellPrice, ", with GAIN", GAIN, "after", ((sellTime - buyTime) / 60000), "min.");
}

if((gainNow 32500){
delayTime = 2500;
}else{
delayTime = 32500 - sellTime + buyTime;
}

return console.log("Ticker:", selectedTicker, "sold at", sellPrice, ", with GAIN", GAIN, "after", ((sellTime - buyTime) / 60000), "min.");
}

if((Date.now() - buyTime) > sellWindow){
if((gainNow 32500){
delayTime = 2500;
}else{
delayTime = 32500 - sellTime + buyTime;
}

return console.log("Ticker:", selectedTicker, "sold at", sellPrice, ", with GAIN", GAIN, "after", ((sellTime - buyTime) / 60000), "min.");
}
});
}

async function mainFunc(){
let tickerList = undefined;
try{
tickerList = await getBinanceTickerList();
}catch(err){
console.log("Error fetching data from Binance for ticker list:", err.message);

mainLoop = setTimeout(() => {
mainFunc();
}, 32500);

return;
}

let klineData = undefined;
try{
klineData = await getKlineDetails(tickerList);
}catch(err){
console.log("Error fetching data from Binance for kline data:", err.message);

mainLoop = setTimeout(() => {
mainFunc();
}, 32500);

return;
}

selectedTicker = getTickerPriority(tickerList, klineData);

try{
await buyTicker(selectedTicker);
}catch(err){
console.log("Error fetching data from Binance for current/buy price data:", err.message);

mainLoop = setTimeout(() => {
mainFunc();
}, 32500);

return;
}

try{
await sellTicker(selectedTicker);
}catch(err){
console.log("Error fetching data from Binance for sell price data:", err.message);
}
}

async function baseFunc(){
try{
const exApiUrl = "https://api.binance.com/api/v3/exchange ... us=TRADING";
const exResponse = await fetch(exApiUrl);
const exData = await exResponse.json();
const symbolArray = exData["symbols"];
activeTickers = symbolArray.map(val => {
return val["symbol"];
});

activeTickers = activeTickers.filter(val => {
return val.endsWith("USDT");
});

console.log("Bot started..");

mainFunc();

setInterval(() => {
if(((Date.now() - lastMessage) > 60000) && (ws?.readyState === 1) && !isClosing){
ws.close(1000, "Requested closure.");
ws.removeAllListeners("message");
isClosing = true;
forceTerminate();
return;
}
}, 10000);
}catch(err){
console.log("Failed to start the bot:", err.message);
}
}
< /code>
Für einige Tickers Lücke zwischen Verkauf und Kaufzeit beträgt mehr als 200 min. Wie ist das
möglich? Wo mache ich den Fehler? Verwenden von Binance API und Web Stream. < /p>
Ticker: TSTUSDT bought at 0.0933
Connected to sell price check stream.
3040 tick..
Disconnected from sell price check stream. Attempting re-connection......
Connected to sell price check stream.
tick..
Ticker: TSTUSDT sold at 0.0858 , with GAIN 0.9217527123702782 after
208.58356666666666 min.
< /code>
Dies ist ein Protokoll, das ich zum Beispiel habe. Wo ist das Problem? Mein Internet ist stabil. nicht durch Binance blockiert werden. Wo mache ich den Fehler? Mehrere Sockets auch nicht miteinander verbinden.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post