Skip to content

Bot em Python para automação de operações no MetaTrader 5, com logs estruturados, validações, resiliência e export de dados para Excel/CSV usando Pandas.

Notifications You must be signed in to change notification settings

flavioro/daytrade-bot-python

Repository files navigation

Daytrade Bot (Python + MetaTrader 5)

Python License Tests

Projeto em Python para monitoramento e execução automatizada de ordens no MetaTrader 5, com controle de margem, logs, export para Excel e regras de gestão configuráveis.

⚠️ Aviso importante: este projeto é educacional. Não é recomendação de investimento. Operar no mercado financeiro envolve risco e pode gerar perdas.


⚡ Quickstart (3 passos)

git clone https://github.com/flavioro/daytrade-bot-python.git
cd daytrade-bot-python
pip install -r requirements_ci.txt
python -m src.daytrade_bot.main

Obs.: você precisa ter o MetaTrader 5 instalado e configurado na sua máquina para a integração funcionar.


🎯 Objetivo

Automatizar a abertura e gerenciamento de posições com base em regras e sinais, incluindo:

  • monitoramento contínuo
  • controle de margem livre
  • hedge / balanceamento
  • logs detalhados
  • export para Excel (auditoria)

✅ Features

  • Conexão com MetaTrader 5 (MT5)
  • Execução de ordens BUY/SELL com regras configuráveis
  • Controle de margem livre + alertas de equity
  • Reconexão automática em caso de falha
  • Logs e rastreabilidade do processo
  • Export automático para Excel
  • Arquitetura modular (serviços separados por responsabilidade)
  • Configurações isoladas em arquivos JSON

🧠 Tecnologias e Competências

📚 Aprendizados e Competências

Este projeto foi construído para demonstrar, na prática, competências comuns em backend e automação:

  • Integração com API externa (MetaTrader5) e execução de ações idempotentes
  • Arquitetura modular por responsabilidades (services / managers)
  • Observabilidade: logs estruturados + rastreabilidade do loop
  • Resiliência: reconexão automática em falhas de comunicação
  • Persistência e auditoria: export periódico para Excel (openpyxl)
  • Processamento de dados com Pandas + indicadores técnicos (pandas-ta-classic)
  • Boas práticas de configuração: arquivos .sample.json + .local.json (não versionados)

🎯 Objetivo do projeto: Daytrade Bot — Automação de Ordens com Python + MetaTrader 5

Python • MetaTrader5 • Pandas • pandas-ta-classic • Automação • Gestão de risco (conceitos) • Logs • Data Processing • Export Excel


🏗️ Estrutura do Projeto

daytrade_bot/
├── run.py
├── requirements.txt
├── .gitignore
├── config/
│   ├── config_buy.sample.json
│   ├── hedge_state_buy.sample.json
│   ├── account_demo_buy.sample.json
│   ├── account_demo_sell.sample.json
│   ├── account_real_buy.sample.json
│   └── account_real_sell.sample.json
├── scripts/
│   └── run_windows.sample.bat
├── src/
│   └── daytrade_bot/
│       ├── main_manager_fm_buy_sell.py
│       ├── mt5_order.py
│       └── ...
└── tests/
    └── ...

⚠️ Primeira execução: sempre em conta DEMO

Antes de rodar em conta real, rode o bot em DEMO para validar:

  • conexão com MT5
  • símbolo e permissões
  • parâmetros (TP/SL/volume)
  • intervalos e regras
  • export de Excel
  • estabilidade do loop

▶️ Como executar (Windows)

1) Clone o projeto

git clone <URL_DO_SEU_REPO>
cd daytrade_bot

2) Crie e ative o ambiente virtual

python -m venv venv
venv\Scripts\activate

3) Instale dependências

pip install -r requirements.txt

📌 Dependências principais (resumo):

  • MetaTrader5 (integração com MT5)
  • pandas (tratamento de dados)
  • pandas-ta-classic (indicadores técnicos)
  • openpyxl (export para Excel)

Nota: pandas-ta passou a exigir Python >= 3.12. Para manter compatibilidade no Linux/CI com Python 3.11, este projeto usa pandas-ta-classic.

4) Instale e configure o MetaTrader 5

  • Instale o terminal MT5 no Windows
  • Faça login na sua corretora (DEMO primeiro)

🔐 Configuração (sem expor credenciais)

1) Crie os arquivos .local.json

Copie os arquivos sample e crie os arquivos locais (não versionados):

  • config/config_buy.local.json
  • config/hedge_state_buy.local.json
  • config/account_demo_buy.local.json

Os arquivos .local.json estão no .gitignore e não sobem para o GitHub.


▶️ Rodando o bot

Rodar BUY (DEMO)

python run.py

Saídas geradas (outputs):

  • Logs em logs/ (ex.: XAUUSD_BUY_manager_positions_hedge_YYYYMMDD.log)
  • Excel em results/ (ex.: demo_monitor_positions_XAUUSD_BUY_YYYY-MM-DD.xlsx)

Por padrão, o run.py executa o modo BUY.


🧪 Testes

pytest


📸 Demonstração (prints e evidências)

Evidências reais de execução do bot: prints, logs e exemplo de arquivo Excel gerado.

Execução em loop + logs (Spyder / console)

Execução no Spyder

Exemplo de Excel gerado

Exemplo de arquivo gerado (Excel)

O bot gera planilhas para auditoria/monitoramento em results/ (ex.: results/demo_monitor_positions_<SYMBOL>_<BUY|SELL>_<DATA>.xlsx).

Trecho real de log (exemplo)

13:24:05 [INFO] Sinal para trend é: UP, True == UP
13:24:05 [INFO] Posições: 1 (B: 1, S: 0) | Lucro Total: -0.42 | Equity: 1013.58 | Margem Livre: 97.53%
13:25:05 [INFO] Sinal para trend é: UP, True == UP
13:25:05 [INFO] Posições: 1 (B: 1, S: 0) | Lucro Total: 0.98 | Equity: 1014.98 | Margem Livre: 97.53%
13:25:05 [INFO] Salvando dados no arquivo Excel: results/demo_monitor_positions_XAUUSD_BUY_2026-02-13.xlsx
13:26:05 [INFO] Sinal para trend é: UP, True == UP
13:26:05 [INFO] Posições: 1 (B: 1, S: 0) | Lucro Total: 6.07 | Equity: 1020.07 | Margem Livre: 97.55%
13:27:05 [INFO] Sinal para trend é: UP, True == UP
13:27:05 [INFO] Posições: 0 (B: 0, S: 0) | Lucro Total: 0.00 | Equity: 1027.98 | Margem Livre: 100.00%
13:27:05 [INFO] Salvando dados no arquivo Excel: results/demo_monitor_positions_XAUUSD_BUY_2026-02-13.xlsx
13:28:05 [INFO] Sinal para trend é: UP, True == UP
13:28:05 [INFO] Posições: 0 (B: 0, S: 0) | Lucro Total: 0.00 | Equity: 1027.98 | Margem Livre: 100.00%

👤 Autor

Flavio Rodrigues
LinkedIn: https://www.linkedin.com/in/flaviorobertorodrigues/
GitHub: https://github.com/flavioro

About

Bot em Python para automação de operações no MetaTrader 5, com logs estruturados, validações, resiliência e export de dados para Excel/CSV usando Pandas.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published