Implementar a função AccountInfoDouble() parece trivial no papel, mas é onde a maioria dos desenvolvedores de MQL5 comete erros fatais de arredondamento e gestão de risco.
Não se trata apenas de puxar o saldo da conta, mas de como esse dado alimenta a lógica de abertura de ordens em tempo real sem travar o terminal ou causar erros de execução.
A realidade operacional do AccountInfoDouble()
O objetivo prático é simples: obter dados precisos de equity, balance ou margem para que o robô decida se pode ou não operar.
Na rotina diária, isso se traduz em cálculos de lotagem dinâmica. Se você deseja arriscar exatamente 1% do capital por operação, esta função é o seu ponto de partida obrigatório.
Porém, há nuances perigosas. O valor retornado é um “double”. Se você não tratar a precisão decimal ou ignorar a normalização, a corretora rejeitará suas ordens por volume inválido.
O cenário comum de falha ocorre em contas com alta alavancagem e volatilidade extrema. O equity oscila mais rápido do que o loop do Expert Advisor processa a informação.
Para quem busca precisão cirúrgica, entender a documentação é essencial. Você pode aprofundar a lógica no guia de implementações técnicas para evitar erros de runtime comuns.
Outro gargalo invisível é a dependência de conexão. Se o terminal perde o link com o servidor, a função pode retornar valores defasados, disparando gatilhos de stop prematuros ou ignorando margens insuficientes.
⚙️ AccountInfoDouble(): Performance vs. Limite Operacional
Você abre o terminal às 9h da manhã, o robô já operou na madrugada e o saldo na tela não bate com a planilha de controle. A primeira reação é pânico: margin call? Bug no código? Na verdade, o problema costuma ser mais simples e perigoso: você está lendo a propriedade errada ou usando a função legada AccountBalance() num ambiente MQL5 que exige tipagem estrita. A função AccountInfoDouble() resolve isso, mas a documentação oficial assusta pela quantidade de ENUM_ACCOUNT_INFO_DOUBLE disponíveis. A maioria dos desenvolvedores perde horas testando ACCOUNT_EQUITY versus ACCOUNT_BALANCE em vez de construir lógica de risco. Se você já passou por isso, sabe que a diferença entre um EA robusto e um que explode a conta está na precisão desse leitura. A documentação oficial lista todas as propriedades, mas não ensina como orquestrá-las num loop de gestão real.
O mercado de automação para MetaTrader 5 amadureceu. Não dá mais para tratar conta como “saldo único”. Corretoras modernas expõem ACCOUNT_MARGIN_FREE, ACCOUNT_PROFIT, ACCOUNT_CREDIT e até ACCOUNT_COMMISSION_DAILY. Ignorar qualquer uma dessas variáveis é voar às cegas. O segredo não é decorar a enumeração, mas entender a hierarquia: Equity comanda risco, Margin comanda alavancagem, Profit comanda performance. O resto é ruído.
Leitura Atômica do Estado da Conta em Milissegundos
Pare de chutar margem livre. Domine o mapa completo de doubles do servidor de negociação.
A Anatomia Real do ENUM_ACCOUNT_INFO_DOUBLE
A função aceita um identificador da enumeração e retorna double. Simples na assinatura, crítica na semântica. Muitos devs tratam tudo como “dinheiro na conta”. Erro fatal. ACCOUNT_BALANCE é histórico fechado. ACCOUNT_EQUITY é realidade flutuante (Balance + Profit + Swap + Commission). ACCOUNT_MARGIN é o colateral travado nas posições abertas. ACCOUNT_MARGIN_FREE é o que sobra para novas entradas — e é aqui que vive o stop out.
Abaixo, o mapa prático das propriedades que realmente movem o ponteiro da gestão de risco. As demais (ACCOUNT_CREDIT, ACCOUNT_INTEREST_RATE, ACCOUNT_MARGIN_SO_MODE) são situacionais ou só leitura para relatórios.
| Identificador (ENUM) | O que Representa | Uso Crítico no EA |
|---|---|---|
ACCOUNT_BALANCE | Saldo contábil (posições fechadas) | Baseline para drawdown histórico, relatórios fiscais |
ACCOUNT_EQUITY | Patrimônio líquido real-time | Gatilho de stop out, sizing dinâmico, trailing global |
ACCOUNT_PROFIT | Lucro/prejuízo flutuante das posições abertas | Filtro de entrada (não abrir se profit < -X%), fechar cesta |
ACCOUNT_MARGIN | Implementação Prática e Execução Progressiva Pare de adivinhar o saldo da sua conta enquanto o robô roda. O A implementação começa com a escolha da constante correta. Não tente “hackear” a função. Use
Cronograma de Domínio Financeiro no MQL5 Fase 1 Chamada simples de saldo e impressão via Print() para validação de dados. Fase 2 Criação de filtros de segurança que bloqueiam novas ordens se a Equidade cair X%. Fase 3 Cálculo de lote dinâmico baseado em porcentagem real do capital disponível. Workflow Operacional e Gestão de RiscoO fluxo é seco. Primeiro, você declara uma variável do tipo Lotes fixos são para iniciantes. Profissionais usam a equidade para definir o risco por trade. Se você quer arriscar 1% por operação, o Alerta de Configuração Cuidado com a Precisão DecimalComparar doubles com o operador ‘==’ é suicídio técnico. Use NormalizeDouble() ou verifique se a diferença é menor que o Point da conta. Aceleração de Resultados e Erros ComunsMuitos programadores cometem o erro de chamar a função centenas de vezes por segundo desnecessariamente. Isso é ineficiente. Chame a função no início do ciclo de decisão do trade. Economize processamento. Outro erro fatal: ignorar a margem disponível. O Checklist de Validação Financeira
Resumo do Aprendizado Sintese Operacional O que aprendemos na prática sobre o AccountInfoDouble()? 1. Ponto Forte Principal Acesso instantâneo e preciso a métricas críticas de capital para automação. 2. Cuidados e Limitações Riscos de comparação direta de doubles e confusão entre saldo e equidade. 3. Veredito de Aplicação Obrigatório para qualquer EA que utilize gestão de risco dinâmica. Pronto para aplicar esses passos e garantir as melhores condições? |
