Deploy¶
Guia passo-a-passo para atualizar cada componente em produção.
1. EA (MQL5)¶
Toda mudança em ea/ML_Sensorial_Scanner.mq5 na mesma resposta exige:
1.1 Bump da versão (3 lugares)¶
//| v2.27 — único EA... // cabeçalho linha ~3
#property version "2.27" // linha ~18
#define EA_VERSION "2.27" // linha ~91
Os três têm que bater.
1.2 Compilar¶
& "C:\Program Files\MetaTrader 5 - Demonstração\metaeditor64.exe" `
/compile:"C:\Users\henri\Documents\PROJETOS\ML-Forex\ea\ML_Sensorial_Scanner.mq5" /log
Conferir log:
Get-Content "C:\Users\henri\Documents\PROJETOS\ML-Forex\ea\ML_Sensorial_Scanner.log" `
| Select-String -Pattern "errors|warnings|Result"
Exigência: 0 errors, 0 warnings. Se warning vir, corrige antes de publicar.
1.3 Publicar local¶
Copy-Item "C:\Users\henri\Documents\PROJETOS\ML-Forex\ea\ML_Sensorial_Scanner.ex5" `
"C:\Users\henri\Documents\PROJETOS\ML-Forex\app\api\static\downloads\ML_Sensorial_Scanner.ex5" -Force
1.4 Publicar VPS¶
scp -i ~/.ssh/id_ed25519 \
"C:\Users\henri\Documents\PROJETOS\ML-Forex\ea\ML_Sensorial_Scanner.ex5" \
henrique@10.8.0.1:/tmp/ML_Sensorial_Scanner.ex5
ssh -i ~/.ssh/id_ed25519 henrique@10.8.0.1 \
"sudo docker cp /tmp/ML_Sensorial_Scanner.ex5 forex_api:/app/api/static/downloads/"
1.5 Notificar assinantes (se mudança comportamental)¶
🆕 Nova versão do EA disponível: v2.27
Mudanças:
- ...
- ...
Para atualizar:
1. Baixar em https://quantfx.com.br/minha-conta
2. Substituir .ex5 em MQL5/Experts/
3. Reabrir o MT5
A versão antiga continua funcionando, mas perde melhorias.
2. API Python¶
docker compose restart api NÃO carrega novo código — o Dockerfile.api usa COPY, não volume mount.
2.1 Local (dev)¶
2.2 VPS (produção)¶
Atualmente é local-first: você desenvolve no PC, testa, depois sobe pra VPS via git pull.
ssh henrique@10.8.0.1
cd /opt/quantfx
sudo git pull origin main
sudo docker compose -f docker-compose.vps.yml up -d --build api
Tempo total: ~2-3 min (build + restart).
Smoke test pós-deploy:
2.3 Rollback¶
ssh henrique@10.8.0.1
cd /opt/quantfx
sudo git log --oneline -10
sudo git checkout <commit_anterior>
sudo docker compose -f docker-compose.vps.yml up -d --build api
3. Worker¶
Mesmo princípio: mudou scripts/run_worker.py ou app/models/*?
cd C:\Users\henri\Documents\PROJETOS\ML-Forex
docker compose up -d --build worker
docker logs forex_worker --tail 30 --follow
Conferir que está fazendo as predições novas (procurar por [predict] e timestamp recente).
4. Modelos novos (.pkl + .meta.json)¶
# Sync arquivos novos pra VPS (.pkl ficam em volume host)
scp -i ~/.ssh/id_ed25519 \
"C:\Users\henri\Documents\PROJETOS\ML-Forex\models\lgbm_*_v*.pkl" \
henrique@10.8.0.1:/tmp/
scp -i ~/.ssh/id_ed25519 \
"C:\Users\henri\Documents\PROJETOS\ML-Forex\models\lgbm_*_v*.meta.json" \
henrique@10.8.0.1:/tmp/
ssh -i ~/.ssh/id_ed25519 henrique@10.8.0.1 \
"sudo cp /tmp/lgbm_*.pkl /tmp/lgbm_*.meta.json /opt/quantfx/models/"
# Restart API para forçar re-read dos meta.json
ssh -i ~/.ssh/id_ed25519 henrique@10.8.0.1 \
"cd /opt/quantfx && sudo docker compose -f docker-compose.vps.yml restart api"
Validação:
5. Config (model.yaml)¶
Mudou quality gates? Re-screening obrigatório:
cd C:\Users\henri\Documents\PROJETOS\ML-Forex
.venv\Scripts\python.exe scripts\rescreen_champions.py --dry-run
# Verifica quantos modelos seriam demotidos. Se OK:
.venv\Scripts\python.exe scripts\rescreen_champions.py --apply
Sync meta.json demotidos pra VPS (mesmo procedimento da seção 4).
Checklist de deploy¶
Antes de aceitar PR pra main:
- EA bumped 3 lugares + compilado 0 warnings + copiado pra static/downloads
- API: testes locais passam
- Worker: log mostra predições funcionando após rebuild
- Smoke test produção:
curl /api/healthretornaok -
/api/account/meautenticado retorna dados corretos -
/api/scanretorna sinais (não vazio) - Telegram canal recebe próximo confluência sem erro
- MATURITY_ANALYSIS.md atualizado se feature ou métrica mudou