Bloco 6 - Execução de Ordens

Mais do que simplesmente “executar” uma entrada, o Bloco 6 implementa uma lógica cirúrgica de decisão, garantindo que cada ordem seja aberta apenas quando todos os critérios convergem e que cada operação carregue consigo níveis de Stop Loss, Take Profit e tamanhos de lote definidos por cálculos consistentes de risco. Trata-se de um sistema que não apenas envia ordens, mas que gerencia, verifica, valida e registra cada detalhe, reduzindo falhas e prevenindo inconsistências.

Neste bloco, as funções Executar_Condicao1 e Executar_Condicao2 operam como motores independentes, cada uma associada a estratégias específicas - com magics próprios, métricas particulares e um conjunto distinto de parâmetros de risco e de leitura estrutural do mercado. Ambas seguem uma estrutura avançada de execução, que envolve:

  • Coleta imediata e verificada dos preços atuais (Bid/Ask), com tratamento de falhas.

  • Cálculo dinâmico de SL e TP, considerando buffers, volatilidade, características do candle anterior, fallback inteligente e validações obrigatórias.

  • Construção completa do MqlTradeRequest, preenchido com parâmetros de segurança, volume calculado, tipo de preenchimento (IOC) e time-in-force apropriado.

  • Aplicação rígida de limites, como volume máximo permitido, distância mínima para SL/TP e consistência dos níveis.

  • Registro extensivo de logs para auditoria e depuração, incluindo spread, preços finais, retornos da corretora e erros operacionais.

  • Atualização de marcadores internos (como lastCandleTradeTime) para controle temporal e integração com o sistema de bloqueios.

Ao unir precisão técnica, controle de risco, consistência lógica e mecanismos redundantes de segurança, o Bloco 6 consolida o papel do robô como um Executor Inteligente, capaz de transformar sinal em operação com confiabilidade.

Ele não apenas abre ordens - ele garante que cada ordem seja justificável, validada e compatível com as regras estratégicas do sistema.

6.1 Funções Executar_Condicao1( ) e Executar_Condicao2( )

As funções Executar_Condicao1( ) e Executar_Condicao2( ) representam o núcleo operacional das estratégias implementadas no robô. Elas são responsáveis por transformar os sinais provenientes das funções de análise e tomada de decisão em ordens de mercado totalmente estruturadas e validadas, garantindo precisão e aderência ao plano estratégico de cada módulo.

A função Executar_Condicao1( ) está diretamente associada à Estratégia 1, utilizando o Magic Number configurado para controlar e identificar todas as operações geradas exclusivamente por essa lógica. Sua responsabilidade é verificar, validar e executar sinais de compra ou venda provenientes da função Estrategia_1( ).

O processo inicia com a captura e validação dos preços atuais de Bid e Ask. Se esses dados não estiverem disponíveis, a execução é imediatamente interrompida para evitar ordens incorretas. Em seguida, o sistema calcula dinamicamente os níveis de Stop Loss e Take Profit, levando em conta elementos como buffers estruturais, distância mínima, normalização de preços e mecanismos de fallback que corrigem automaticamente valores inválidos.

Somente após todos os parâmetros serem validados - incluindo lote permitido, coerência entre preços, limites operacionais do ativo e consistência dos níveis de SL e TP - o robô constrói o objeto MqlTradeRequest com todas as informações necessárias: volume ajustado ao risco, tipo de ordem, preço, proteção, magic number e modo de preenchimento.

Ao final, a ordem é enviada à corretora e um registro completo é gravado no log, permitindo rastreabilidade e auditoria.

A função Executar_Condicao2( ) segue a mesma lógica estrutural rigorosa, mas tem um papel especial dentro do projeto:
ela está vinculada ao Magic Number da Estratégia_2(), que é justamente o espaço onde o usuário da série aprende a desenvolver sua própria lógica de entrada, criando sua estratégia personalizada para testar em ambiente simulado.

Na prática, isso significa que o módulo Executar_Condicao2 funciona como a ponte entre a criatividade do usuário e o motor de execução profissional do robô.

Independentemente da estratégia escolhida na função Estrategia_2(), toda execução passa pelo mesmo conjunto de proteções e validações adotado pela Estratégia 1:

  • validação de preço e spread;

  • cálculo dinâmico de SL e TP baseado na estrutura dos candles;

  • buffers de suporte e resistência;

  • limites rígidos de lote;

  • construção segura do MqlTradeRequest; e

  • logs completos para depuração.

Essa estrutura garante que, mesmo que o usuário esteja desenvolvendo uma lógica original de entrada, a execução sempre seguirá padrões profissionais de proteção, disciplina e conformidade técnica.

Embora as funções apresentem uma lógica sólida para Stop Loss e Take Profit, o sistema foi projetado para ser expandido. O usuário pode substituir ou complementar essas regras implementando outras técnicas de gerenciamento, como:

  • Trailing Stop;

  • Break-even automático;

  • Saídas parciais (Partial Close);

  • Take Profit móvel (Dynamic TP);

  • Hedge automático;

  • Stop Loss baseado em ATR ou volatilidade;

  • Sistemas híbridos de saída por tempo + preço.

Essas alternativas permitem ao desenvolvedor adaptar o robô a diferentes estilos operacionais — desde estratégias agressivas de volatilidade até modelos conservadores de movimento tendencial.

Com as funções Executar_Condicao1( ) e Executar_Condicao2( ), o robô alcança o nível de execução profissional:
cada ordem é tratada como um processo completo, validado e protegido, seja ela gerada pela estratégia principal do projeto ou pela estratégia personalizada construída pelo próprio usuário na função Estrategia_2( ).

A arquitetura foi pensada para permitir não apenas execução fixa, mas também expansão, personalização e experimentação, tornando o ambiente ideal para aprendizado, testes e construção de sistemas operacionais consistentes em MQL5.

Para avançar ou retornar para revisar módulos do código, você pode utilizar os botões a seguir: