Um VPS com status verde e uma lista de operações sem novidades respondem a perguntas diferentes. Para supervisionar um EA, você precisa de evidências recentes do terminal, dados necessários, programa e ordens da corretora, além de um caminho de alerta que funcione quando o terminal remetente parar.
Este é o Guia 4 da série Estabilidade VPS e MT4. Comece com hosting e continuidade, use o Guia 2 para configurar e o Guia 3 para recuperar. Aqui o foco é observar o funcionamento normal e detectar incerteza antes que um incidente aumente.
Defina o funcionamento normal antes de procurar uma falha
Um EA pode funcionar corretamente sem abrir uma operação. Filtro de horário, limite de spread, uma cesta existente, regra de risco ou ausência de sinal válido podem explicar a inatividade. O monitoramento deve verificar se o ambiente previsto consegue cumprir sua função documentada, inclusive gerenciar ordens existentes, sem exigir uma quantidade mínima de operações.
Registre a identificação do terminal, conta e servidor previstos, símbolos e períodos gráficos exatos, versão do EA, parâmetros aprovados, regras de responsabilidade pelas ordens e sessões esperadas. Inclua outros símbolos necessários. Pergunte ao desenvolvedor quais estados, registros e comportamentos após reinício o programa realmente oferece. Um arquivo EX4 não fornece automaticamente um sinal periódico de atividade nem uma explicação completa de cada decisão.
Separe três estados: normal, problema confirmado e desconhecido. Se um painel parar de atualizar, mostre o horário da última observação e marque o estado atual como desconhecido. Um indicador verde antigo não é evidência atual.
Verifique quatro camadas de evidência
| Camada | Observação útil | O que ela não comprova sozinha |
|---|---|---|
| VPS e sistema operacional | Disponibilidade, reinícios, pressão sobre recursos, armazenamento e processo MT4 previsto. | Uma máquina acessível ou um processo ativo não comprova que a lógica do EA responde. |
| MT4 e dados de mercado | Conta e servidor corretos, conexão e dados recentes de todos os símbolos necessários. | Um gráfico em movimento não comprova que outro símbolo necessário esteja recebendo dados. |
| Funcionamento do EA | Inicialização correta, estado documentado, permissões e heartbeat significativo, quando disponível. | Uma mensagem do temporizador não comprova que cálculos ou gerenciamento de posições foram concluídos. |
| Ordens na corretora e gerenciamento | Ordens abertas/pendentes atuais, proteções aceitas, resultados das solicitações e instância responsável. | Saldo, relatório antigo ou última operação bem-sucedida não confirmam a proteção atual. |
São verificações separadas. Elas podem ser feitas manualmente ou reunidas por um sistema configurado para isso; o MT4 não as combina automaticamente no painel descrito aqui.
Uma revisão de cinco minutos sem mudar a estratégia
- Confirme onde o EA funciona. Examine o terminal e a conta previstos, não um gráfico local que ficou aberto após a migração.
- Verifique a sessão e as cotações necessárias. Determine se atualizações são esperadas agora e se os símbolos exatos da corretora têm dados utilizáveis.
- Confira inicialização e permissões. Leia mensagens recentes de
ExpertseJournale o estado documentado do EA. - Examine as ordens atuais. Confirme quem as gerencia e quais proteções realmente existem na corretora.
- Confira o caminho de monitoramento. Verifique o horário do último relatório e se um alerta de teste chega ao dispositivo previsto.
Cinco minutos descrevem um formato de revisão, não uma garantia de diagnóstico nem um tempo de resposta adequado a qualquer EA. Em caso de dúvida, preserve evidências e consulte o guia de erros de EA. Não afrouxe limites de spread ou risco, altere Magic Numbers nem force uma entrada para deixar um indicador verde.
Estar conectado não significa receber cotações recentes
IsConnected() informa a conexão do terminal com o servidor. Não certifica dados recentes para todos os símbolos, acesso à negociação nem funcionamento correto da estratégia. Confira os nomes exatos, incluindo sufixos da corretora, e os dados que o EA precisa além do próprio gráfico.
MarketInfo(symbol, MODE_TIME) retorna o horário do último tick recebido para aquele símbolo, na referência de tempo do servidor da corretora. A última cotação é uma evidência passada, não um relógio que avança sem novos ticks. Fins de semana, pausas de sessão e períodos tranquilos podem explicar uma cotação antiga. Confira os horários reais da corretora antes de concluir que o fluxo de dados falhou.
Defina verificações de idade da cotação por símbolo e sessão depois de observar o funcionamento normal. Não existe um prazo universalmente seguro para todos os pares Forex ou EAs. Um Bid inalterado também não basta: ticks sucessivos podem ter o mesmo preço. Quando possível, registre o recebimento de eventos de dados, não apenas mudanças de preço.
Use o relógio adequado para cada pergunta
| Relógio ou marca de tempo | Significado | Limite para o monitoramento |
|---|---|---|
TimeCurrent() | Último horário conhecido do servidor. Em OnTick(), corresponde ao tick processado; em outros manipuladores, à última cotação de um símbolo selecionado no Market Watch. | Pode deixar de avançar sem cotações e não comprova a atualização do símbolo específico do EA. |
MODE_TIME | Horário do último tick recebido para o símbolo indicado. | Use a referência do servidor e o contexto da sessão. |
TimeLocal() | Relógio local do computador. | Fuso horário, horário de verão e correções do relógio podem alterar comparações. |
| Horário de recebimento em um coletor independente | Momento em que um serviço recebe de fato um relatório identificado. | Depende do coletor e do transporte; não comprova a conclusão do fluxo de negociação. |
Não subtraia diretamente o horário da cotação do relógio do Windows para calcular sua idade sem estabelecer uma base comum. Um desenvolvedor pode medir intervalos com um contador apropriado, mas precisa tratar reinicializações e estouro do contador. Um coletor externo deve avaliar relatórios ausentes com sua própria lógica de tempo decorrido, testada e separada das marcas de tempo do mercado.
Identifique fonte, data e fuso horário dos registros. Normalize as fontes antes de reconstruir um incidente; dois horários parecidos na tela não estabelecem a ordem dos acontecimentos. Veja o guia de Experts e Journal.
Defina o que um heartbeat realmente comprova
Um heartbeat é um relatório periódico de um componente identificado. O do VPS informa sobre a máquina; o de um EA de monitoramento, sobre seus próprios eventos. Nenhum comprova automaticamente que outro EA de negociação avaliou um sinal ou gerenciou uma cesta.
OnTick() é executado com novos ticks do símbolo do gráfico ao qual o EA está anexado. Um heartbeat enviado apenas nesse manipulador pode desaparecer quando não há ticks. Se o desenvolvedor implementou o recurso, o programa pode usar EventSetTimer() com OnTimer() para solicitar eventos periódicos. Esses eventos entram em uma fila; quando um Timer já está na fila ou em processamento, outro não é adicionado. Isso não é um relógio externo preciso nem uma garantia de que um programa travado continue informando.
Pergunte qual ponto de verificação gera o relatório: entrada no manipulador, conclusão das verificações de dados, término do ciclo de gerenciamento ou transmissão bem-sucedida. Identificação da instância, versão, número de sequência, modo, estado dos dados e horários de geração/recebimento são úteis. Uma sequência crescente distingue relatórios novos de repetições, mas não comprova uma execução.
Com um EA de código fechado, use estados suportados pelo fornecedor e observações externas. Um observador adicional não passa a conhecer a saúde interna da estratégia. Um EA de monitoramento separado precisa de seu próprio gráfico; colocá-lo no gráfico da estratégia substitui o EA existente. Ele deve observar sem enviar operações nem gerenciar as ordens da estratégia.
Detecte relatórios ausentes fora do terminal
Um terminal parado não consegue enviar de forma confiável sua própria última mensagem de falha. Um observador independente pode detectar que os relatórios esperados deixaram de chegar, desde que ele, sua conexão e o caminho de alerta continuem funcionando. Manter o único supervisor no mesmo VPS o expõe à mesma falha da máquina.
Separe coleta e intervenção. Um alerta de relatório ausente significa que a observação falhou em algum ponto entre remetente, rede, coletor e caminho de alerta. Não comprova que o EA principal parou de negociar e não deve habilitar automaticamente outra cópia. Investigue a máquina e as ordens atuais antes da transferência descrita no Guia 3.
Dê uma identificação de monitoramento distinta a cada instância prevista e detecte remetentes desconhecidos ou duplicados. Monitore também o coletor e teste uma rota alternativa de contato. Transmita somente o estado necessário; senhas, segredos de ativação e acesso irrestrito à conta não são campos de um heartbeat.
Monitore permissões sem ativá-las às cegas
No MT4 desktop, confira AutoTrading, a permissão do próprio EA, o acesso de negociação da conta prevista e a licença do fornecedor. Um acesso somente para leitura pode mostrar informações sem permitir negociações. Uma mudança de permissões pode deixar o EA calculando, mas incapaz de modificar ordens como previsto.
IsTradeAllowed() sem argumentos verifica a permissão do EA que chamou a função e se o contexto de negociação está livre. false não é um diagnóstico completo; true não garante que a corretora aceite a próxima solicitação. O resultado de um observador separado não certifica a permissão individual de outro EA.
Alerte para uma mudança inesperada em relação ao modo aprovado. Um terminal pausado deliberadamente deve ser registrado como pausado, sem ser «reparado» por um supervisor. Desligar a automação não fecha posições e pode interromper saídas gerenciadas localmente. Toda pausa exige um plano explícito de gerenciamento.
Monitore solicitações malsucedidas e posições existentes
Acompanhe a sequência de uma solicitação documentada: ação pretendida, tentativa, resultado e conciliação com registros da corretora. Rejeições e modificações malsucedidas importam mesmo sem nova posição. Se o fornecedor não registra tentativas ou motivos para ignorar sinais, a lista de operações sozinha não permite reconstruir essas informações de forma confiável.
O erro 128 indica um timeout de negociação. Após resposta perdida ou incerta, confira ordens abertas, pendentes e histórico pertinente antes de decidir se tenta novamente. Ausência de confirmação local não comprova rejeição. Inclua símbolo exato, direção, volume, ticket se conhecido e horário da solicitação; não adivinhe qual ordem corresponde à tentativa.
Examine exposição, P/L flutuante, equity e Stop Loss/Take Profit aceitos junto às regras documentadas de responsabilidade do EA. A proteção na corretora difere de um stop virtual planejado ou futuro ajuste de trailing. Um EA parado pode deixar posições abertas e uma ordem pendente pode ser acionada sem monitoramento local. Este guia não estabelece um novo limite de drawdown nem uma política de liquidação automática.
Teste os alertas até o destinatário
- No terminal previsto, abra
Tools → Options → Notifications, habilite notificações push e informe oMetaQuotes IDdo terminal móvel desejado. - Use
Test, confirme o resultado do terminal e verifique o recebimento no dispositivo real. Confira as permissões de notificação e o caminho prático de resposta. - Teste separadamente a condição real do EA ou observador. Um teste de configuração não comprova que exista uma regra para heartbeat ausente ou ordem rejeitada.
- Registre horário, remetente, destino e resultado; repita depois de migração do VPS, troca de dispositivo ou alteração das notificações.
Notify of trade operations cobre operações bem-sucedidas e eventos documentados da conta; não avisa sobre operações malsucedidas. Portanto, não é um monitor completo de rejeições, dados antigos ou falhas do terminal.
Para SendNotification(), a MetaQuotes documenta limite de 255 caracteres, no máximo 2 chamadas por segundo e 10 por minuto. Ultrapassar a frequência pode desabilitar a função. Ela não funciona no Strategy Tester: confira a entrega em um ambiente demo em execução apropriado. Um envio bem-sucedido não comprova que alguém viu ou confirmou a mensagem. Agrupe falhas repetidas e informe mudanças de estado relevantes em vez de alertar a cada tick.
Escreva uma regra com contexto e próximo passo
| Condição | Contexto necessário | Próximo passo útil |
|---|---|---|
| Nenhum relatório recente | Remetente e intervalo esperados, saúde do coletor e manutenção planejada. | Confira o caminho de observação e a instância principal; não habilite o backup automaticamente. |
| Cotação antiga de símbolo necessário | Símbolo exato, sessão, comportamento normal de atualização e base de tempo. | Verifique outros símbolos, conexão e serviço da corretora. |
| Restrição inesperada ou solicitação malsucedida | Modo aprovado, EA/conta que chamou, mensagem exata e ordens atuais. | Investigue permissões ou rejeição; concilie resultados incertos antes de repetir. |
| Gerenciamento desconhecido com ordens abertas | Exposição atual, proteção aceita na corretora e instância responsável. | Siga o plano de incidentes e estabeleça a responsabilidade pelo gerenciamento. |
Defina persistência, intervalo de repetição, confirmação e condição de recuperação. Um aviso de recuperação deve dizer quais observações voltaram; um único heartbeat não comprova que todas as camadas se recuperaram. Use uma janela de manutenção com responsável e horário de término em vez de suprimir permanentemente um alarme frequente.
Escolha a gravidade conforme a situação real da conta. O mesmo problema de dados pode ter impactos diferentes sem exposição e com posições que dependem de saídas locais. O monitoramento identifica o contexto, mas não fornece um período de espera seguro universal.
Um exemplo de heartbeat ausente com um só relógio
Exemplo hipotético: um coletor espera um relatório identificado a cada 60 segundos e alerta após 180 segundos sem um novo relatório. São configurações didáticas, não limites universais recomendados. Todos os horários abaixo são observações do coletor em UTC; nenhum horário de cotação da corretora é subtraído deles.
| Horário do coletor (UTC) | Observação | Conclusão sustentada |
|---|---|---|
| 10:00:00 | O último heartbeat identificado é recebido. | Um relatório chegou e informou seu ponto de verificação definido. |
| 10:01:00 | Uma verificação separada da máquina responde; não chega novo heartbeat do EA. | O caminho de verificação da máquina funciona; os relatórios do EA seguem sem confirmação. |
| 10:03:00 | O coletor não recebe um heartbeat novo há 180 segundos. | A condição do exemplo foi atingida; o componente com falha continua desconhecido. |
| 10:03:20 | Uma revisão autorizada vê cotações atualizadas e uma ordem aberta na corretora. | Dados e exposição são observados; o gerenciamento do EA ainda precisa ser verificado. |
Passaram 180 ÷ 60 = 3 intervalos esperados sem um novo recebimento. Isso não comprova que a negociação parou às 10:00:00, que o servidor rejeitou algo ou que a ordem está sem gerenciamento. Examine EA, registros e ordens atuais antes de intervir. Se o próprio coletor esteve indisponível, ele não pode afirmar que observou todo o intervalo continuamente.
Mantenha um registro operacional simples
Inclua última revisão bem-sucedida, dados dos símbolos necessários, identificação do EA/terminal, responsável por ordens abertas, mensagens pendentes, resultado do teste de alerta e mudanças planejadas. Revise após instalação, reinício, migração, alterações aprovadas de parâmetros e manutenção da corretora; depois, na frequência adequada às necessidades reais de gerenciamento do EA.
Monitoramento público ajuda a avaliar desempenho, mas confira antes última atualização e atraso de publicação. Uma curva de saldo bonita não é uma verificação operacional em tempo real. Um relatório quieto ou saldo parado não distingue espera por sinal de falha do terminal. Separe avaliação de desempenho e supervisão operacional imediata.
Observe o ambiente que realmente negocia
Em um VPS Windows, verificações de máquina/processo, observações do terminal e coletor independente podem cobrir falhas diferentes. Revise recursos e inicialização com o Guia 2; um login Windows bem-sucedido não confirma um EA funcionando.
No hosting virtual integrado do MetaTrader, examine estado remoto, sincronização e registros de terminal/Experts solicitados pelos controles do serviço. Um gráfico ou heartbeat local não mostra o EA remoto. Qualquer heartbeat remoto precisa ser implantado deliberadamente, compatível e testado naquele ambiente; serviços Windows e ferramentas com DLL não suportadas não podem simplesmente ser copiados.
AutoTrading local não para a cópia hospedada. Para intervir, use os controles do hosting e confirme o estado remoto real. O monitor deve identificar se observa o host principal de negociação, um terminal local de preparação ou um backup.
Teste em demo os pontos cegos do monitoramento
Use um ambiente demo autorizado e seus próprios arquivos de estado. Teste fechamento controlado do terminal, perda do caminho de relatórios, pausa de sessão esperada, pausa intencional e retorno ao normal. Diferencie um alerta real de um teste bem-sucedido de entrega. Não deixe uma posição real sem gerenciamento para testar um supervisor.
Registre configuração testada, observações e pontos cegos restantes. Um bom monitoramento reduz incerteza; não garante disponibilidade, execução nem desempenho da estratégia.
Perguntas comuns sobre monitoramento de EA
Nenhuma operação nova significa que o EA está com defeito?
Não. Confira sessão, regras de sinal, dados, permissões e gerenciamento das ordens existentes. Uma estratégia saudável pode ficar corretamente inativa.
Um heartbeat comprova a saúde de todas as funções?
Não. Comprova apenas que o relatório documentado foi gerado ou recebido. Seu valor depende de onde é produzido e de quais campos estão atualizados.
Notificações push padrão detectam todas as falhas?
Não. Avisos de operações bem-sucedidas omitem operações malsucedidas, e um terminal parado não consegue informar de forma confiável sua própria falha completa. Teste regras personalizadas e detecção independente de relatórios ausentes separadamente.
Um heartbeat ausente deve iniciar automaticamente um VPS de backup?
Não. Estabeleça primeiro o estado de negociação do principal, as ordens atuais da corretora e a responsabilidade pelo gerenciamento. Um relatório ausente não autoriza automação duplicada.
Referências oficiais e alcance prático
Detalhes da plataforma foram conferidos na documentação oficial MetaQuotes. Formato de revisão, limites do exemplo e regras de incidente são orientação operacional educativa, não um produto de monitoramento fornecido nem resultados medidos de confiabilidade. Os nomes da interface variam por idioma; confira sua instalação.
- MQL4: estado da conexão e permissão de negociação do EA.
- MQL4: marcas de tempo das cotações, horário do servidor e limites dos eventos Timer.
- MetaTrader 4: configuração de notificações; MQL4: limites do push personalizado.
- MetaTrader 4: estado e registros do hosting remoto.