Skip to content

HudsonDevWeb/NebulaBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bot de Trading Automatizado - Binance

Bot de trading automatizado para criptomoedas na Binance, desenvolvido em Python com estratégia baseada em indicadores técnicos (RSI, EMA e Volume).

Índice

Características

  • Trading automatizado na Binance
  • Análise técnica com RSI, EMA e Volume
  • Gerenciamento de risco com Stop Loss e Take Profit
  • Notificações via Telegram
  • Controle inteligente de posições
  • Totalmente configurável

Arquitetura

┌─────────────────┐
│   TraderJob     │  (Loop principal)
└────────┬────────┘
         │
         ├─► TradeService  (Ordens de compra/venda)
         │        │
         │        └─► BinanceClient (API Binance)
         │
         └─► ImprovedStrategy (Análise técnica)
                    │
                    └─► RSI, EMA, Volume

Pré-requisitos

  • Python 3.8+
  • Conta na Binance com API habilitada
  • Bot do Telegram (opcional, para notificações)

Instalação

1. Clone o repositório

git clone https://github.com/seu-usuario/binance-trading-bot.git
cd binance-trading-bot

2. Crie um ambiente virtual

python -m venv venv

# Linux/Mac
source venv/bin/activate

# Windows
venv\Scripts\activate

3. Instale as dependências

pip install -r requirements.txt

requirements.txt:

python-binance==1.0.19
requests==2.31.0
python-dotenv==1.0.0

Configuração

1. Configurar variáveis de ambiente

Crie um arquivo .env na raiz do projeto:

# Binance API
BINANCE_API_KEY=sua_api_key_aqui
BINANCE_API_SECRET=sua_api_secret_aqui

# Telegram (opcional)
TELEGRAM_BOT_TOKEN=seu_token_do_bot
TELEGRAM_CHAT_ID=seu_chat_id

2. Obter credenciais da Binance

  1. Acesse Binance API Management
  2. Crie uma nova API Key
  3. IMPORTANTE: Habilite apenas permissões de Spot Trading
  4. Configure IP whitelist para maior segurança
  5. Teste primeiro na Testnet: https://testnet.binance.vision/

3. Configurar Bot do Telegram (Opcional)

  1. Fale com @BotFather no Telegram
  2. Crie um novo bot com /newbot
  3. Copie o token fornecido
  4. Obtenha seu Chat ID falando com @userinfobot

Como Executar

Modo Básico

from trader_job import TraderJob

# Inicializa o bot com configurações padrão
bot = TraderJob(
    symbol="BTCUSDT",
    interval=60,              # Verifica a cada 60 segundos
    klines_interval="15m",    # Usa candles de 15 minutos
    trade_quantity=0.001      # 0.001 BTC por operação
)

# Inicia o bot
bot.start()

Modo Customizado

bot = TraderJob(
    symbol="ETHUSDT",         # Pode usar outros pares
    interval=30,              # Verificação a cada 30s
    klines_interval="5m",     # Candles de 5 minutos (mais agressivo)
    klines_limit=150,         # Analisa mais dados históricos
    min_usdt_balance=20,      # Mínimo de $20 para operar
    trade_quantity=0.01       # 0.01 ETH por operação
)

bot.start()

Executar via CLI

python main.py

Estratégia de Trading

A estratégia está implementada em services/strategy.py e utiliza:

Indicadores Técnicos

Indicador Função Configuração Padrão
RSI Identifica sobrecompra/sobrevenda Período: 14
EMA Curta Detecta tendências de curto prazo Período: 9
EMA Longa Detecta tendências de longo prazo Período: 21
Volume Confirma força do movimento Mínimo: 1.2x a média

Condições de Entrada (COMPRA)

O bot executa uma COMPRA quando 2 de 3 condições são atendidas:

  1. RSI < 30 (mercado sobrevendido)
  2. EMA(9) > EMA(21) (tendência de alta)
  3. Volume > 1.2x média (confirmação)

Condições de Saída (VENDA)

O bot executa uma VENDA quando:

  • Gerenciamento de Risco (prioridade):
    • 🛑 Stop Loss: -2% de perda
    • 🎯 Take Profit: +3% de lucro

OU quando 2 de 2 condições são atendidas:

  1. RSI > 70 (mercado sobrecomprado)
  2. EMA(9) < EMA(21) (tendência de baixa)

Customização da Estratégia

Toda a lógica de trading está centralizada no arquivo services/strategy.py.

Para modificar a estratégia, edite a classe ImprovedStrategy:

# services/strategy.py

class ImprovedStrategy:
    def __init__(self, 
                 rsi_period=14,           # Período do RSI
                 rsi_oversold=30,         # Limite de sobrevenda
                 rsi_overbought=70,       # Limite de sobrecompra
                 ema_short=9,             # EMA rápida
                 ema_long=21,             # EMA lenta
                 min_volume_ratio=1.2,    # Volume mínimo (1.2x média)
                 stop_loss_pct=2.0,       # Stop loss em %
                 take_profit_pct=3.0):    # Take profit em %
        # ...

Exemplos de Customização

Estratégia Conservadora

