MetaTrader 5 — MQL5, Expert Advisors e Automação
Hub completo de automação no MetaTrader 5: fundamentos MQL5, gestão de risco em código, ordens avançadas, análise multi-timeframe, otimização e integração com Python/ONNX.
O MetaTrader 5 é a plataforma de trading mais utilizada no mundo, desenvolvida pela MetaQuotes. Com a linguagem MQL5 (orientada a objetos, derivada de C++), é possível criar Expert Advisors completos, indicadores personalizados, scripts e serviços — com backtesting multi-ativo, otimização genética e suporte a machine learning via ONNX.
Guias aprofundados
| Tópico | O que cobre |
|---|---|
| MQL5 — Fundamentos da Linguagem | Tipos, arrays, structs, OOP, tratamento de erros, debug |
| MQL5 — Event Handlers | OnInit, OnTick, OnCalculate, OnTimer, OnTrade, OnChartEvent, OnTester |
| MQL5 — Indicadores Técnicos | iMA, iRSI, iMACD, iBands, iATR, iADX, iStochastic, iSAR, iIchimoku e mais 30 |
| MQL5 — Indicadores Customizados | SetIndexBuffer, DRAW_LINE/HISTOGRAM/FILLING/CANDLES, buffers e plots |
| MQL5 — Gestão de Risco em Código | Position sizing, ATR stops, drawdown diário, break even |
| MQL5 — Ordens Avançadas | Trailing stop, fechamento parcial, OCO, OnTradeTransaction |
| MQL5 — Análise Multi-Timeframe | CopyRates/CopyBuffer em TFs externos, sincronização de barras |
| MQL5 — Otimização e Robustez | Walk forward, sensibilidade, métricas, evitar overfitting |
| MQL5 — Integração Externa | WebRequest, Python, ONNX, SQLite, OnTimer, OnChartEvent |
O MetaTrader é desenvolvido pela MetaQuotes. O MT5 é a versão atual e recomendada, com suporte a ações, futuros, forex e cripto.
MetaTrader 4 vs MetaTrader 5
| Aspecto | MetaTrader 4 | MetaTrader 5 |
|---|---|---|
| Linguagem | MQL4 (procedural, C) | MQL5 (orientada a objetos, C++) |
| Ativos | Principalmente Forex | Forex, ações, futuros, cripto |
| Timeframes | 9 | 21 |
| Indicadores nativos | 30 | 38 |
| Backtesting | Single-thread, 1 ativo | Multi-thread, multi-ativo, ticks reais |
| Gestão de posição | Hedging apenas | Hedging + Netting |
| Profundidade de mercado | Não | Sim (DOM) |
| MQL5 Wizard | Não | Sim (gera EAs sem código) |
| Novas licenças | Encerradas | Ativo |
Recomendação: foque no MT5. O MT4 não aceita mais novas licenças de corretoras e o MQL5 é superior em todos os aspectos técnicos.
MQL5 — a linguagem
MQL5 é baseada em C++ com classes, herança, polimorfismo e acesso total ao .NET Framework. O código é compilado para código nativo, garantindo alta performance.
Tipos de programa no MetaTrader
| Tipo | Executa trades? | Contínuo? | Função principal | Localização |
|---|---|---|---|---|
| Expert Advisor (EA) | Sim | Sim | OnTick() | MQL5/Experts/ |
| Indicador | Não | Sim | OnCalculate() | MQL5/Indicators/ |
| Script | Sim | Não (executa 1x) | OnStart() | MQL5/Scripts/ |
| Biblioteca | N/A | N/A | Chamada por outros | MQL5/Include/ |
| Serviço | Sim | Sim | OnStart() (loop) | MQL5/Services/ |
Criando um Expert Advisor (EA)
Estrutura de um EA
Todo EA possui três handlers principais:
OnInit() — inicialização (executa 1x ao carregar):
- Cria handles de indicadores (
iMA(),iRSI()) - Valida parâmetros de entrada
- Retorna
INIT_SUCCEEDEDouINIT_FAILED
OnTick() — lógica principal (executa a cada tick):
- Verifica condições de trading
- Executa ordens de compra/venda
- Gerencia posições abertas
OnDeinit() — limpeza (executa ao remover):
- Libera handles com
IndicatorRelease() - Remove objetos gráficos
Exemplo: EA de cruzamento de médias
#include <Trade/Trade.mqh>
input int FastPeriod = 10;
input int SlowPeriod = 20;
input double LotSize = 0.1;
input int StopLoss = 50;
int fastMA, slowMA;
CTrade trade;
int OnInit()
{
fastMA = iMA(_Symbol, PERIOD_CURRENT, FastPeriod, 0, MODE_SMA, PRICE_CLOSE);
slowMA = iMA(_Symbol, PERIOD_CURRENT, SlowPeriod, 0, MODE_SMA, PRICE_CLOSE);
if(fastMA == INVALID_HANDLE || slowMA == INVALID_HANDLE)
{
Print("Falha ao criar indicadores");
return(INIT_FAILED);
}
return(INIT_SUCCEEDED);
}
void OnTick()
{
double fast[], slow[];
CopyBuffer(fastMA, 0, 0, 3, fast);
CopyBuffer(slowMA, 0, 0, 3, slow);
// Cruzamento para cima
if(fast[2] > slow[2] && fast[1] <= slow[1] && PositionsTotal() == 0)
{
double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
trade.Buy(LotSize, _Symbol, ask,
ask - StopLoss * _Point, 0, "MA Cross Buy");
}
// Cruzamento para baixo
if(fast[2] < slow[2] && fast[1] >= slow[1] && PositionsTotal() == 0)
{
double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
trade.Sell(LotSize, _Symbol, bid,
bid + StopLoss * _Point, 0, "MA Cross Sell");
}
}
void OnDeinit(const int reason)
{
IndicatorRelease(fastMA);
IndicatorRelease(slowMA);
}Classe CTrade — funções de trading
#include <Trade/Trade.mqh>
CTrade trade;
// Compra a mercado
trade.Buy(0.1, _Symbol, Ask, stopLoss, takeProfit, "comentário");
// Venda a mercado
trade.Sell(0.1, _Symbol, Bid, stopLoss, takeProfit, "comentário");
// Ordens pendentes
trade.BuyLimit(0.1, precoLimite, _Symbol);
trade.SellLimit(0.1, precoLimite, _Symbol);
trade.BuyStop(0.1, precoStop, _Symbol);
trade.SellStop(0.1, precoStop, _Symbol);Criando indicadores personalizados
Indicadores analisam preços e exibem informações visuais, mas não executam ordens.
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 1
#property indicator_color1 clrDodgerBlue
double Buffer[];
int OnInit()
{
SetIndexBuffer(0, Buffer, INDICATOR_DATA);
PlotIndexSetString(0, PLOT_LABEL, "Meu Indicador");
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
for(int i = prev_calculated; i < rates_total; i++)
{
Buffer[i] = (high[i] + low[i]) / 2.0; // Ponto médio
}
return(rates_total);
}Usando indicadores customizados em EAs
// Via iCustom (parâmetros fixos em tempo de compilação)
int handle = iCustom(_Symbol, PERIOD_H1, "MeuIndicador", param1, param2);
double buffer[];
CopyBuffer(handle, 0, 0, 3, buffer);MetaEditor — a IDE
O MetaEditor é a IDE integrada para desenvolvimento MQL5:
| Funcionalidade | Descrição |
|---|---|
| Syntax highlighting | Coloração para keywords, funções e strings |
| Auto-complete | Sugestões de funções e variáveis |
| Help (F1) | Referência da linguagem integrada |
| Debugger (F5) | Breakpoints e execução passo a passo |
| Profiler | Tempo de execução por linha/função |
| MQL5 Wizard | Gera EAs sem programação |
| Compilador (F7) | Compila e mostra erros |
Organização de arquivos
MQL5/
Experts/ → Expert Advisors (.mq5)
Indicators/ → Indicadores (.mq5)
Scripts/ → Scripts (.mq5)
Include/ → Headers/bibliotecas (.mqh)
Libraries/ → Bibliotecas compiladas (.ex5)
Files/ → Arquivos de dadosStrategy Tester — backtesting
Como rodar um backtest
- Abra o Strategy Tester: View > Strategy Tester (Ctrl+R)
- Selecione seu EA
- Configure: símbolo, timeframe, período, depósito inicial
- Escolha o modo de modelagem
- Clique em Start
Modos de teste
| Modo | Precisão | Velocidade |
|---|---|---|
| Every tick (ticks reais) | Máxima | Lenta |
| Every tick | Alta | Lenta |
| 1 minute OHLC | Média | Rápida |
| Open prices only | Baixa | Muito rápida |
Otimização
- Exaustiva: testa toda combinação (lenta, precisa)
- Algoritmo genético: otimização evolutiva (rápida, recomendada para muitos parâmetros)
- Walk Forward: divide o período em segmentos, otimiza em um e valida no próximo — previne overfitting
Métricas importantes
- Profit Factor: lucro bruto / perda bruta (ideal > 1.5)
- Sharpe Ratio: retorno ajustado ao risco
- Drawdown máximo: maior queda pico-a-vale
- Recovery Factor: lucro líquido / drawdown máximo
- Total de trades: mínimo 100+ para significância estatística
MQL5 Wizard — criação sem código
Para quem não programa, o MQL5 Wizard gera EAs automaticamente:
- File > New > Expert Advisor (generate)
- Selecione módulo de sinal (ex: cruzamento de MA, RSI)
- Selecione módulo de money management (lote fixo, % do saldo)
- Selecione módulo de trailing stop
- O wizard gera código completo e compilável
Comunidade e marketplace
MQL5.com
O maior ecossistema de trading automatizado do mundo:
- Market: compre/venda EAs, indicadores e scripts
- CodeBase: maior biblioteca gratuita de código MQL com fonte aberto
- Fórum: programadores ajudam uns aos outros
- Artigos: centenas de artigos técnicos publicados mensalmente
- Freelance: contrate desenvolvedores MQL5 ou ofereça seus serviços
- Signals: copy trading com providers e subscribers
- VPS: hospedagem 24/7 para EAs direto do MetaTrader
- Cloud Network: computação distribuída para otimização mais rápida
Guia passo a passo para iniciantes
Fase 1: Setup (Dia 1)
- Baixe o MetaTrader 5 (gratuito)
- Abra uma conta demo em qualquer corretora
- Abra o MetaEditor (F4)
Fase 2: Fundamentos (Semana 1-2)
- Estude os três handlers:
OnInit(),OnTick(),OnDeinit() - Aprenda
inputparameters,_Symbol,_Period,_Point - Pratique com
Print()eComment()para debug
Fase 3: Primeiro EA (Semana 2-3)
- Use o MQL5 Wizard para gerar seu primeiro EA
- Teste no Strategy Tester (Ctrl+R)
- Estude o código gerado para entender a estrutura
Fase 4: Desenvolvimento (Semana 3-8)
- Aprenda a classe
CTradepara enviar ordens - Aprenda
CopyBuffer()para ler indicadores - Construa um EA de cruzamento de médias do zero
- Adicione Stop Loss, Take Profit e money management
Fase 5: Validação (Semana 8+)
- Backtest em múltiplos símbolos e timeframes
- Walk Forward testing para validar robustez
- Deploy em conta demo por 1-3 meses
- Só então considere trading real com valores pequenos
Estratégias mais populares
Trend Following
- Cruzamento de médias móveis (SMA, EMA)
- MACD signal line cross
- Bollinger Band breakout
Mean Reversion
- RSI sobrecomprado/sobrevendido
- Bollinger Band bounce
- Stochastic Oscillator
Breakout
- Range breakout (consolidação)
- London/New York Open breakout
- Donchian Channel
Scalping
- Trades de segundos a minutos
- Alta frequência com pequenos movimentos
- Requer VPS para baixa latência
Avançado
- Arbitragem estatística (pairs trading)
- Neural Networks via ONNX (suportado em MQL5)
- Portfolios multi-ativo
Fontes de aprendizado
Documentação oficial (gratuita)
- MQL5 Reference — referência completa da linguagem
- MQL5 Book — "MQL5 Programming for Traders"
- MQL5 Articles — centenas de artigos técnicos
- MQL5 CodeBase — código fonte gratuito
- MQL5 Forum — comunidade Q&A
Artigos recomendados para iniciantes
- Quick Start: Short Guide for Beginners
- Step-By-Step Guide to Writing an EA
- Create Your Own Trading Robot in 6 Steps
- Custom Indicators: Step-by-Step Guide
- Beginner's Guide Using AI-Generated Code
Cursos (pagos)
- Expert Advisor Programming in MQL5 — Udemy (inglês)
- Crie seu Primeiro Robô com MQL5 — Udemy (português)
- Programe Seu Robô — curso completo MQL5 (português)
- Delta Trader — curso MQL5 (português)
Precisa de desenvolvimento profissional?
Se você precisa de Expert Advisors customizados, indicadores avançados ou integração de sistemas para MetaTrader, a RedBlock é especialista em engenharia de software para o mercado financeiro — desenvolvimento sob medida de algoritmos e automação de trading.
Aviso Legal: Conteúdo educativo. Não constitui recomendação de investimento. Resultados passados em backtesting não garantem resultados futuros.
NTSL — Block Builder: Estratégias sem Código
Como usar o Block Builder do Profit Nelogica para criar estratégias de indicadores, coloração, execução e screening de forma visual, sem escrever código NTSL.
MQL5 — Fundamentos da Linguagem
Tipos de dados, OOP, structs, arrays, strings e padrões fundamentais de programação em MQL5 para criar EAs e indicadores robustos.