Guia Completo: Bot de Trading com Claude, TradingView e Multi-Exchange (2026)
Este tutorial mostra como configurar o seu bot para trabalhar com Binance, Bybit, OKX ou MEXC de forma fácil e segura, usando uma única base de código.
1. Configuração da API Key na Binance (Passo a Passo Atualizado 2026)
O que você vai obter
- API Key
- Secret Key
- Sem Passphrase
Passos detalhados:
Acesse binance.com e faça login na sua conta.
Clique no ícone do perfil (canto superior direito) → API Management.
Clique no botão azul Create API → escolha System generated → Next.
Dê um nome claro à chave, por exemplo: claude-trading-bot-prod.
Complete a verificação de segurança (e-mail + 2FA).
Configure as permissões com cuidado:
Permissão Status Recomendação Enable Reading ON Obrigatório Enable Spot & Margin Trading ON Para trading spot Enable Futures Trading ON Para futures/perpétuos Enable Withdrawals OFF Nunca ative (segurança) Restrict access to trusted IPs ON Altamente recomendado - Ative a restrição de IP:
- Abra outra aba e pesquise “what is my IP address”.
- Copie seu IP atual e clique em Add IP → Confirm.
- Ative a restrição de IP:
Clique em Save e confirme a verificação novamente.
Copie imediatamente a API Key e a Secret Key (a secret aparece só uma vez!).
⚠️ Aviso de Segurança: Nunca compartilhe essas chaves. Use um gerenciador de senhas (Bitwarden, 1Password, etc.).
2. Atualização do Arquivo .env
# ======================
# EXCHANGE CONFIGURATION
# ======================
EXCHANGE=binance # Opções: binance, bybit, okx, mexc
TRADE_MODE=paper # paper ou live
# ======================
# BINANCE API KEYS
# ======================
BINANCE_API_KEY=xxxxxxxxxx
BINANCE_API_SECRET=xxxxxxxxxx
BINANCE_PASSPHRASE= # Deixe vazio
# ======================
# BYBIT (se for usar)
# ======================
# BYBIT_API_KEY=...
# BYBIT_API_SECRET=...
# ======================
# OUTRAS CONFIGURAÇÕES
# ======================
MAX_POSITION_PERCENT=1.5
MAX_DAILY_DRAWDOWN_PERCENT=5.0
TELEGRAM_BOT_TOKEN=...
TELEGRAM_CHAT_ID=...3. Arquivo exchange/client.py (Versão Completa Multi-Exchange)
# exchange/client.py
import ccxt
import os
import logging
from typing import Optional
logger = logging.getLogger(__name__)
def get_exchange() -> ccxt.Exchange:
"""
Retorna instância configurada do CCXT para a exchange selecionada.
Suporta: binance, bybit, okx, mexc
"""
exchange_name = os.getenv("EXCHANGE", "binance").lower().strip()
trade_mode = os.getenv("TRADE_MODE", "paper").lower()
# Carrega credenciais dinamicamente
api_key = os.getenv(f"{exchange_name.upper()}_API_KEY")
api_secret = os.getenv(f"{exchange_name.upper()}_API_SECRET")
passphrase = os.getenv(f"{exchange_name.upper()}_PASSPHRASE")
if not api_key or not api_secret:
raise ValueError(f"API Key/Secret não configuradas para {exchange_name}")
config = {
'apiKey': api_key,
'secret': api_secret,
'enableRateLimit': True,
'options': {
'defaultType': 'future' if trade_mode == 'futures' else 'spot',
}
}
if passphrase:
config['password'] = passphrase # Usado por OKX e BitGet
# === Criação da exchange ===
exchanges = {
"binance": ccxt.binance,
"bybit": ccxt.bybit,
"okx": ccxt.okx,
"mexc": ccxt.mexc,
}
if exchange_name not in exchanges:
raise ValueError(f"Exchange '{exchange_name}' não suportada. Use: {list(exchanges.keys())}")
exchange_class = exchanges[exchange_name]
exchange = exchange_class(config)
# === Modo Paper Trading (Testnet) ===
if trade_mode == "paper":
if exchange_name == "binance":
exchange.set_sandbox_mode(True)
logger.info("🔬 Binance Testnet (Paper Trading) ativado")
elif exchange_name == "bybit":
exchange.urls['api']['rest'] = 'https://testnet-api.bybit.com'
logger.info("🔬 Bybit Testnet ativado")
elif exchange_name == "okx":
exchange.urls['api']['rest'] = 'https://www.okx.com/api/v5'
# OKX usa flag separada para demo
exchange.options['sandbox'] = True
logger.info("🔬 OKX Demo (Paper) ativado")
else:
logger.warning(f"Paper trading para {exchange_name} ainda não totalmente implementado")
logger.info(f"✅ Exchange carregada: {exchange_name.upper()} | Modo: {trade_mode.upper()}")
return exchange
# Função auxiliar para testar conexão
async def test_connection():
exchange = get_exchange()
try:
balance = exchange.fetch_balance()
print(f"✅ Conexão OK - Saldo disponível: {balance.get('total', {})}")
except Exception as e:
print(f"❌ Erro de conexão: {e}")4. Atualização do requirements.txt
fastapi==0.115.0
uvicorn[standard]==0.30.6
python-dotenv==1.0.1
httpx==0.27.0
sqlalchemy==2.0.35
alembic==1.13.2
psycopg2-binary==2.9.9
pandas==2.2.2
python-telegram-bot==21.4
pillow==10.4.0
ccxt==4.4.0 # Versão atualizada
tenacity==9.0.0
structlog==24.4.0
httpx[http2] # Melhor performance5. Atualizações Recomendadas no README.md
Adicione esta seção no início do README:
## 🌐 Suporte Multi-Exchange
O bot agora suporta nativamente:
- **Binance** (recomendado para alta liquidez)
- **Bybit** (melhor para futures)
- **OKX**
- **MEXC** (taxas muito baixas)
### Como trocar de exchange
1. Altere `EXCHANGE=binance` no arquivo `.env`
2. Coloque as chaves da exchange escolhida
3. Reinicie o container Docker
### Exchanges suportadas atualmente
| Exchange | Spot | Futures | Paper Trading | Recomendado para |
|----------|------|---------|---------------|------------------|
| Binance | Yes | Yes | Yes | Liquidez |
| Bybit | Yes | Yes | Excelente | Futures |
| OKX | Yes | Yes | Good | Performance |
| MEXC | Yes | Yes | Good | Taxas baixas |

Comentários
Postar um comentário