Kaique Mitsuo Silva Yamamoto
Mercado financeiroAutomação de EstratégiasMetaTrader 5 / MQL5

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ópicoO que cobre
MQL5 — Fundamentos da LinguagemTipos, arrays, structs, OOP, tratamento de erros, debug
MQL5 — Event HandlersOnInit, OnTick, OnCalculate, OnTimer, OnTrade, OnChartEvent, OnTester
MQL5 — Indicadores TécnicosiMA, iRSI, iMACD, iBands, iATR, iADX, iStochastic, iSAR, iIchimoku e mais 30
MQL5 — Indicadores CustomizadosSetIndexBuffer, DRAW_LINE/HISTOGRAM/FILLING/CANDLES, buffers e plots
MQL5 — Gestão de Risco em CódigoPosition sizing, ATR stops, drawdown diário, break even
MQL5 — Ordens AvançadasTrailing stop, fechamento parcial, OCO, OnTradeTransaction
MQL5 — Análise Multi-TimeframeCopyRates/CopyBuffer em TFs externos, sincronização de barras
MQL5 — Otimização e RobustezWalk forward, sensibilidade, métricas, evitar overfitting
MQL5 — Integração ExternaWebRequest, 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

AspectoMetaTrader 4MetaTrader 5
LinguagemMQL4 (procedural, C)MQL5 (orientada a objetos, C++)
AtivosPrincipalmente ForexForex, ações, futuros, cripto
Timeframes921
Indicadores nativos3038
BacktestingSingle-thread, 1 ativoMulti-thread, multi-ativo, ticks reais
Gestão de posiçãoHedging apenasHedging + Netting
Profundidade de mercadoNãoSim (DOM)
MQL5 WizardNãoSim (gera EAs sem código)
Novas licençasEncerradasAtivo

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

TipoExecuta trades?Contínuo?Função principalLocalização
Expert Advisor (EA)SimSimOnTick()MQL5/Experts/
IndicadorNãoSimOnCalculate()MQL5/Indicators/
ScriptSimNão (executa 1x)OnStart()MQL5/Scripts/
BibliotecaN/AN/AChamada por outrosMQL5/Include/
ServiçoSimSimOnStart() (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_SUCCEEDED ou INIT_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:

FuncionalidadeDescrição
Syntax highlightingColoração para keywords, funções e strings
Auto-completeSugestões de funções e variáveis
Help (F1)Referência da linguagem integrada
Debugger (F5)Breakpoints e execução passo a passo
ProfilerTempo de execução por linha/função
MQL5 WizardGera 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 dados

Strategy Tester — backtesting

Como rodar um backtest

  1. Abra o Strategy Tester: View > Strategy Tester (Ctrl+R)
  2. Selecione seu EA
  3. Configure: símbolo, timeframe, período, depósito inicial
  4. Escolha o modo de modelagem
  5. Clique em Start

Modos de teste

ModoPrecisãoVelocidade
Every tick (ticks reais)MáximaLenta
Every tickAltaLenta
1 minute OHLCMédiaRápida
Open prices onlyBaixaMuito 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:

  1. File > New > Expert Advisor (generate)
  2. Selecione módulo de sinal (ex: cruzamento de MA, RSI)
  3. Selecione módulo de money management (lote fixo, % do saldo)
  4. Selecione módulo de trailing stop
  5. 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)

  1. Baixe o MetaTrader 5 (gratuito)
  2. Abra uma conta demo em qualquer corretora
  3. Abra o MetaEditor (F4)

Fase 2: Fundamentos (Semana 1-2)

  1. Estude os três handlers: OnInit(), OnTick(), OnDeinit()
  2. Aprenda input parameters, _Symbol, _Period, _Point
  3. Pratique com Print() e Comment() para debug

Fase 3: Primeiro EA (Semana 2-3)

  1. Use o MQL5 Wizard para gerar seu primeiro EA
  2. Teste no Strategy Tester (Ctrl+R)
  3. Estude o código gerado para entender a estrutura

Fase 4: Desenvolvimento (Semana 3-8)

  1. Aprenda a classe CTrade para enviar ordens
  2. Aprenda CopyBuffer() para ler indicadores
  3. Construa um EA de cruzamento de médias do zero
  4. Adicione Stop Loss, Take Profit e money management

Fase 5: Validação (Semana 8+)

  1. Backtest em múltiplos símbolos e timeframes
  2. Walk Forward testing para validar robustez
  3. Deploy em conta demo por 1-3 meses
  4. 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)

Artigos recomendados para iniciantes

Cursos (pagos)

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.

Fale com a RedBlock


Aviso Legal: Conteúdo educativo. Não constitui recomendação de investimento. Resultados passados em backtesting não garantem resultados futuros.

On this page