当interval1>interval2时,我将interval1的颜色更改为绿色!
我只想要一条消息,告诉我间隔 1 > 间隔 2 的数量。我不知道该怎么做?
async function fetchCryptoData(symbol) {
try {
const response = await fetch(
`https://api.binance.com/api/v3/klines?symbol=${symbol}USDT&interval=5m&limit=2`
);
const data = await response.json();
// Mise à jour du tableau avec les données et la couleur
const cryptoRow = document.getElementById(symbol);
// Comparaison des intervalles
const interval1 = parseFloat(data[0][4]) - parseFloat(data[0][1]);
const interval2 = parseFloat(data[1][4]) - parseFloat(data[1][1]);
// Vérification si interval1 est strictement plus grand que les autres intervalles
const isMaxInterval = interval1 > interval2;
// Initializsation de count pour interval1 > interval2
let countIntervalGreaterThan = 0;
for (let i = 0; i < data.length; i++) {
const openPrice = parseFloat(data[i][1]);
const closePrice = parseFloat(data[i][4]);
const intervalVariation = ((closePrice - openPrice) / openPrice) * 100;
const cellIndex = i + 1; // Décalage d'une cellule pour éviter la première cellule (Crypto)
const variationCell = cryptoRow.insertCell(cellIndex);
const variationValue = intervalVariation.toFixed(2);
const timestamp = parseInt(data[i][0]);
const dateValue = new Date(timestamp);
const hour = dateValue.getHours();
const minute = dateValue.getMinutes();
const formattedTime = `${hour.toString().padStart(2, "0")}:${minute
.toString()
.padStart(2, "0")}`;
variationCell.textContent = `${formattedTime}: ${variationValue}%`;
// Ajout de la classe 'positive' uniquement si interval1 est strictement plus grand que les autres intervalles
if (i === 0 && isMaxInterval && interval1 !== 0) {
variationCell.classList.add('positive');
// Increment le compte si interval1 > interval2
countIntervalGreaterThan++;
}
}
// Affichage du count après la boucle
console.log(`Number of times interval1 > interval2: ${countIntervalGreaterThan}`);
} catch (error) {
console.error(
`Erreur lors de la récupération des données pour ${symbol}:`,
error
);
}
}
fetchCryptoData("1INCH");
fetchCryptoData("AAVE");
fetchCryptoData("ACH");
fetchCryptoData("ADA");
fetchCryptoData("AGIX");
fetchCryptoData("AGLD");
....
为什么我有几行而不是一行来添加总数?
仅仅因为
fetchCryptoData
被多次调用,而你console.log
在fetchCryptoData
内部。
这也意味着您的
countIntervalGreaterThan
变量实际上是单个调用结果的值,而不是全部调用结果的值。
最好让
fetchCryptoData
返回每次调用的计数(小计),然后等待所有调用并将它们相加(总计)。
async function fetchCryptoData(symbol) {
try {
const response = await fetch(
`https://api.binance.com/api/v3/klines?symbol=${symbol}USDT&interval=5m&limit=2`
);
const data = await response.json();
// Mise à jour du tableau avec les données et la couleur
const cryptoRow = document.getElementById(symbol);
// Comparaison des intervalles
const interval1 = parseFloat(data[0][4]) - parseFloat(data[0][1]);
const interval2 = parseFloat(data[1][4]) - parseFloat(data[1][1]);
// Vérification si interval1 est strictement plus grand que les autres intervalles
const isMaxInterval = interval1 > interval2;
// Initializsation de count pour interval1 > interval2
let countIntervalGreaterThan = 0;
for (let i = 0; i < data.length; i++) {
const openPrice = parseFloat(data[i][1]);
const closePrice = parseFloat(data[i][4]);
const intervalVariation = ((closePrice - openPrice) / openPrice) * 100;
const cellIndex = i + 1; // Décalage d'une cellule pour éviter la première cellule (Crypto)
const variationCell = cryptoRow.insertCell(cellIndex);
const variationValue = intervalVariation.toFixed(2);
const timestamp = parseInt(data[i][0]);
const dateValue = new Date(timestamp);
const hour = dateValue.getHours();
const minute = dateValue.getMinutes();
const formattedTime = `${hour.toString().padStart(2, "0")}:${minute
.toString()
.padStart(2, "0")}`;
variationCell.textContent = `${formattedTime}: ${variationValue}%`;
// Ajout de la classe 'positive' uniquement si interval1 est strictement plus grand que les autres intervalles
if (i === 0 && isMaxInterval && interval1 !== 0) {
variationCell.classList.add('positive');
// Increment le compte si interval1 > interval2
countIntervalGreaterThan++;
}
}
return { countIntervalGreaterThan }
} catch (error) {
console.error(
`Erreur lors de la récupération des données pour ${symbol}:`,
error
);
}
}
Promise.all([
fetchCryptoData("1INCH"),
fetchCryptoData("AAVE"),
fetchCryptoData("ACH"),
fetchCryptoData("ADA"),
fetchCryptoData("AGIX"),
fetchCryptoData("AGLD"),
// ... etc
]).then((values) => {
const total = values.reduce((accumulator, value) => {
return accumulator + value.countIntervalGreaterThan
}, 0)
// Affichage du count après la boucle
console.log(`Number of times interval1 > interval2: ${total}`);
});