`
<title>AGIT V3.1 - SISTEMA PROFISSIONAL</title>
<script src="https://cdn.jsdelivr.net/npm/
[email protected]/dist/browser.js"></script>
<style>
:root { --bg: #0a0b10; --card: #161a25; --green: #00ff88; --red: #ff3355; --text: #d1d4dc; }
body { font-family: 'Segoe UI', sans-serif; background: var(--bg); color: var(--text); margin: 0; padding: 15px; text-align: center; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 20px; max-width: 1400px; margin: 20px auto; }
.card { background: var(--card); border-radius: 12px; padding: 20px; border: 1px solid #2a2e39; transition: 0.3s; }
.active-call { border: 2px solid var(--green); box-shadow: 0 0 15px rgba(0,255,136,0.3); }
.active-put { border: 2px solid var(--red); box-shadow: 0 0 15px rgba(255,51,85,0.3); }
.symbol { font-size: 1.5rem; font-weight: bold; color: #fff; display: block; margin-bottom: 10px; }
.prob-value { font-size: 3rem; font-weight: 800; }
.bar-bg { background: #2a2e39; height: 10px; border-radius: 5px; overflow: hidden; margin: 15px 0; }
.bar-fill { height: 100%; transition: 0.8s; }
.timer { font-family: monospace; color: #ffa500; font-size: 1.1rem; }
#status-msg { color: #848e9c; margin-top: 10px; font-size: 0.9rem; }
button { background: var(--green); border: none; padding: 12px 25px; border-radius: 5px; cursor: pointer; font-weight: bold; margin: 10px; }
.error-msg { background: #ff335522; color: #ff3355; padding: 10px; border-radius: 5px; margin: 10px; border: 1px solid #ff3355; display: none; }
</style>
<h1>AGIT <span style="color:var(--green)">V3.1</span></h1>
<div id="error-display" class="error-msg"></div>
<button id="btn-audio">🔈 ATIVAR ALERTAS SONOROS</button>
<div id="status-msg">Iniciando análise de mercado...</div>
<div class="grid" id="display">
<!-- Cards aparecerão aqui -->
</div>
<script>
let audioCtx = null;
const errorDisplay = document.getElementById('error-display');
const statusMsg = document.getElementById('status-msg');
// Ativar Áudio
document.getElementById('btn-audio').onclick = function() {
audioCtx = new (window.AudioContext || window.webkitAudioContext)();
this.style.background = "#333";
this.style.color = "#fff";
this.innerText = "ÁUDIO ATIVO";
};
function playAlert(high) {
if (!audioCtx) return;
const osc = audioCtx.createOscillator();
const gain = audioCtx.createGain();
osc.connect(gain); gain.connect(audioCtx.destination);
osc.frequency.value = high ? 880 : 220;
gain.gain.setValueAtTime(0.1, audioCtx.currentTime);
osc.start(); osc.stop(audioCtx.currentTime + 0.5);
}
const pairs = ['BTCUSDT', 'ETHUSDT', 'EURUSDT', 'GBPUSDT'];
async function updateAnalysis() {
// Verifica se a biblioteca carregou
if (!window.technicalindicators) {
statusMsg.innerText = "Erro: Biblioteca de indicadores não carregada. Verifique sua conexão.";
return;
}
const display = document.getElementById('display');
let html = '';
for (const pair of pairs) {
try {
// Busca dados da Binance
const response = await fetch(`https://api.binance.com/api/v3/klines?symbol=${pair}&interval=5m&limit=100`);
if (!response.ok) throw new Error("Erro na API");
const data = await response.json();
const closes = data.map(d => parseFloat(d[4]));
// Cálculos
const rsi = window.technicalindicators.rsi({values: closes, period: 14}).pop();
const bb = window.technicalindicators.bollingerbands({values: closes, period: 20, stdDev: 2}).pop();
const lastPrice = closes[closes.length - 1];
let score = 50;
if (lastPrice < bb.lower && rsi < 35) score += 35;
if (lastPrice > bb.upper && rsi > 65) score -= 35;
const isCall = score >= 50;
const prob = isCall ? score : (100 - score);
const isStrong = prob >= 80;
if (isStrong) playAlert(isCall);
// Cronômetro simples
const now = new Date();
const nextVela = 5 - (now.getMinutes() % 5);
const seg = 60 - now.getSeconds();
html += `
${pair}
${prob.toFixed(0)}%
${isCall ? 'CALL' : 'PUT'}
PRÓXIMA VELA EM ~${nextVela}min
RSI: ${rsi.toFixed(2)}
`;
statusMsg.innerText = "Mercado monitorado em tempo real.";
errorDisplay.style.display = "none";
} catch (err) {
errorDisplay.style.display = "block";
errorDisplay.innerText = "Erro de Conexão: O navegador bloqueou o acesso aos dados ou você está sem internet.";
console.error(err);
}
}
display.innerHTML = html;
}
setInterval(updateAnalysis, 3000);
updateAnalysis();
</script>
`
`
<title>AGIT V3.1 - SISTEMA PROFISSIONAL</title> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/browser.js"></script> <style> :root { --bg: #0a0b10; --card: #161a25; --green: #00ff88; --red: #ff3355; --text: #d1d4dc; } body { font-family: 'Segoe UI', sans-serif; background: var(--bg); color: var(--text); margin: 0; padding: 15px; text-align: center; } .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 20px; max-width: 1400px; margin: 20px auto; } .card { background: var(--card); border-radius: 12px; padding: 20px; border: 1px solid #2a2e39; transition: 0.3s; } .active-call { border: 2px solid var(--green); box-shadow: 0 0 15px rgba(0,255,136,0.3); } .active-put { border: 2px solid var(--red); box-shadow: 0 0 15px rgba(255,51,85,0.3); } .symbol { font-size: 1.5rem; font-weight: bold; color: #fff; display: block; margin-bottom: 10px; } .prob-value { font-size: 3rem; font-weight: 800; } .bar-bg { background: #2a2e39; height: 10px; border-radius: 5px; overflow: hidden; margin: 15px 0; } .bar-fill { height: 100%; transition: 0.8s; } .timer { font-family: monospace; color: #ffa500; font-size: 1.1rem; } #status-msg { color: #848e9c; margin-top: 10px; font-size: 0.9rem; } button { background: var(--green); border: none; padding: 12px 25px; border-radius: 5px; cursor: pointer; font-weight: bold; margin: 10px; } .error-msg { background: #ff335522; color: #ff3355; padding: 10px; border-radius: 5px; margin: 10px; border: 1px solid #ff3355; display: none; } </style>