strategy = ImprovedStrategy(
    rsi_oversold=25,        # Mais restritivo
    rsi_overbought=75,      # Mais restritivo
    stop_loss_pct=1.5,      # Stop loss mais apertado
    take_profit_pct=2.0     # Take profit menor
)

Estratégia Agressiva

strategy = ImprovedStrategy(
    rsi_oversold=35,        # Menos restritivo
    rsi_overbought=65,      # Menos restritivo
    ema_short=5,            # EMAs mais rápidas
    ema_long=13,
    stop_loss_pct=3.0,      # Stop loss mais largo
    take_profit_pct=5.0     # Take profit maior
)

Estratégia Day Trade (curto prazo)

# No TraderJob, use timeframes menores
bot = TraderJob(
    interval=15,              # Verifica a cada 15s
    klines_interval="1m",     # Candles de 1 minuto
    trade_quantity=0.001
)

# Na Strategy, use períodos menores
strategy = ImprovedStrategy(
    rsi_period=7,
    ema_short=5,
    ema_long=13
)

Criar Sua Própria Estratégia

Você pode criar uma estratégia completamente customizada:

# services/strategy.py

class MinhaEstrategiaCustomizada:
    def __init__(self, param1, param2):
        self.param1 = param1
        self.param2 = param2
    
    def should_buy(self, klines_data):
        """
        Implemente sua lógica de compra aqui
        
        klines_data: lista de candles
        [0] Open time, [1] Open, [2] High, [3] Low, 
        [4] Close, [5] Volume, [6] Close time
        
        Return: True para comprar, False caso contrário
        """
        closes = [float(k[4]) for k in klines_data]
        
        # Sua lógica aqui
        # Exemplo: compra se preço subiu nos últimos 3 candles
        return closes[-1] > closes[-3]
    
    def should_sell(self, klines_data):
        """
        Implemente sua lógica de venda aqui
        
        Return: True para vender, False caso contrário
        """
        closes = [float(k[4]) for k in klines_data]
        
        # Sua lógica aqui
        return closes[-1] < closes[-3]

Depois, use no TraderJob:

from services.strategy import MinhaEstrategiaCustomizada

# Em trader_job.py, substitua:
self.strategy = MinhaEstrategiaCustomizada(param1=10, param2=20)

Estrutura do Projeto

binance-trading-bot/
├── services/
│   ├── binance_client.py      # Cliente da API Binance
│   ├── trade_service.py       # Lógica de ordens (compra/venda)
│   └── strategy.py            #  ESTRATÉGIA DE TRADING 
│
├── utils/
│   └── telegram_notifier.py   # Notificações Telegram
│
├── trader_job.py              # Loop principal do bot
├── main.py                    # Entry point
├── .env                       # Variáveis de ambiente (não commitar!)
├── .env.example               # Exemplo de configuração
├── requirements.txt           # Dependências Python
└── README.md                  # Este arquivo

⚠️ Avisos Importantes

Segurança

  • NUNCA commite o arquivo .env com suas credenciais
  • ✅ Use .gitignore para proteger dados sensíveis
  • ✅ Configure IP whitelist na Binance API
  • ✅ Habilite apenas permissões necessárias (Spot Trading)
  • ✅ Use a Testnet para testes: https://testnet.binance.vision/

Gestão de Risco

  • 🎯 Comece com valores pequenos para testar
  • 📊 Teste na Testnet antes de usar dinheiro real
  • 🛡️ Nunca invista mais do que pode perder
  • 📉 Mercado cripto é volátil - use stop loss adequados
  • 🔄 Monitore o bot regularmente - não deixe 100% sozinho

Testnet (Recomendado)

Antes de usar com dinheiro real, teste na Testnet:

  1. Acesse https://testnet.binance.vision/
  2. Crie uma conta de teste
  3. Gere API Keys de teste
  4. Configure no .env:
BINANCE_TESTNET=true
BINANCE_API_KEY=testnet_key
BINANCE_API_SECRET=testnet_secret

Logs e Monitoramento

O bot gera logs detalhados:

[TraderJob] 🔄 Ciclo #15 - 2026-01-06 15:30:00
[TraderJob] 💵 Preço atual: $42,350.00
[TraderJob] 📍 Posição aberta: NÃO
[Strategy] Análise de COMPRA:
  Preço atual: $42350.00
  RSI: 28.50 (oversold < 30): ✓
  EMA 9: $42400.00 | EMA 21: $42300.00
  EMA cruzamento: ✓
  Volume ratio: 1.35x (min 1.2x): ✓
[Strategy] 🟢 SINAL DE COMPRA (3/3 condições)
[TraderJob] 🟢 Executando COMPRA de 0.001 BTCUSDT

Contribuindo

Contribuições são bem-vindas! Sinta-se livre para:

  • Reportar bugs
  • Sugerir novas features
  • Enviar pull requests
  • Melhorar a documentação

Licença

Este projeto é disponibilizado para fins educacionais. Use por sua conta e risco.

⚡ Suporte

Para dúvidas ou problemas:

  1. Verifique a documentação da Binance API
  2. Revise os logs do bot para identificar erros
  3. Teste na Testnet para isolar problemas

⚠️ DISCLAIMER: Este bot é fornecido "como está", sem garantias. Trading de criptomoedas envolve risco financeiro. O desenvolvedor não se responsabiliza por perdas financeiras.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages