Cursos Para Traders Estratégias Trader Guia Definitivo: ENUM_SYMBOL_SWAP_MODE no MQL5

Guia Definitivo: ENUM_SYMBOL_SWAP_MODE no MQL5

Quem opera com robôs no MetaTrader 5 sabe que o diabo mora nos detalhes da especificação do contrato. O ENUM_SYMBOL_SWAP_MODE não é apenas uma enumeração decorativa na documentação; ele dita exatamente como o custo de carregar uma posição overnight vai sangrar (ou creditar) sua conta. O problema real não é ler a definição, é mapear o modo de cálculo para a realidade do seu ativo — porque um CFD de índice não se comporta como um par de Forex, e um futuro de boi gordo na B3 tem regras próprias que o terminal às vezes ignora se você não validar o modo ativo.

Na rotina de validação de um Expert Advisor, o erro clássico é assumir que SYMBOL_SWAP_MODE_POINTS cobre tudo. Não cobre. Se o broker usa SYMBOL_SWAP_MODE_CURRENCY_SYMBOL para um par exótico, seu cálculo de risco em pontos fica inútil. Já vi estratégias de carry trade quebrarem porque o EA lia o swap em pontos, mas o servidor cobrava em moeda base, gerando uma discrepância brutal no final do mês. A enumeração te diz o que ler (SymbolInfoDouble com SYMBOL_SWAP_LONG/SHORT), mas não te diz como converter isso para o seu dinheiro sem olhar o SYMBOL_TRADE_CALC_MODE junto. É um casal indissociável.

⚙️ Onde a enumeração resolve vs. Onde ela te deixa na mão

Cenário Ideal de Aplicação Validação automatizada de custos em portfólios multiativos (Forex + Metais + Índices). O EA lê o modo, aplica a fórmula correta (pontos, moeda base, moeda margem, juros %) e normaliza tudo para a moeda da conta antes de abrir a ordem. Essencial para risk management dinâmico em contas hedging.
Gargalo ou Limite Operacional Brokers que mascaram o modo real ou usam modos híbridos/proprietários não documentados (comum em cripto e CFDs sintéticos). A enumeração retorna um valor, mas a execução real no servidor segue outra lógica. Também falha em ativos com swap triplo (quarta-feira) se o EA não tratar a rolagem de 3 dias como evento separado do modo de cálculo padrão.
Para conferir os detalhes técnicos da aplicação, consulte o documentação oficial da enumeração MQL5.

A lição prática: nunca confie cegamente no retorno de SymbolInfoInteger(_Symbol, SYMBOL_SWAP_MODE) sem um log de auditoria comparando o swap previsto pelo seu código com o swap efetivamente debitado no histórico da conta (DEAL_SWAP). A enumeração é a bússola, mas o extrato é o território. Se divergirem, o modo anunciado pelo broker é mentira — e isso acontece mais do que a documentação admite.

Muitos desenvolvedores MQL5 descobrem da pior forma que o swap não é uma taxa única: é um camaleão. Você testa o EA em conta demo, tudo lindo, coloca na real e a margem derrete na virada de quarta para quinta. O culpado costuma ser um `ENUM_SYMBOL_SWAP_MODE` ignorado nas propriedades do ativo. A documentação lista os modos, mas não explica a dor de cabeça de cada um na prática. Entender essa enumeração separa quem apenas “roda robô” de quem gerencia risco de verdade. Se você já acordou com stop out inexplicável, sabe do que estou falando. Acesse a documentação oficial da MetaQuotes para cruzar os dados enquanto lê esta análise.

Domine o Custo Oculto: Swap Real vs. Teórico

Pare de adivinhar o custo de carregamento. Veja como mapear o modo exato do seu broker e blindar sua margem.

Ver Documentação Oficial e Exemplos

O choque de realidade: Swap não é “juros overnight”

A primeira vez que imprimi `SymbolInfoInteger(_Symbol, SYMBOL_SWAP_MODE)` no log, o retorno foi 1 (SYMBOL_SWAP_MODE_POINTS). Parecia simples. Multipliquei pelo `SwapLong` e achei que tinha o custo em pontos. Errado. O valor bruto do contrato (Contract Size) e o Tick Value entraram na dança. O resultado final em moeda da conta divergiu da aba “Trade” do terminal. Foi aí que caiu a ficha: a enumeração dita a fórmula matemática, não apenas a unidade. Ignorar isso é voar cego.

No fórum MQL5, um tópico clássico resume o sentimento: “Passei meses achando que meu EA era lucrativo até contabilizar o swap corretamente no backtest real. O modo POINTS engana se você não normaliza pelo Point() do símbolo vs Point() da moeda base.” Isso não é detalhe. É a diferença entre curva de capital crescente e drawdown silencioso.

Decodificando a enumeração: A tabela que faltava no manual

Existem 5 modos principais (mais os descontinuados). Cada um exige uma implementação distinta no `OnTick` ou no cálculo de risco pré-trade. Não dá para fazer `switch` genérico sem tratar a matemática de cada case.

Enum Value (Int)ConstanteUnidade BaseFórmula Resumida (Long)Armadilha Comum
0SYMBOL_SWAP_MODE_DISABLEDN/ASwap = 0Contas Islâmicas. Verifique se há comissão oculta (commission).
1SYMBOL_SWAP_MODE_POINTSPontos do SímboloSwapLong * Lots * ContractSize * Point()Point() != TickSize. Forex costuma ser 0.00001, índices 0.1.
Implementação Prática e Execução Progressiva

O enum `ENUM_SYMBOL_SWAP_MODE` não é configuração. É diagnóstico. Você não “define” o modo; você lê o que o broker impôs. A maioria dos EAs falha aqui: assume `SYMBOL_SWAP_MODE_POINTS` (valor 0) e calcula prejuízo fantasma em ouro, índices ou cripto. O terminal mente se você não cruzar `SymbolInfoInteger` com a realidade do contrato.

Primeiro passo: pare de chutar. Chame `SymbolInfoInteger(_Symbol, SYMBOL_SWAP_MODE)` no `OnInit`. Guarde num `input` ou variável global. Faça um `switch` cobrindo os seis valores possíveis (0 a 5). Cada case exige fórmula distinta. Pontos? Multiplica pelo `Point`. Moeda base? Divide pela cotação atual. Juros? Precisa da taxa anual e dias do ano (360 ou 365). Errou a fórmula? Seu backtest vira ficção científica.

O modo `SYMBOL_SWAP_MODE_RECALCULATE` (futuros) ignora `SYMBOL_SWAP_LONG/SHORT`. O swap vem do ajuste diário da bolsa. Não tem variável MQL5 para isso. Você precisa do feed de dados da corretora ou simular via `iClose` do diário.

Segundo passo: valide na mão. Abra o Market Watch. Clique em Especificação. Olhe “Swap Long” e “Swap Short”. Anote. Rode um script que printa o cálculo do seu `switch` para 1 lote. Os números batem? Se não baterem, seu `switch` está errado ou o broker esconde taxa de conversão de moeda de margem. Comum em contas EUR/USD com símbolos denominados em USD.

Cronograma de Domínio do Cálculo de Swap

Fase 1 Validação do ENUM_SYMBOL_SWAP_MODE via SymbolInfoInteger contra a especificação do contrato do broker.
Fase 2 Mapeamento da lógica matemática (Pontos, Moeda Base, Juros) e implementação do switch case robusto.
Fase 3 Automação do cálculo projetado (carry trade, hedge cost) com ajuste dinâmico de triple swap semanal.

Terceiro passo: o calendário. O enum não te diz que quarta-feira é triple swap no Forex (liquidação T+2). Nem que sexta-feira triplica em cripto ou energias (T+1). Você hardcoda a regra de negócio: `DayOfWeek() == 3 || DayOfWeek() == 5` multiplica por 3. Mas cuidado: feriados mudam a data de valor. O terminal lida com isso no `SymbolInfoDouble(…, SYMBOL_SWAP_LONG)`. Seu código manual? Provavelmente não.

ALERTA DE CONFIGURAÇÃO

O Modo “Points” Não É Universal

A maioria dos brokers Forex usa SYMBOL_SWAP_MODE_POINTS, mas metais e índices frequentemente operam em SYMBOL_SWAP_MODE_CURRENCY_SYMBOL ou SYMBOL_SWAP_MODE_INTEREST_CURRENT. Assumir o padrão corrompe seu backtest silenciosamente.

Quarto passo: moeda da conta. Swap em “Moeda Base” (`SYMBOL_SWAP_MODE_CURRENCY_BASE`) ou “Moeda de Cotação” (`SYMBOL_SWAP_MODE_CURRENCY_SYMBOL`) exige conversão para a moeda do depósito. Use `AccountInfoInteger(ACCOUNT_CURRENCY)` e `SymbolInfoDouble(…, SYMBOL_BID/ASK)` para converter no momento do cálculo. Taxa de conversão flutua. Swap flutua. Seu P&L projetado vira estimativa, não verdade.

Quinto passo: Strategy Tester. Ele simula swap? Sim, mas usa o modo do símbolo *atual* do terminal, não necessariamente o histórico do broker há 2 anos. Brokers mudam swap mode. Mudam spread. Mudam comissão. Teste forward em conta real centavo (micro) por 30 dias. Compare o `AccountInfoDouble(ACCOUNT_PROFIT)` menos comissão/spread com seu log de swap calculado. Diferença > 5%? Revisite o `switch`.

Checklist de Validação de Swap no OnInit

  • [✓] Confirmar SymbolInfoInteger(_Symbol, SYMBOL_SWAP_MODE) retorna valor esperado (0 a 5).
  • [✓] Calcular swap manual para 1 lote e comparar com MarketInfo / SymbolInfoDouble do terminal.
  • [✓] Validar conversão de moeda de depósito se SYMBOL_SWAP_MODE_CURRENCY_SYMBOL diferir da conta.

Sexto passo: manutenção. Brokers atualizam specs sem aviso. Agende verificação semanal (script rodando sábado) que loga o `SYMBOL_SWAP_MODE` atual vs o salvo no EA. Alerta no Telegram se divergir. Swap é custo invisível. Em carry trade de alto volume, 0.1 pip de erro no modo de cálculo come milhares por mês. Trate o enum como variável de ambiente volátil, não constante de compilação.

Resumo do Aprendizado Sintese Operacional

O que aprendemos na prática sobre o Como utilizar ENUM_SYMBOL_SWAP_MODE?

1. Ponto Forte Principal Precisão cirúrgica no custo de carregamento (carry cost) separa estratégias viáveis de vazamento de capital.
2. Cuidados e Cuidados Enumeração não expõe swap long/short nem datas de triple swap; exige cruzamento com SYMBOL_SWAP_LONG, SYMBOL_SWAP_SHORT e calendário econômico.
3. Veredito de Aplicação Essencial para devs de EAs position trading, carry trade ou hedge funds algorítmicos; irrelevante para scalpers intradiários puros.

Pronto para aplicar esses passos e garantir as melhores condições?

Acessar Referência Técnica Completa

Deixe uma resposta

Related Post