Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Visualizações:
12
Avaliação:
(1)
Publicado:
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Visão geral

Este Expert Advisor opera com a estrutura da Média Móvel Relativa (RMA) apresentada pelo Dr. Daniel Alexandre Bloch no livro “A Course on Systematic Trading with RMA”. Ele implementa todas as quatro estratégias de cruzamento descritas no artigo, juntamente com sua saída adaptativa de cruzamento (Adaptive Crossover Exit), e cada entrada e saída é expressa no espaço de fractis, em vez de em preço.

A premissa é que uma janela de preços é mais informativa como distribuição do que como média. Em cada barra, a RMA considera a janela móvel de W fechamentos, reexpressa-os como retornos em relação à sua própria média e indica a posição da mais recente dentro dessa distribuição como um fractil no intervalo [0, 1]. O objetivo do artigo é, então, aproveitar as oscilações dessa classificação entre os extremos da distribuição: posição comprada enquanto ela se desloca do mínimo em direção ao máximo, e posição vendida quando ela se inverte. Como um fractil é uma classificação e não uma distância, um limiar como 0,9 tem o mesmo significado para todos os símbolos e em todos os regimes de volatilidade, e é isso que torna as regras portáteis.

Observação: este não é o “RMA” que algumas plataformas de gráficos apresentam (o suavizador de Wilder, uma variante da EMA). Apesar da sigla em comum, trata-se de um objeto totalmente diferente.

O EA não possui nenhuma fórmula matemática. Tudo isso está no indicador complementar RMA_Engine, que o EA carrega por meio do iCustom e lê com o CopyBuffer a cada barra fechada. Essa separação é deliberada e proporciona duas propriedades valiosas: o EA não pode discordar do gráfico sobre qual foi o fractil em uma determinada barra, pois há apenas um cálculo; e as regras nunca interferem em uma ordem, de modo que podem ser reproduzidas historicamente por um script sem o envolvimento de nenhuma corretora.


Como ele opera

As quatro etapas. A estratégia aproveita os movimentos de travessia da própria distribuição da janela. Alcançar um extremo arma um lado, o que constitui o teste de originação do artigo, e a entrada é acionada quando o fractil, posteriormente, cruza um intervalo quantílico na direção da transversal. O extremo não é o gatilho; o cruzamento é, portanto, uma entrada pode ser acionada em qualquer ponto ao longo da transversal. Os nomes descrevem o movimento do preço, não a posição:

  • Long-cross-reverse. O fractil sai do máximo e desce em direção ao mínimo. O EA acompanha essa descida assumindo uma posição vendida.
  • Short-cross-reverse. O caso espelhado. O fractil sai do mínimo e sobe em direção ao máximo, sendo acompanhado com posições longas.
  • Long-cross-revert. Uma descida que começou no máximo volta a subir antes de atingir o mínimo. O EA acompanha esse movimento de volta em direção ao máximo, em posição comprada.
  • Short-cross-revert. Uma subida que começou no mínimo inverte o curso para baixo antes de atingir o máximo, sendo acompanhada de volta para baixo, em posição vendida.

Entre elas, as quatro cobrem os dois sentidos em que um movimento parcial pode se resolver. Cada posição aberta pertence a uma perna nomeada, e é a perna que decide qual teste de saída se aplica e em que se transforma uma reversão; assim, a mesma leitura do fractil fecha uma posição e mantém outra.

As quatro estratégias transversais que abrangem a distribuição

As quatro pernas em uma distribuição: as pernas de reversão percorrem uma travessia completa de um extremo ao outro; as pernas de reversão são adotadas quando uma travessia retorna antes de atingir o extremo oposto.

A saída adaptativa. É aqui que o detector de regime ganha seu lugar. O artigo define duas saídas básicas e, em seguida, uma terceira que escolhe entre elas:

  • Cruzamento completo da distribuição. Presume que a travessia se complete, de modo que a saída de um lado coincida com a entrada do outro. Uma posição vendida aberta a partir do máximo é fechada somente quando o quantil realmente atinge o mínimo e inverte para cima; e, como essa inversão é, por si só, a origem de uma nova operação na direção oposta, a saída se inverte diretamente para ela.
  • Gatilho de Revertimento de Extremo. Não faz suposições sobre o extremo mais distante. A posição é fechada ao primeiro indício concreto de que o movimento que ela acompanhava tenha parado: uma sequência de passos no intervalo de quantil na direção errada, um cruzamento de volta pela zona mediana ou um único passo grande o suficiente para ser conclusivo.
  • Saída por Crossover Adaptativo. A regra do artigo, e o que o EA implementa: o gatilho de reversão durante a expansão e a transição, onde são prováveis traversais parciais, mudando para o crossover completo assim que a contração for identificada. As etapas de reversão sempre utilizam o gatilho de reversão, em todos os regimes.

O teste de comprimento da sequência é o que impede que o gatilho de reversão seja acionado por ruído. Uma sequência assinada de passos de intervalo se acumula enquanto o fractil continua se movendo na mesma direção e é reiniciada quando a direção muda; portanto, “dois intervalos para trás” significa que o movimento realmente mudou de direção, em vez de ter apenas pausado.

A saída de segurança. Acima e antes de qualquer saída da estratégia, há uma verificação de movimento adverso. Uma posição de reversão à média fica fora da linha por definição por um tempo; portanto, estar fora da linha não pode ser o critério de saída; o verdadeiro sinal de alerta é estar fora da linha e observar o fractil continuar se afastando ainda mais. É exatamente isso que descreve uma leitura baixa de D_k no lado errado da mediana, e é a única saída que ignora totalmente a configuração de lucro mínimo, pois não está tentando atingir uma meta, mas sim parar de alimentar uma tendência que já se voltou contra a operação.

Quando ela é acionada em caso de perda, também bloqueia a reentrada nesse mesmo lado até que o fractil volte a cruzar a mediana; assim, a estratégia não pode entregar imediatamente ao mercado a mesma operação perdedora novamente. Se a faixa estiver se expandindo naquele momento, o EA assume o lado oposto, com base no raciocínio de que um sinal de reversão à média que continua falhando é evidência de uma tendência, e não de um preço melhor. Essas duas etapas de acompanhamento de tendência são a única parte do sistema que não é simétrica.


Configuração recomendada

Configuração
Valor recomendado
Notas
Símbolo
EURUSD
O instrumento de desenvolvimento e teste. A escala de fractis é auto-normalizante, portanto as regras se aplicam a outros símbolos sem necessidade de recalibração, mas as configurações abaixo foram testadas apenas aqui.
Intervalo do gráfico
H2
O período de teste. A janela é medida em barras; portanto, um período mais curto com o mesmo W simplesmente descreve um trecho mais curto do mercado. O tempo médio de manutenção em H2 foi de aproximadamente um dia.
Tipo de conta
Compensação ou hedge
O EA mantém, no máximo, uma posição por vez e reverte a posição fechando e reabrindo, portanto, qualquer um dos tipos de conta funciona.
Pré-requisito
O RMA_Engine deve ser compilado
Compile Indicators\RMA\RMA_Engine.mq5 antes de anexar o EA. Sem o arquivo .ex5, a chamada iCustom falha e o EA se recusa a inicializar, exibindo uma mensagem indicando o nome do arquivo.
Histórico necessário
W mais o período de análise do regime
O EA fica parado em qualquer barra em que o mecanismo ainda não possa responder; portanto, um histórico curto resulta na perda de sinais, em vez de gerar sinais errados.
Importante: sempre teste primeiro em uma conta demo. A seção de Resultados do artigo original foi deixada para trabalhos futuros; portanto, ela fornece uma estrutura e seus mecanismos, não um histórico empírico. Todos os números de desempenho abaixo são provenientes de uma única execução histórica desta implementação e servem como ponto de partida para seus próprios testes, não como uma vantagem validada herdada da pesquisa. O desempenho passado não garante resultados futuros.


Principais recursos

Fiel ao artigo

  • Todas as quatro estratégias cruzadas estão implementadas: as duas pernas reversas e as duas pernas de reversão, e não apenas um par simplificado.
  • A saída adaptativa de cruzamento alterna entre o cruzamento de distribuição completa e o gatilho de reversão de extremo por regime, exatamente como especificado no artigo.
  • O fractil segue a definição do apêndice do artigo, ou seja, a CDF empírica simples da janela. Quando o texto do artigo e seu apêndice divergem, prevalece o apêndice, e a discrepância é documentada na fonte, em vez de ser corrigida silenciosamente.

Um cálculo, em um único lugar

  • Todos os números lidos pelas regras vêm do RMA_Engine por meio do CopyBuffer, de modo que o gráfico e as negociações não podem se desfasar. Não há uma segunda implementação da matemática para manter a sincronia.
  • As regras residem em uma classe que nunca chama OrderSend, lê uma posição ou imprime. Ela recebe uma estrutura de barra de dez campos e retorna uma instrução, o que torna a estratégia testável sem a necessidade de uma corretora.
  • A colocação de ordens, a contabilidade e o risco residem em uma classe separada, mantida à parte das regras pelo mesmo motivo.

Decisões baseadas apenas em dados finais

  • Os buffers são lidos a partir da posição 1, nunca da 0. A barra zero ainda está se formando e todas as regras são escritas para uma barra cujo fechamento seja definitivo.
  • Uma barra de aquecimento, uma lacuna no histórico ou um mecanismo que ainda não tenha feito o cálculo produzem a mesma resposta: nenhuma decisão sobre essa barra. Nada é inferido a partir de uma leitura ausente.
  • A determinação de se a conta estava aberta é feita antes de qualquer ação ser realizada, portanto, uma barra é ou uma barra de saída ou uma barra de entrada, nunca ambas.

Execução que resiste a uma corretora real

  • Uma operação de “fechamento e reversão” solicita que o corretor liquide a posição no momento em que a operação oposta deve ser executada, e o corretor nem sempre atende à primeira tentativa. Fechamentos recusados são retidos e tentados novamente a cada tick até que sejam executados, em vez de serem descartados, e uma reversão nunca é empilhada sobre uma posição que ainda esteja em andamento.
  • A entrada é registrada com base no preço efetivamente executado, e não no preço solicitado; assim, o slippage não afeta os valores em pips que alimentam as regras de saída e a pontuação de otimização.
  • O tamanho do lote é limitado ao mínimo, máximo e intervalo do símbolo.
  • A posição aberta é armazenada em variáveis globais; assim, uma posição que sobrevive à reinicialização do terminal é retomada como a operação que realmente era, e não como uma posição órfã.

Controles operacionais

  • Stop loss e take profit fixos opcionais em pips, um filtro de sessão opcional que lida corretamente com uma janela que se estende até a meia-noite e um nivelamento opcional no final da sessão. Esses são controles de implantação, e não parte da estrutura: o artigo se concentra no sinal e deixa o envelope de risco a cargo do operador.
  • Um bloco de status opcional no gráfico que mostra o fractil atual, o regime e a etapa, com marcadores de entrada e saída, além de um modo detalhado que registra cada recusa e o motivo dela. Ambos estão desativados por padrão, de modo que o EA opera silenciosamente.
  • Um critério de otimização personalizado que retorna pips líquidos ponderados pela raiz quadrada do número de negociações e da taxa de acertos; assim, uma sequência de quatrocentas negociações supera uma de quarenta com o mesmo resultado líquido, sem permitir que o número de negociações domine totalmente. Sequências com menos de dez negociações recebem nota zero.


Resultados do backtest

Uma única execução no par EURUSD, gráfico H2, de 01/05/2025 a 26/07/2026, aproximadamente catorze meses, com 100% de ticks reais e um depósito de 10.000 USD com alavancagem de 1:500.

Métrica
Valor
Lucro líquido total
362,51 com um depósito de 10.000
Total de operações
138
Fator de lucro
1,15
Índice de Sharpe
0,82
Queda máxima do patrimônio líquido
463,87 (4,52%)
Operações lucrativas
46,38%
Ganho médio / perda média
42,80 / -30,82
Taxa de ganho em posições compradas/vendidas
46,58% / 46,15%

A taxa de ganhos fica um pouco abaixo da metade, e o sistema permanece lucrativo porque o ganho médio é maior do que a perda média, o que corresponde ao perfil de retorno de uma estratégia de reversão à média que permite que suas reversões se desenvolvam. As posições compradas e vendidas apresentam desempenho quase idêntico, como esperado de uma estrutura que é simétrica por definição.

