# 🤖 Robô de Balanceamento de Portfólio

## 📋 Visão Geral

Este robô permite operar na Binance com **múltiplas moedas simultânea e automaticamente**, mantendo um portfólio equilibrado com percentuais predefinidos pelo usuário.

### Fluxo de Funcionamento

O robô funciona em **2 fases**:

#### **FASE 1: CONSTRUÇÃO DO PORTFÓLIO**
- Compra as moedas definidas até os preços especificados pelo usuário (entrada no portfólio)
- Cada moeda é comprada até ocupar seu percentual alvo
- Continua até que TODAS as moedas configuradas sejam adquiridas
- Aguarda preços melhores se a moeda estiver acima do preço de entrada desejado

#### **FASE 2: BALANCEAMENTO**
- Após o portfólio estar completo, o robô começa a balancear
- **Vende** moedas que subiram acima do percentual alvo
- **Compra** moedas que caíram abaixo do percentual alvo
- Mantém continuamente o portfólio equilibrado nos percentuais definidos
- A variação de balanceamento (ex: 2%) define quando rebalancear

---

## 📁 Arquivos Criados

```
robo_balanceamento.py                    # Robô principal
interface_graficabalanceamento.py        # Interface gráfica
configuracoes_balanceamento.json         # Configurações do portfólio
portfolio_estado.json                    # Estado atual (gerado automaticamente)
log_balanceamento.log                    # Log de operações
```

---

## ⚙️ CONFIGURAÇÃO

### 1. Arquivo: `configuracoes_balanceamento.json`

```json
{
  "api_key": "sua_api_key_aqui",
  "api_secret": "sua_api_secret_aqui",
  "api_key_testnet": "testnet_key",
  "api_secret_testnet": "testnet_secret",
  "testnet": false,                    // Use true para testar sem dinheiro real
  "moeda_base": "USDT",               // Moeda base (sempre USDT para Binance)
  "capital_inicial": 1000,            // Sua quantia inicial
  "tempo_ciclo": 5,                   // Segundos entre cada ciclo de análise
  "tempo_refresh_tela": 5,            // Ciclos entre relatórios na tela
  "timeframe": "5m",                  // Timeframe para análise (5m, 1h, etc)
  "variacao_balanceamento": 2.0,      // Percentual mínimo para rebalancear (ex: 2%)
  "comissao": 0.1,                    // Taxa da Binance (normalmente 0.1%)
  "saldo_minimo": 10,                 // Saldo mínimo para executar ordem
  "portfolio": [
    {
      "moeda": "HBAR",
      "percentual": 25,               // 25% do portfólio
      "preco_compra": 0.0881,        // Preço máximo para compra inicial
      "ativa": true
    },
    {
      "moeda": "ADA",
      "percentual": 25,
      "preco_compra": 0.95,
      "ativa": true
    },
    {
      "moeda": "DOGE",
      "percentual": 25,
      "preco_compra": 0.35,
      "ativa": true
    },
    {
      "moeda": "SOL",
      "percentual": 25,
      "preco_compra": 200.0,
      "ativa": true
    }
  ]
}
```

### 2. Parâmetros Explicados

| Parâmetro | Descrição |
|-----------|-----------|
| `api_key`, `api_secret` | Credenciais da Binance (não compartilhe!) |
| `testnet` | `true` = modo de teste sem dinheiro real; `false` = operação real |
| `capital_inicial` | Quantia inicial em USDT |
| `tempo_ciclo` | Intervalo em segundos entre verificações |
| `variacao_balanceamento` | Diferença % para disparar rebalanceamento (ex: 2% = rebalanceia quando desviar 2%) |
| `moeda` | Ticker da moeda (HBAR, ADA, etc) |
| `percentual` | Participação alvo no portfólio (25% = 1 de 4 moedas) |
| `preco_compra` | Preço máximo para compra inicial (entrada) |
| `ativa` | `true` = inclui no portfólio; `false` = ignora |

---

## 🚀 COMO USAR

