Especialistas: Fractured Fractals - página 2

 
/* Fractured Fractals (edição de barabashkakvn) Explicação do EA: Propósito geral: - Esse EA, criado em 2005 por tageiger, usa o indicador clássico iFractals para identificar possíveis pontos de reversão no mercado; - Ele toma decisões de negociação com base nos valores fractais, colocando ordens pendentes (BuyStop/SellStop) ou modificando posições existentes (por exemplo, ajustando os níveis de Stop Loss); - O EA incorpora o gerenciamento de risco calculando um tamanho de negociação ideal com base na margem da conta e em uma porcentagem de risco máximo definida pelo usuário. Componentes principais: - Bibliotecas: O código inclui várias bibliotecas de negociação MQL5 (CTrade, CPositionInfo, CSymbolInfo, CAccountInfo, CDealInfo, COrderInfo) para lidar com operações de negociação, gerenciar posições e recuperar detalhes de símbolo/conta: - MaximumRisk: O risco máximo por negociação como uma porcentagem do patrimônio líquido da conta. - DecreaseFactor (fator de redução): Um fator usado para reduzir o tamanho da negociação após perdas consecutivas. - Expiração: O tempo de vida (em horas) das ordens pendentes. - m_magic: um identificador exclusivo (número mágico) para diferenciar as negociações executadas por esse EA das demais. Inicialização (OnInit): - O EA configura o símbolo de negociação e atualiza os dados do mercado; - Configura o objeto de negociação com o número mágico especificado e seleciona um tipo de preenchimento de ordem apropriado (FOK, IOC ou um método padrão) com base no que o corretor suporta; - É criado um identificador para o indicador iFractals usando o símbolo e o período de tempo atuais. Se isso falhar, um erro será registrado e a inicialização será interrompida. - Diversas variáveis relacionadas a fractais são inicializadas com EMPTY_VALUE e a hora da última operação lucrativa é armazenada. Função OnTick: - A função OnTick é acionada em cada nova barra. Primeiro, verifica se uma nova barra se formou comparando a hora da barra atual com um registro de data e hora armazenado; - Recupera os valores fractais superior e inferior usando o indicador iFractals; - O EA atualiza um histórico de valores fractais deslocando os valores mais antigos e salvando os mais recentes; - Exibe os valores fractais atuais no gráfico por meio de comentários para facilitar o monitoramento; - O EA conta as posições abertas atuais e as ordens pendentes. Se as condições forem atendidas (por exemplo, uma sequência ascendente para ordens de compra ou uma sequência descendente para ordens de venda), ele calcula um tamanho de negociação otimizado e coloca uma ordem pendente (BuyStop ou SellStop). - Além disso, ele ajusta os níveis de Stop Loss para posições abertas com base nos novos níveis fractais e remove ordens pendentes desatualizadas se as condições do mercado tiverem mudado. Gerenciamento de risco e tamanho da negociação: - A função TradeSizeOptimized calcula o tamanho ideal do lote com base na margem livre da conta, na porcentagem máxima de risco definida e no requisito de margem por lote. - Se uma série de perdas for detectada, o EA reduzirá ainda mais o tamanho da negociação com base no DecreaseFactor. - A função LotCheck garante que o tamanho do lote calculado respeite os limites mínimo, máximo e de etapa do lote do corretor. Funções utilitárias adicionais: - RefreshRates: Atualiza os dados de mercado do símbolo para garantir as taxas atuais. - IsFillingTypeAllowed: Verifica se um determinado tipo de preenchimento de ordem (por exemplo, FOK, IOC) é permitido pelo corretor. - iTime: Recupera a hora de uma barra especificada, garantindo que o EA opere em novas barras. - LastProfitDeal: Examina o histórico de negociação para encontrar a hora da última negociação lucrativa, que é usada nos cálculos de gerenciamento de risco. - iFractalsGet: Recupera valores fractais dos buffers do indicador, com registro de erros se os dados não puderem ser copiados. - CompareDoubles: Compara dois valores duplos com uma precisão especificada para determinar se são efetivamente iguais. - PrintComments: Atualiza os comentários no gráfico com os valores fractal e o tempo atuais para fins de monitoramento. Resumo: - O EA aproveita o indicador iFractals para detectar reversões de mercado; - Coloca automaticamente ordens pendentes quando determinadas condições de fractal são atendidas; - As posições abertas são gerenciadas dinamicamente ajustando os níveis de Stop Loss; - Emprega um gerenciamento de risco abrangente para otimizar o tamanho da negociação com base nas condições da conta atual e no desempenho recente. Esse código bem estruturado demonstra o uso da programação orientada a objetos em MQL5 para gerenciar com eficiência as operações de negociação e os riscos.