A execução não utilizou os padrões fornecidos. Seis parâmetros diferiram, e carregar o EA tal como é fornecido não reproduzirá esses números. Os valores testados foram: InpRegimeLookback 200 (padrão 20), InpRangeHistoryLookback 400 (padrão 100), InpExitTargetUpper 0,9 e InpExitTargetLower 0,1 (ambos com padrão 0,0, o que seleciona a lógica de extremos em vez de uma meta de fractil direta), InpStopLossPips 50 (padrão 0, sem stop) e InpUseTimeFilter verdadeiro com horários de 01 a 23 (padrão desativado). Todos os demais parâmetros permaneceram em seus valores padrão.

Curva de patrimônio do Strategy Tester para o Expert Advisor RMA

A curva de patrimônio líquido ao longo do período de teste: participação constante com recuos moderados, em vez de uma única sequência de sorte.

Relatório do Strategy Tester para o Expert Advisor RMA

O relatório completo do Strategy Tester para a execução, mostrando as configurações, as estatísticas das operações e as curvas de saldo e patrimônio líquido.


Instalação e estrutura de arquivos

Um Expert Advisor, um indicador obrigatório, um painel opcional e sete cabeçalhos. O layout é importante: o EA carrega o mecanismo pelo caminho relativo RMA\RMA_Engine e os cabeçalhos são incluídos como <RMA\...>, portanto, cada arquivo deve estar em sua subpasta RMA. Compile os indicadores antes do EA.

Arquivo
Função
Descrição
Experts\RMA\RMA.mq5
Orquestrador
Todas as entradas, a chamada iCustom, a leitura do estado do mecanismo a cada barra e a ordem em que o mecanismo de sinais, o gerenciador de negociações e a exibição são executados. Não contém lógica de estratégia própria.
Indicadores\RMA\RMA_Engine.mq5
Indicador obrigatório
Calcula todas as séries RMA e publica dezenove buffers. O EA não será inicializado sem ele.
Indicadores\RMA\RMA_Panel.mq5
Painel opcional
Espelha um grupo de buffers do mecanismo em uma subjanela com escala própria, para as séries que não são legíveis no eixo de 0 a 1 do mecanismo. Apenas para exibição.
Include\RMA\RmaTypes.mqh
Vocabulário compartilhado
As enumerações de regime e de estado cruzado e o mapa de buffers. O único ponto em que o EA, o mecanismo e os painéis estão em concordância.
Include\RMA\RmaCore.mqh
Núcleo numérico
O SMA, a família RMA, a distribuição de retornos normalizada e a função fractil.
Include\RMA\RegimeDetector.mqh
Classificação de regimes
Expansão, contração e os dois estados de transição, a partir das Razões de Extremos Relativos (Relative Extremum Ratios), corroboradas pela inclinação, pelo escore z e pelo coeficiente de variação. É isso que seleciona a regra de saída.
Incluir\RMA\AdverseMonitor.mqh
Consistência direcional
d_med_w, o fractil centrado na mediana, e D_k, a proporção de alta de seus passos recentes. Alimenta a saída de segurança.
Include\RMA\SignalEngine.mqh
As regras
Ativação, as quatro etapas de entrada, as três saídas e a alternância adaptativa entre elas, a saída de segurança, o bloqueio de reentrada e a reversão. Recebe uma barra, retorna uma instrução e não altera nada mais.
Incluir\RMA\TradeManager.mqh
Execução
Colocação de ordens, fixação de lotes, stops e metas, sincronização de posições, fechamento repetido, controles de sessão, persistência de pernas, contabilização de pips e pontuação de otimização.
Include\RMA\RmaDisplay.mqh
Status no gráfico
O bloco de status e os marcadores de entrada e saída. Os rótulos são criados uma única vez e atualizados no local, portanto, não há objetos duplicados nem tremulação na redesenhação.


Parâmetros de entrada

Nove grupos de entrada. Os dois primeiros são encaminhados ao mecanismo e alteram o que ele calcula; os demais regem as regras, as ordens e a exibição.