### Opção 1: Interface Gráfica (Recomendado)

```bash
python interface_graficabalanceamento.py
```

**Na interface você pode:**
- ✅ Iniciar/Parar o robô
- ✅ Adicionar/Editar/Remover moedas
- ✅ Alterar configurações em tempo real
- ✅ Ver status do portfólio
- ✅ Visualizar log de operações

### Opção 2: Linha de Comando

```bash
python robo_balanceamento.py
```

O robô começará a executar continuamente até ser interrompido (Ctrl+C)

---

## 📊 EXEMPLO DE FUNCIONAMENTO

### Cenário: Portfólio com 4 moedas

**CONFIGURAÇÃO:**
- Capital: 1000 USDT
- Percentuais: HBAR (25%), ADA (25%), DOGE (25%), SOL (25%)
- Preços de entrada: HBAR (0.0881), ADA (0.95), DOGE (0.35), SOL (200)

### **FASE 1: CONSTRUÇÃO**

```
CICLO 1:
- HBAR preço 0.088 <= 0.0881 ✓ COMPRA 280 unidades (250 USDT)
- ADA preço 0.98 > 0.95 ⏳ AGUARDA preço melhor
- DOGE preço 0.35 <= 0.35 ✓ COMPRA 714 unidades (250 USDT)
- SOL preço 198 <= 200 ✓ COMPRA 1.25 unidades (250 USDT)
- Saldo USDT: 250

CICLO 2:
- ADA preço 0.94 <= 0.95 ✓ COMPRA 265 unidades (250 USDT)
- Saldo USDT: 0

✅ PORTFÓLIO COMPLETO - Iniciando balanceamento
```

### **FASE 2: BALANCEAMENTO**

```
CICLO 10 (15 minutos depois):
Análise de Percentuais:
- HBAR: 26.5% (alvo 25%, +1.5% ok)
- ADA: 24.2% (alvo 25%, -0.8% ok)
- DOGE: 22.1% (alvo 25%, -2.9% ⚠️ ABAIXO!)
- SOL: 27.2% (alvo 25%, +2.2% ⚠️ ACIMA!)

AÇÕES:
❌ VENDA: SOL (27.2% > 25% + 2%) → Vende 0.15 SOL por ~30 USDT
✅ COMPRA: DOGE (22.1% < 25% - 2%) → Compra 85 DOGE com ~30 USDT

Novos Percentuais:
- HBAR: 26.1%
- ADA: 24.8%
- DOGE: 24.2%
- SOL: 25.0%
✅ Portfólio rebalanceado!
```

---

## 📈 RELATÓRIO DO PORTFÓLIO

O robô cria um arquivo `portfolio_estado.json` que rastreia:

```json
{
  "fase": "balanceamento",
  "data_inicio": "2026-04-09T10:30:00",
  "capital_inicial": 1000,
  "moedas_compradas": ["HBAR", "ADA", "DOGE", "SOL"],
  "moedas_pendentes": [],
  "percentuais_alvo": {
    "HBAR": 25,
    "ADA": 25,
    "DOGE": 25,
    "SOL": 25
  },
  "precos_compra": {
    "HBAR": 0.0881,
    "ADA": 0.95,
    "DOGE": 0.35,
    "SOL": 200
  },
  "historico_trades": [
    {
      "timestamp": "2026-04-09T10:30:15",
      "moeda": "HBAR",
      "tipo": "compra_inicial",
      "preco": 0.088,
      "quantidade": 280,
      "valor": 250
    },
    ...
  ]
}
```

---

## 📝 LOG DE OPERAÇÕES

O arquivo `log_balanceamento.log` registra tudo:

