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.
Ungewöhnliche Verzögerung von Binance Web Socket erhalten ⇐ JavaScript
-
- Similar Topics
- Replies
- Views
- Last post
-
-
Wie man eine Otoco -Bestellung durch die Binance -API in Python platziert
by Anonymous » » in Python - 0 Replies
- 2 Views
-
Last post by Anonymous
-
-
-
Wie man eine Otoco -Bestellung durch die Binance -API in Python platziert
by Anonymous » » in Python - 0 Replies
- 4 Views
-
Last post by Anonymous
-