`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>
Для некоторого разрыва тикеров между временем продажи и покупки составляет более 200 минут. Как это
возможно? Где я делаю ошибку? Использование Binance API и веб -потока. < /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>
Это один журнал, который я получил, например. Где проблема? Мой интернет стабильный. не заблокирован Binance. Где я делаю ошибку? Не соединяет несколько сокетов вместе.
Подробнее здесь: https://stackoverflow.com/questions/794 ... web-socket
Получение необычной задержки от Binance Web Socket ⇐ Javascript
Форум по Javascript
-
Anonymous
1740832247
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/price?symbol=${selectedToken}`;
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/exchangeInfo?symbolStatus=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>
Для некоторого разрыва тикеров между временем продажи и покупки составляет более 200 минут. Как это
возможно? Где я делаю ошибку? Использование Binance API и веб -потока. < /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>
Это один журнал, который я получил, например. Где проблема? Мой интернет стабильный. не заблокирован Binance. Где я делаю ошибку? Не соединяет несколько сокетов вместе.
Подробнее здесь: [url]https://stackoverflow.com/questions/79477560/getting-unusual-delay-from-binance-web-socket[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия