# ✓ CORRIGIDA: Sincronização de Timestamp - Erro -1021

## Situação Atual

O relógio do seu computador está **-3.3 segundos atrasado** em relação aos servidores da Binance. Isso causa o erro:
```
-1021: Timestamp for this request was 1000ms ahead of the server's time
```

## Correções Implementadas (Código Python)

1. **Trocado de `timeOffset` para `timeDifference`** ✓
   - CCXT agora usa o modo correto de sincronização
   
2. **Aumentado `recvWindow` de 10s para 20s** ✓
   - Maior tolerância de timestamp (padrão Binance é 5s)
   
3. **Retry aumentado de 1s para 2s** ✓
   - Mais tempo para o relógio sincronizar entre tentativas

## ⚠ AÇÃO NECESSÁRIA: Sincronizar Relógio do Windows

### Opção 1: Auto-Sincronizar (SEM Admin)

```powershell
python sincronizar_relogio.py
```

Isso detectará a diferença e mostrará instruções.

### Opção 2: Sincronizar COM Admin (Recomendado)

**IMPORTANTE**: Precisa ser executado como **ADMINISTRADOR**

1. Clique com botão direito em `Prompt de Comando` ou `PowerShell`
2. Selecione "Executar como administrador"
3. Cole e execute:

```powershell
# Configurar servidor NTP e sincronizar
w32tm /config /manualpeerlist:"pool.ntp.org,0x8" /syncfromflags:manual /update
w32tm /resync /force

# Verificar status
w32tm /query /status
```

Ou use o script batch (execute como admin):
```powershell
D:\xampp\htdocs\projetos\balanceamento\sincronizar_relogio.cmd
```

### Opção 3: GUI do Windows (Graphical)

1. Abra "Configurações" (Settings)
2. Vá em "Hora e idioma" → "Data e hora"
3. Certifique-se de "Definir a hora automaticamente" está ativado
4. Clique em "Sincronizar agora"
5. Reinicie seu PC (opcional)

## Como Verificar se Funcionou

### Teste 1: Verificar diferença via Python

```powershell
python -c "
import ccxt
import time
ex = ccxt.binance()
server_time = ex.fetch_time()
local_time = int(time.time() * 1000)
diff = server_time - local_time
print(f'Diferença: {diff}ms (\{diff/1000:.1f}s)')
print('✓ OK' if abs(diff) < 500 else '✗ AINDA DESINCRONIZADO')
"
```

### Teste 2: Executar o robô

```powershell
python robo_balanceamento.py
```

**Esperado na saída:**
```
✓ Timestamp sincronizado (diferença: -0.4ms)
```

**NÃO deve aparecer:**
```
AVISO: Erro de timestamp ao obter saldo
ERRO: Timestamp for this request was 1000ms ahead
```

## Explicação Técnica

O CCXT biblioteca necessita que:

1. **Relógio local vs Binance** < 1000ms de diferença
2. **TimeOffset calculado** é aplicado automaticamente a cada chamada
3. **RecvWindow** dá margem ao servidor aceitar timestamps ligeiramente antigos

Com suas atualizações:
- TimeOffset: -3300ms (seu relógio está atrasado)
- RecvWindow: 20000ms (20 segundos de tolerância)
- Modo: `timeDifference` (sincronização automática)

Isso deveria resolver o problema. Se ainda aparecer erro:
1. Execute sincronização manual com admin
2. Reinicie o robô
3. Verifique output do teste acima

## Próximos Passos

Após sincronizar:

1. ✓ Execute `python robo_balanceamento.py`
2. ✓ Observe mensagens de startup
3. ✓ Confirme que não há erros -1021
4. ✓ Deixe rodar normalmente

Se erros persistirem após sincronização admin, entre em contato com mais detalhes do log.

---

**Última atualização**: 09/04/2026  
**Versão**: robo_balanceamento.py v2.1 (com timeDifference)  
**Status**: Aguardando validação do usuário
