Arquitetura Profissional em MQL5: Como implementar Persistência de Estado e Resiliência em Expert Advisors?

 
Olá a todos.
À medida que avançamos no desenvolvimento de Expert Advisors para ambientes de produção, um dos temas mais interessantes é a gestão de continuidade. Em cenários profissionais, é essencial que o EA seja capaz de retomar sua lógica exatamente de onde parou após eventos de rotina, como atualizações de VPS, reinicializações do terminal ou breves desconexões.
O MQL5 nos oferece ferramentas poderosas para lidar com isso, e eu gostaria de debater com os colegas quais são as abordagens mais eficientes e seguras que vocês utilizam para garantir a persistência de estado:
  1. Uso Estratégico de GlobalVariables: Como vocês organizam as variáveis globais do terminal para garantir que dados críticos de execução sejam preservados de forma leve e rápida?
  2. Sincronização via HistorySelect: Muitos desenvolvedores preferem não armazenar estados localmente, mas sim 'reconstruir' a memória do EA consultando o histórico de ordens e posições em tempo real. Quais os prós e contras dessa abordagem em termos de performance?
  3. Persistência em Arquivos Locais: Para lógicas mais complexas (como redes neurais ou sistemas de gestão de risco multi-ativos), vocês utilizam a gravação de arquivos binários ou CSV para um 'checkpoint' completo do estado?
O objetivo aqui é discutir como elevar a robustez dos nossos robôs, utilizando as funcionalidades nativas da linguagem para criar sistemas que operem com total autonomia e segurança.
Quais padrões de projeto (Design Patterns) vocês recomendam para gerenciar essa 'memória' do robô de forma profissional?
 
Olá @Diego Vinicius Righetti! Na minha opinião, a abordagem mais robusta é, sempre que possível, evitar a necessidade de persistência. Se o EA reconstrói seu estado a partir das posições abertas (via magic number) e/ou do histórico de ordens, ele já se torna naturalmente resiliente a reinicializações, quedas de conexão e atualizações de VPS - sem depender de variáveis globais ou arquivos, sujeitos a perda ou corrupção.
Variáveis globais e arquivos só se tornam realmente necessários quando o estado NÃO pode ser obtido dos dados do servidor - caso de grids/martingales (que precisam lembrar o nível da sequência), sistemas adaptativos ou estratégias multi-etapa (que precisam lembrar em qual fase do setup estão).
Resumindo: a melhor persistência costuma ser não precisar dela. Reconstruir >> Armazenar, sempre que a estratégia permitir.