Como os Expert Advisors do MT5 São Calculados: Fórmula, Entradas e Necessidades de Dados
Resposta direta: o que “calculado” significa para um Expert Advisor do MT5
Um Expert Advisor (EA) do MT5 não é calculado por uma única fórmula matemática fixa e abrangente da plataforma. Em vez disso, o comportamento do EA é produzido pela execução do programa do EA (sua lógica de estratégia) passo a passo. Cada etapa calcula novas decisões (por exemplo, quando colocar ordens) a partir de:
- Dados de mercado disponíveis para o EA naquele momento (barras históricas e/ou ticks recebidos)
- Os parâmetros de entrada do EA (números que você configura)
- O estado interno do EA (variáveis que ele lembra entre execuções)
- As regras que você codificou para indicadores, lógica de risco e tratamento de ordens
Portanto, “Como os Expert Advisors do MT5 são calculados?” é melhor respondido como: o EA é calculado executando seu código sobre os dados recebidos, usando seus parâmetros e estado para gerar sinais e solicitações de ordens.
Mecânica: o pipeline de cálculo dentro de um EA
Pense em um EA como um loop repetido. O loop exato depende de como ele é programado, mas um modelo educacional típico se parece com isto:
- Aquisição de dados
- Barras históricas: dados no estilo OHLCV usados para calcular valores ao longo do tempo.
- Ticks: atualizações de preço em streaming usadas para lógica orientada a eventos.
- O EA pode processar um ou ambos, dependendo se foi escrito para reagir a novos ticks, novas barras, ou ambos.
- Cálculos estilo indicador (se usados) Se o EA usa indicadores, ele está calculando funções como médias móveis, osciladores estilo RSI, ou transformações personalizadas. Estas são operações matemáticas sobre a série de entrada (por exemplo, preços de fechamento das últimas N barras).
Uma forma geral é:
- Deixe o EA criar uma série temporal x(t) a partir dos dados de mercado (por exemplo, x(t)=preço de fechamento no tempo da barra t).
- Ele então calcula um valor de indicador I(t) usando alguma regra (por exemplo, uma média de janela, ou uma recorrência).
- Lógica de decisão O EA combina seus valores calculados e parâmetros em condições. Um padrão de exemplo genérico é:
- Se a condição C(parâmetros, I(t), estado_EA) for verdadeira → preparar uma ação.
- Caso contrário → não fazer nada ou atualizar o estado.
Aqui, estado_EA significa valores que o EA armazenou anteriormente (por exemplo, se ele já tem uma posição aberta, ou um contador rastreando eventos consecutivos).
- Dimensionamento de ordem e construção da solicitação Se o EA envia ordens, ele “calcula” o que solicitar usando entradas e restrições relacionadas à negociação. Isso comumente inclui:
- Lado da ordem (compra/venda)
- Volume (tamanho do lote), frequentemente derivado de parâmetros e/ou de uma regra de dimensionamento de risco
- Níveis de stop-loss / take-profit (se seu código os definir)
- Deslizamento permitido ou referências de preço (como você mapeia o “preço desejado” para a execução real)
É importante separar:
- Os cálculos internos do EA (matemática pura baseada em parâmetros e dados)
- O resultado do broker/execução (como as ordens são preenchidas em condições reais de mercado)
- Atualização de estado após a execução Após uma ordem ser aceita ou preenchida (ou rejeitada/parcialmente preenchida), o EA atualiza as variáveis internas. Esse estado então afeta cálculos posteriores.
Uma “fórmula” universal simples (conceitual, não específica do produto)
Como os EAs diferem, não há uma única equação numérica que sempre se aplique. Mas você pode usar uma fórmula conceitual que se ajusta a qualquer design de EA:
Saída_EA(t) = Lógica(parâmetros, Dados_mercado(t), Estado_EA(t))
Onde:
- Saída_EA(t) representa as decisões e solicitações que o EA produz no tempo t.
- Dados_mercado(t) é qualquer série de preços que o EA lê no tempo t.
- Estado_EA(t) é a memória atual do EA.
Se você quiser “verificar” como é calculado, você verifica o código do EA e mapeia cada variável para uma dessas entradas.
Evidência ou exemplo: rastreando um caminho de cálculo real (premissas declaradas)
Abaixo está um exemplo educacional que mostra como o cálculo de um EA pode ser rastreado. Este não é um EA específico; é um modelo.
Assuma:
- O EA executa a cada nova barra.
- Ele calcula uma média de janela dos últimos N fechamentos.
- Ele usa um limite K e armazena se atualmente tem uma posição aberta.
Etapas conceituais de exemplo no tempo da barra t:
- Construir x(t) = preço de fechamento em cada uma das últimas N barras.
- Calcular I(t) = média(x(t−N+1) … x(t)).
- Usar parâmetros (N, K) e estado (temPosicao) para calcular uma condição:
- C = (I(t) > K) E (temPosicao == falso)
- Se C for verdadeira:
- Solicitar uma ordem de compra com volume V derivado dos parâmetros.
- Opcionalmente, calcular níveis de stop-loss/take-profit a partir de outras distâncias de parâmetros.
- Após a ordem ser preenchida, definir temPosicao = verdadeiro.
A ideia-chave de verificação: você pode reproduzir os mesmos números intermediários (como a média I(t)) a partir do mesmo histórico de barras e, em seguida, verificar se as condições do seu código avaliariam as mesmas ações.
Limitações e riscos: por que os resultados diferem das expectativas
Mesmo com cálculos cuidadosos, os resultados podem divergir porque as condições de mercado e de execução afetam o que realmente acontece.
Limitação material 1: “cálculo” vs execução
O EA pode calcular uma ação pretendida, mas a camada do broker/execução determina o preenchimento real. Isso introduz incertezas como:
- Diferenças de spread entre quando o EA calcula e quando envia
- Deslizamento (diferença entre o preço solicitado e o preço preenchido)
- Comportamento de preenchimento de ordens (preenchimentos completos vs parciais)
Portanto, “o que o EA calculou” nem sempre é “o que você obteve”.
Limitação material 2: eventos de dados ausentes ou atrasados
Se o EA espera atualizações orientadas por ticks, mas o fluxo de ticks é interrompido, ele pode:
- Pular avaliações
- Usar preços desatualizados
- Acionar lógica atrasada
Este é um modo de falha criado pela incompatibilidade entre as suposições do seu código e o tempo dos eventos do ambiente.
Limitação material 3: problemas de parametrização e janela de dados
Configurações erradas ou inconsistentes podem quebrar a cadeia de cálculo. Exemplos incluem:
- Usar um N maior do que as barras históricas disponíveis (valores de indicadores podem ser indefinidos ou instáveis no início)
- Incompatibilidade de período de tempo (o EA espera uma série de barras, mas lê outra)
- Condições excessivamente estritas que raramente se tornam verdadeiras, fazendo o EA parecer “inativo”
Limitação material 4: bugs de lógica interna e de estado
Como os EAs dependem do estado interno, erros de codificação podem causar decisões incorretas, como:
- Estado não sendo redefinido no fechamento da posição
- Envio de ordens em duplicidade devido à falta de proteções
- Tratamento de preenchimentos parciais não refletido nas atualizações de estado
Estes são problemas de nível de cálculo, não de nível de mercado.
Como verificar o cálculo de forma independente
Para verificar como um EA do MT5 é “calculado”, você pode usar um método repetível:
-
Identifique as fontes de dados de entrada Verifique se o EA usa ticks, novas barras, ou ambos, e quais símbolos/períodos de tempo ele lê.
-
Liste os parâmetros Anote cada parâmetro de entrada e onde ele influencia os cálculos (janelas de indicadores, limites, dimensionamento, distâncias de stop).