```
[09/04/2026 10:30:15] ===================== NOVO PORTFÓLIO INICIADO =====================
[09/04/2026 10:30:15] Capital Inicial: 1000 USDT
[09/04/2026 10:30:15] Moedas no Portfólio: HBAR, ADA, DOGE, SOL
[09/04/2026 10:30:15] Percentuais Alvo: {'HBAR': 25, 'ADA': 25, 'DOGE': 25, 'SOL': 25}

[09/04/2026 10:30:16] ========== FASE DE CONSTRUÇÃO DO PORTFÓLIO ==========
[09/04/2026 10:30:16] Saldo USDT disponível: 1000.00
[09/04/2026 10:30:16] Valor Total do Portfólio: 0.00 USDT

[09/04/2026 10:30:18] >>> Comprando HBAR <<<
[09/04/2026 10:30:18]     Preço Atual: 0.08800000
[09/04/2026 10:30:18]     Preço Alvo: 0.08810000
[09/04/2026 10:30:18]     Valor: 250.00 USDT
[09/04/2026 10:30:18]     Quantidade: 2840.91
[09/04/2026 10:30:18] ✓ Ordem de COMPRA executada: 2840.91 HBAR em 09/04/2026 10:30:18
```

---

## ⚠️ PONTOS IMPORTANTES

### 1. **Configurar Chaves da API Corretamente**
   - Vá em https://www.binance.com/settings/api-management
   - Crie uma chave com permissões: `Read`, `Spot Trading`
   - **Nunca** compartilhe suas chaves!

### 2. **Começar com Testnet**
   - Configure `testnet: true` em `configuracoes_balanceamento.json`
   - Teste o robô sem dinheiro real primeiro!
   - Após validar, mude para `testnet: false`

### 3. **Validar Percentuais**
   - A soma dos percentuais deve ser aproximadamente **100%**
   - Se não somar 100%, o robô ajustará proporcionalmente

### 4. **Preços de Compra (Entrada)**
   - Use preços históricos ou preços estimados para as moedas
   - O robô só comprará se o preço ≤ preço_compra × 1.02 (2% de tolerância)

### 5. **Taxa de Comissão**
   - Binance cobra tipicamente 0.1% por ordem
   - Configure corretamente em `comissao`

### 6. **Saldo Mínimo**
   - Configure um `saldo_minimo` aceitável (ex: 10 USDT)
   - Evita ordens muito pequenas

---

## 🔧 AJUSTES RECOMENDADOS

### Para Usar com Mais Moedas
```json
"portfolio": [
  {"moeda": "BTC", "percentual": 20, "preco_compra": 42000, "ativa": true},
  {"moeda": "ETH", "percentual": 20, "preco_compra": 2500, "ativa": true},
  {"moeda": "BNB", "percentual": 20, "preco_compra": 600, "ativa": true},
  {"moeda": "XRP", "percentual": 20, "preco_compra": 2.5, "ativa": true},
  {"moeda": "ADA", "percentual": 20, "preco_compra": 1.0, "ativa": true}
]
```

### Para Ser Mais Agressivo no Rebalanceamento
```json
"variacao_balanceamento": 1.0  // Rebalanceia a cada 1% de diferença
```

### Para Ser Mais Conservador
```json
"variacao_balanceamento": 5.0  // Rebalanceia apenas com 5% de diferença
```

---

## 🐛 TROUBLESHOOTING

### Erro: "Falha ao configurar exchange"
- Verifique sua conexão com internet
- Confirme que suas chaves da API estão corretas

### Erro: "Módulo não encontrado"
- Instale as dependências: `pip install ccxt pandas pytz colorama`

### Robô parado em construção
- Verifique no log se há avisos de preço
- Confirme se tem saldo suficiente

### Rebalanceamento não acontece
- A variação pode estar muito alta
- Reduz `variacao_balanceamento` para testar

---

## 📞 SUPORTE

Verifique o arquivo `log_balanceamento.log` para diagnóstico de problemas.

Todos os eventos são registrados com timestamp!

---

## 🚨 AVISOS IMPORTANTES

⚠️ **USE POR SUA CONTA E RISCO**
- Teste em testnet primeiro
- Comece com pequenos valores
- Monitore os logs regularmente
- O mercado é volátil, perdas são possíveis

---

**Versão:** 1.0  
**Data:** Abril 2026  
**Baseado em:** robo_trade.py
