Programadores de MQL5 costumam passar horas ajustando indicadores, testando estratégias e, quando finalmente chegam a um resultado relevante, ainda precisam exportar os números para um relatório legível. A dificuldade prática está em transformar dados brutos – ticks, equity curve e métricas de performance – em um PDF pronto para ser enviado a investidores ou gerentes, sem abrir mão da precisão nem de um layout apresentável.
Por que automatizar o PDF?
Um relatório automático elimina a etapa manual de copiar‑colar, reduz erros de digitação e garante consistência nas versões enviadas. O objetivo é gerar, a cada final de sessão ou a cada novo trade, um documento que contenha:
- Resumo de métricas (drawdown, lucro líquido, Sharpe).
- Gráficos de equity e distribuição de ganhos/perdas.
- Log de trades com timestamps.
Em ambientes reais – por exemplo, um gestor de fundos que monitora múltiplas contas simultaneamente – a falta desse fluxo pode atrasar decisões críticas.
Estrutura básica do script
O núcleo do processo gira em torno de três componentes:
| Componente | Função |
|---|---|
| Coleta de dados | Usa HistorySelect e OrderSelect para extrair trades. |
| Formatação | Construção de strings HTML que servirão de base para o PDF. |
| Exportação | Chamada à biblioteca PDFCreator (ou ExportToPDF nativo) para renderizar o arquivo. |
Passo a passo prático
1. Captura dos trades
mql5 int total=HistoryDealsTotal(); for(int i=0;i Esse loop garante que você não perca nenhum negócio, mesmo em períodos de alta volatilidade. 2. Montagem do HTML Em vez de criar o PDF linha a linha, gere um HTML simples. O motor de PDF aceita CSS básico, então você pode alinhar colunas com 3. Geração do PDF Utilize a função mql5 bool ok=ExportToPDF(“report.html”,”Relatorio_”+TimeToString(TimeCurrent())+”.pdf”); Se a chamada falhar, verifique permissões de escrita e espaço em disco – falhas silenciosas são comuns quando o terminal roda em modo protegido. Ao colocar a geração de PDF dentro de um Expert Advisor ou script de utilitário, você transforma um processo tedioso em um clique – ou em um timer – e libera tempo para focar na estratégia, não na burocracia. Instale o MetaEditor e abra o diretório Files do seu terminal. Crie a pasta Defina as variáveis globais que controlam a frequência de geração: Utilize o objeto Armazene cada linha em um Insira a chamada dentro de Erro 1: “File not found” – ocorre quando a pasta Erro 2: Dados incompletos – ao usar Erro 3: Fonte não reconhecida – a biblioteca requer fontes TrueType instaladas no sistema. Verifique Adicione ao final do script um pequeno painel no MetaTrader para monitorar a geração: Atualize as células Com esse roadmap, você transforma a coleta de dados em PDFs prontos para auditoria, back‑testing ou entrega ao cliente, mantendo o processo totalmente dentro do ecossistema MQL5. Se você vive de análise técnica e precisa enviar relatórios diários a gestores, clientes ou parceiros, este curso de geração automática de PDFs com MQL5 pode ser a ferramenta que falta no seu arsenal. Não é para quem busca apenas códigos “prontos‑para‑colar”; exige familiaridade com a linguagem MQL5 e com o conceito de objetos gráficos no MetaTrader 5. O gerador funciona apenas no MetaTrader 5; não há suporte para MT4 ou outras plataformas. A qualidade visual dos PDFs depende das fontes instaladas no cliente, e gráficos 3D ainda são incompatíveis. Além disso, a automação exige que o terminal esteja aberto ou que o script seja executado via Scheduler, o que pode colidir com políticas de segurança corporativas. O material entrega exatamente o que promete: geração automática, formatação customizável e exemplos práticos. Contudo, não cobre integração com serviços de nuvem ou assinatura digital – recursos que alguns usuários corporativos demandam. Pedro, gestor de portfólio, programou um EA que ao fechar a sessão salva um PDF com performance de 10 pares de moedas. Ele economiza 3 h por semana, elimina erros de cópia‑cola e mantém o cliente satisfeito. Já Ana, analista júnior, tentou usar o curso sem entender bem os objetos gráficos e acabou com relatórios vazios; para ela, a curva de aprendizado supera o ganho imediato. Teste o script em uma conta demo antes de implantar no live. Ajuste margens e fontes para garantir legibilidade em impressoras A4. Se precisar de assinatura digital, complemente com um software externo. Pronto para colocar a teoria em prática? Acesse o curso agoratable e inserir imagens de gráficos exportados via ChartScreenShot.ExportToPDF já incluída nas versões recentes do MetaEditor:Limitações e armadilhas
EventSetTimer.FAQ rápido
ChartScreenShot e insira o caminho no HTML.1. Configuração inicial do ambiente MQL5
Reports – ela será o destino padrão dos PDFs. No código, inclua a biblioteca #include (disponível no Marketplace).int ReportInterval = PERIOD_D1; – intervalo diário.datetime LastReport = 0; – marca‑tempo do último PDF.2. Módulo de coleta de dados
CandleSeries para capturar OHLC, volume e indicadores personalizados. Exemplo de snippet:Código Descrição SeriesCreate(_Symbol,ReportInterval); double ma = iMA(_Symbol,ReportInterval,20,0,MODE_SMA,PRICE_CLOSE,0);
Gera a média móvel de 20 períodos para o timeframe escolhido. Struct ReportRow e empilhe em um ArrayObj. Essa estrutura facilita a iteração posterior durante a renderização do PDF.3. Rotina recomendada de geração automática
OnTick() ou OnTimer() (recomendado para evitar sobrecarga). O fluxo básico:TimeCurrent() - LastReport >= PeriodSeconds(ReportInterval).PDFCreator pdf; e definir propriedades (margens, fonte, cabeçalho).ArrayObj e escrever linhas com pdf.AddRow().Reports/Report_YYYYMMDD.pdf e atualizar LastReport.4. Checklist operacional (para garantir que o relatório não falhe)
PDFCreator.mqh no Marketplace.Reports deve ter acesso total ao usuário do terminal.try/catch que envia um alerta por e‑mail caso a geração falhe.5. Erros comuns e como evitá‑los
Reports não foi criada antes da primeira execução. Solução: inclua FileIsExist() e, se falso, FileCreateDirectory().OnTick(), o último candle pode ainda não estar fechado. Use OnTimer() com delay de 1 minuto após o fechamento.pdf.SetFont("Arial",12) ou substitua por Helvetica.6. Aceleração de resultados – mini‑dashboard de progresso
Indicador Valor Último PDF Arquivos gerados hoje 0 Erros 0 #count e #errors dentro do bloco de geração. Isso oferece feedback imediato e reduz a chance de abandono do workflow.7. FAQ rápido
SymbolsTotal() e chame a rotina para cada símbolo.ChartScreenShot() e anexe via pdf.AddImage().SendMail() após pdf.Save(), passando o caminho completo do arquivo.Perfil ideal e limitações práticas
Quem deve usar
Quem provavelmente não terá bom aproveitamento
Limitações contextuais
FAQ contextual
Pergunta Resposta Posso usar o mesmo script em contas demo? Sim, mas lembre‑se de que os caminhos de arquivo podem mudar entre ambientes. Os PDFs são editáveis? Não. São imagens estáticas; para edição posterior é preciso gerar novo relatório. O código roda em background? Somente se o Expert Advisor estiver ativo; não há daemon embutido. Checklist rápido antes de comprar
Parecer editorial equilibrado
Mini cenários reais
Observações práticas e próximos passos