Grupo
Parâmetros-chave
Padrões
Janela
InpWindowSize, InpSmoothingPeriod
106 barras, 10
Detecção de regime
InpEpsilonLow, InpEpsilonHigh, InpSlopeThreshold, InpRegimeLookback, InpVariationRatioLow, InpZScoreExpansion, InpRangeHistoryLookback
0,15, 3,0, 0,0001, 20, 0,1, 1,0, 100
Movimento adverso
InpUseAdverseExit, InpAdverseLookback, InpAdverseThresholdDown, InpAdverseThresholdUp
true, 10 barras, 0,3, 0,7
Entradas
InpEntryUpperThreshold, InpEntryLowerThreshold, InpEntryMinDiff, InpCloseThreshold
0,9, 0,1, 0,0 (qualquer virada conta), 0,1
Saídas
InpExitTargetUpper, InpExitTargetLower, InpExitProfitMinPips
0,0, 0,0 (ambos em zero selecionam a lógica de extremo), 0,0 (desativado)
Negociação
InpLotSize, InpMagicNumber, InpTradeComment
0,1 lote, 20251230, “RMA”
Risco
InpStopLossPips, InpTakeProfitPips, InpUseTimeFilter, InpStartHour, InpEndHour, InpEODClosePositions
0 (nenhum), 0 (nenhum), falso, 8, 20, falso
No gráfico
InpShowDisplay, InpAttachEngine, InpShowPanels, InpPanelAdverse, InpPanelRmaValues, InpShowRegimeBand, InpVerbose
todos desativados por padrão, para que o EA opere silenciosamente
Observação: as duas entradas de janela e o grupo de regime são repassados diretamente para o RMA_Engine; portanto, alterá-los modifica as séries que as regras analisam. Se você também anexar o mecanismo ao gráfico manualmente, atribua a ele os mesmos valores; caso contrário, o gráfico representará uma janela diferente daquela em que a negociação está ocorrendo.


Base de pesquisa

A implementação segue:

  • Daniel Alexandre Bloch, “A Course on Systematic Trading with RMA”, disponível no SSRN.

O artigo contribui com a estrutura e sua mecânica: a representação por fractil, as quatro estratégias cruzadas e a Saída por Crossover Adaptativo, que seleciona entre elas de acordo com o regime. Ele não contribui com um histórico de resultados, já que sua seção de Resultados foi deixada como trabalho futuro na versão em questão. O valor oferecido é uma estratégia expressa em uma escala que tem o mesmo significado em todos os instrumentos, além de uma base para seus próprios testes em outros símbolos e intervalos de tempo ou com a janela calibrada por ativo, conforme pretende o artigo.

Um artigo complementar deriva a matemática, orienta pela implementação de cada módulo e explica cada uma das quatro vertentes e a lógica de saída em detalhes: Implementação da Estrutura da Média Móvel Relativa (RMA) de Bloch em MQL5.

Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/75473

Session Scalping Zones Session Scalping Zones

Indicador de scalping baseado em sessões para o MetaTrader 5. Ele marca automaticamente a máxima e a mínima da sessão asiática e, em seguida, gera sinais de scalping na abertura de Londres, quando o preço rompe ou retesta esses níveis. O indicador traça faixas dinâmicas de sessão, envia alertas e notificações push e inclui filtros opcionais de tendência, volume e tempo. Funciona em gráficos M1, M5 e M15 para qualquer símbolo.

Trading Panel EA Trading Panel EA

O Pro Manager é um assistente de negociação MT5 completo, desenvolvido para empresas de negociação por conta própria e traders profissionais. Execute negociações mais rapidamente, gerencie posições de forma mais inteligente, controle riscos com eficiência e automatize tarefas diárias de negociação com ferramentas poderosas, como Break-even, TP médio, gerenciamento de Magic Number e Auto Grid.

Accumulation/Distribution Accumulation/Distribution

O Indicador Accumulation/Distribution (Acumulação/Distribuição ou A/D) é determinado pelas mudanças de preço e volume.

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

O Indicador Acceleration/Deceleration (Aceleração/Desaceleração ou AC) mede a aceleração e a desaceleração da força motriz atual do mercado.