Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 19
- Avaliação:
- Publicado:
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Visão geral
Esta é uma adaptação fiel para o MetaTrader 5 da estrutura da Média Móvel Relativa (RMA), introduzida pelo Dr. Daniel Alexandre Bloch no curso “A Course on Systematic Trading with RMA”. Uma média móvel clássica reduz uma janela de preços a um único número suavizado, que indica o nível, mas não a raridade: um fechamento alto pode estar distante de todos os outros valores ao seu redor ou ser alto e, ainda assim, perfeitamente comum dentro da janela. A RMA responde à segunda questão. Ela trata a janela de acompanhamento como uma pequena distribuição, classifica o preço atual dentro dela e apresenta essa classificação em uma escala [0, 1] que tem o mesmo significado em todos os instrumentos e em todos os regimes de volatilidade.
A estrutura possui três camadas, e o código as reflete exatamente:
- A SMA da janela móvel de W fechamentos, tratada como o equilíbrio local e fixada em zero.
- A família RMA, o desvio de cada ponto de referência da janela em relação a esse equilíbrio, expresso como a razão pura sma / x - 1, avaliada no último fechamento, no primeiro fechamento, no fechamento intermediário e nos valores mínimo e máximo da janela. Por serem razões, são independentes de escala e comparáveis entre símbolos.
- Os fractis, que reexpressam a janela como retornos normalizados (fechamento / SMA - 1) e classificam os membros atual, mínimo e máximo dentro dessa distribuição. Trata-se da CDF empírica simples, retirada literalmente da definição do apêndice do artigo, e f_w é a série na qual tudo a jusante é efetivamente negociado.

A construção: uma janela deslizante de preços de fechamento se transforma em uma SMA; os preços de fechamento são reexpressos como uma distribuição de retornos normalizados em torno dessa SMA; e a classificação do preço atual dentro dessa distribuição torna-se seu fractil na escala [0, 1].
Além disso, duas métricas derivadas são fornecidas com o mecanismo. Um detector de regime classifica a dispersão dos retornos normalizados como em expansão, em contração ou em transição, utilizando as Razões de Extremos Relativos do artigo, corroboradas por uma inclinação de mínimos quadrados, um z-score e um coeficiente de variação. Um monitor de movimentos adversos publica d_med_w, o fractil recentrado na mediana, e D_k, a proporção de variações recentes entre barras que foram de alta, o que constitui uma leitura de consistência direcional que torna a afirmação “esse movimento está indo na direção oposta” precisa, em vez de uma questão de opinião.
Dois programas estão incluídos. O RMA_Engine calcula todas as séries e as publica como buffers, de modo que um Expert Advisor ou outro indicador possa ler os números exatos no gráfico, em vez de ter que reimplementar os cálculos matemáticos e ficar desfasado. O RMA_Panel não calcula absolutamente nada: ele localiza o mecanismo já vinculado ao gráfico e espelha um grupo de seus buffers em uma subjanela própria, pois a família RMA é medida em frações de um por cento e o d_med_w está centralizado em zero, de modo que nenhum dos dois é legível no eixo de 0 a 1 do mecanismo.
O que o mecanismo desenha
O mecanismo abre uma janela separada com seu eixo vertical fixado em [0, 1] e desenha seis gráficos:
| Gráfico | Aparência | O que indica |
|---|---|---|
| Regime | Faixa colorida em toda a altura atrás de tudo | Verde para expansão, vermelho para contração, âmbar para expansão em transição, azul para contração em início. Nada é desenhado enquanto o regime ainda estiver indeciso; assim, um aquecimento não começa com uma mancha de cor que signifique “ainda sem resposta”. |
| f_w | Linha azul grossa | O fractil do fechamento atual: a posição do último retorno normalizado dentro de sua própria janela. Essa é a série principal. |
| f_min / f_max | Pontilhado em vermelho e verde | Os fractis do mínimo e do máximo da janela, o piso e o teto do envelope pelo qual f_w percorre. |
| alpha_lo_mean / alpha_hi_mean | Linhas roxas e laranja | Níveis de quantis suavizados: uma MME de f_w e de seu complemento, proporcionando um pano de fundo mais lento contra o qual um pico em f_w se destaca como um pico. |
Três guias horizontais são traçadas nos dois limiares de entrada e na mediana. Elas são construídas a partir das mesmas entradas fornecidas ao Expert Advisor associado, em vez de serem codificadas estaticamente; assim, reajustar os limiares move as guias junto com eles, em vez de deixar o gráfico silenciosamente em desacordo com as regras.
Como interpretar. Um f_w encostado na guia superior significaque o fechamento atual está no ponto mais alto de tudo o que sua janela já registrou, que é onde uma travessia descendente se inicia; um f_w na guia inferior representa o caso oposto. A mediana é o nível abaixo do qual uma travessia ainda deve permanecer, e cruzá-la representa a saída natural. A faixa colorida fornece o contexto para essa leitura, já que a estratégia do artigo consiste em abrir posições no início de uma fase de expansão e fechá-las durante a contração.
Configuração recomendada
| Configuração | Valor recomendado | Notas |
|---|---|---|
| Símbolo | Qualquer | A escala de fractis é autonormalizante; portanto, não é necessária nenhuma calibração por símbolo para que a leitura seja significativa. O desenvolvimento e as capturas de tela abaixo utilizaram o par EURUSD. |
| Intervalo de tempo | M30 a H4 | Funciona em qualquer intervalo de tempo. A janela é medida em barras; portanto, um intervalo de tempo mais curto com o mesmo valor de W simplesmente descreve um trecho mais curto do mercado. |
| Tamanho da janela (W) | 106 barras | O valor padrão. O artigo prevê que a janela seja calibrada por ativo; portanto, trata-se de um ponto de partida, e não de uma recomendação. |
| Histórico necessário | W + barras de lookback do regime | 126 barras com os valores padrão. Cada gráfico começa onde seu próprio módulo pode responder pela primeira vez, e não no aquecimento mais longo do conjunto; portanto, os fractis aparecem antes da faixa de regime. |
Principais recursos
Fiel ao artigo
- O fractil segue a definição do apêndice do artigo, f_i = (1 / |W_i|) * sum_j I( W_ij <= v_i ), implementada exatamente como descrita. Quando o texto do artigo e seu apêndice divergem, o apêndice prevalece e a discrepância é documentada na fonte, em vez de ser corrigida silenciosamente.
- A classificação de regime segue as Relações de Extremo Relativo, testando primeiro a contração, pois é a interpretação mais rigorosa e requer corroboração, enquanto a expansão é deliberadamente mais fácil de alcançar.
- Não foram adicionados suavizamentos, limites ou filtros que a fonte não exija.
Criado para ser lido por outros programas
- Todas as dezenove séries são expostas como buffers de indicadores, seis plotadas e treze apenas para cálculo, de modo que um EA possa ler os mesmos números que o gráfico mostra e os dois nunca possam discordar.
- O mapa de buffers reside em um único cabeçalho compartilhado, de modo que o mecanismo, os painéis e qualquer consumidor utilizam um único vocabulário, em vez de se distanciarem sem que nenhum erro de compilação alerte alguém.
- A matemática reside inteiramente em classes “header-only”, sem dependência de gráficos ou ordens; assim, o mesmo código pode acionar um script ou um ambiente de teste sem a necessidade de stubs.
Recálculo incremental correto
- Cada passagem recalcula a partir de prev_calculated-1, e não de prev_calculated. A barra nesse índice ainda estava se formando na chamada anterior e seu fechamento só se tornou definitivo agora; deixá-la como está congelaria um valor incompleto em todas as séries que dependem dela, e a diferença de fractil entre barras se tornaria uma diferença entre dois números incompletos.
- As barras de aquecimento contêm EMPTY_VALUE em vez de zero; assim, um consumidor que chegue no meio do aquecimento vê “ausente” em vez de um número plausível.
- A classificação de regime é dependente do caminho dentro de sua faixa de transição; por isso, mantém-se um histórico por barra em vez de um campo contínuo, o que permite que uma passagem incremental retome a cadeia a partir da barra anterior.
Painéis que utilizam um segundo eixo
- O mecanismo abre automaticamente os painéis solicitados, verificando primeiro o gráfico para que um modelo que já os contenha, ou uma reinicialização após uma alteração na entrada, não empilhe uma segunda cópia atrás da primeira. Os painéis são removidos junto com o mecanismo, mas somente na remoção efetiva; assim, ao mudar o intervalo de tempo, você retorna ao layout em que estava.
- O painel localiza o mecanismo comparando seu nome abreviado no gráfico, em vez de criar seu próprio identificador; assim, ele nunca se ramifica em um segundo cálculo, com parametrização diferente, desenhado ao lado do cálculo real.
Capturas de tela

A janela do mecanismo no EURUSD, M30: f_w com seu envelope e as médias quantílicas suavizadas, sobre o fundo colorido do regime.

O painel adverso: d_med_w centralizado em zero com D_k acima dele, a leitura de consistência direcional.

O painel da família RMA: rma_w com o mínimo e o máximo da janela em sua própria escala, o envelope pelo qual o preço atual passa.
Instalação e estrutura de arquivos
Dois indicadores e quatro arquivos de cabeçalho. O layout é importante: o mecanismo carrega o painel pelo caminho relativo RMA\RMA_Panel, e os cabeçalhos são incluídos como <RMA\...>, portanto, ambos devem estar em suas respectivas subpastas RMA.
| Arquivo | Função | Descrição |
|---|---|---|
| Indicators\RMA\RMA_Engine.mq5 | Indicador principal | Executa os três módulos em barras em tempo real, vincula todos os dezenove buffers, desenha os seis gráficos e a faixa de regime e abre os painéis. Não contém cálculos matemáticos próprios. |
| Indicadores\RMA\RMA_Panel.mq5 | Painel de repasse | Posiciona o mecanismo no gráfico e espelha um grupo de seus buffers em uma subjanela com escala própria. Dois modos: movimento adverso (D_k, d_med_w) e a família RMA (rma_w, rma_min, rma_max). |
| Include\RMA\RmaTypes.mqh | Vocabulário compartilhado | As enumerações de regime e entre estados, o mapa de buffers e as contagens de gráficos e paletas. O único ponto em que o mecanismo, os painéis e qualquer consumidor concordam. |
| Include\RMA\RmaCore.mqh | Núcleo numérico | O SMA, a família RMA de cinco membros, a distribuição de retornos normalizados, a função de fractil, o intervalo da janela e os limites alfa suavizados. |
| Include\RMA\RegimeDetector.mqh | Classificação de regimes | Expansão, contração e os dois estados de transição, a partir do envelope da razão de extremos corroborado pela inclinação, pelo z-score e pelo coeficiente de variação. |
| Include\RMA\AdverseMonitor.mqh | Consistência direcional | d_med_w, o fractil centrado na mediana, e D_k, a proporção ascendente de seus recentes saltos de barra para barra. |
Lendo os buffers a partir do seu próprio código
Obtenha um identificador com iCustom no RMA\RMA_Engine e leia qualquer índice abaixo com CopyBuffer. Os índices de 0 a 6 correspondem às séries plotadas e de 7 a 18 são apenas de cálculo, mas todos os dezenove podem ser lidos.
| Índice | Série | Significado |
|---|---|---|
| 0, 1 | Faixa de regime, índice de cor | A altura do plano de fundo e sua posição na paleta. Não contém nenhuma medida, apenas uma cor. |
| 2 | f_w | Fractil do último retorno normalizado da janela, no intervalo [0, 1]. A série primária. |
| 3, 4 | f_min, f_max | Fractis do mínimo e do máximo da janela. |
| 5, 6 | alpha_lo_mean, alpha_hi_mean | Média exponencial (EMA) dos limites alfa inferior e superior. |
| 7 | sma | Média móvel simples da janela, em unidades de preço. |
| 8 a 12 | rma_w, rma_1, rma_mid, rma_min, rma_max | A família RMA: sma dividida pelo último, primeiro, médio, mínimo e máximo dos preços de fechamento, menos um. |
| 13 | range | Dispersão dos retornos normalizados da janela, o valor lido pelo detector de regime. |
| 14, 15 | alpha_lo, alpha_hi | O nível do quantil bruto ocupado por f_w e seu complemento. |
| 16 | regime | A numeração do regime como um valor duplo: 0 expansão, 1 contração, 2 rolagem, 3 rompimento, 4 desconhecido. |
| 17, 18 | D_k, d_med_w | Consistência direcional e o fractil centrado na mediana. |
Parâmetros de entrada
| Grupo | Parâmetros | 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 | InpAdverseLookback | 10 barras |
| Linhas de referência | InpEntryUpperThreshold, InpEntryLowerThreshold | 0,9, 0,1 |
| Painéis | InpAutoAttachPanels, InpPanelAdverse, InpPanelRmaValues, InpAdverseThresholdDown, InpAdverseThresholdUp | verdadeiro, verdadeiro, falso, 0,3, 0,7 |
| Fundo do regime | InpShowRegimeBand mais uma cor por regime | verdadeiro, verde escuro / vermelho / âmbar / azul |
Base de pesquisa
A implementação segue:
- Daniel Alexandre Bloch, A Course on Systematic Trading with RMA, disponível no SSRN.
Vale a pena deixar clara uma ressalva, pois ela vem da própria fonte: a seção de Resultados do artigo é deixada como trabalho futuro. Ele oferece uma estrutura e seus mecanismos, não um histórico empírico. O que este indicador oferece é uma descrição do estado do mercado em uma escala que tem o mesmo significado em qualquer lugar, o que serve como base para seus próprios testes, e não como uma vantagem validada herdada da fonte.
Um artigo complementar explica a matemática e a implementação de cada módulo, além de construir o Expert Advisor que opera com base nesses buffers: 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/75472
SpreadAudit – spread real da corretora a partir do histórico em M1
O script coleta o spread real da sua corretora a partir do campo “spread” das barras M1 e exibe a mediana, o 90º e o 99º percentis em unidades de preço, em pontos e em frações de ATR, além de exportar para um arquivo CSV o spread médio e máximo para cada hora do dia. É necessário para testar estratégias com base nos custos reais da sua conta, e não com base em um spread “típico” estimado de cabeça.
Clock (Spread)
O que este indicador faz O Clock (Spread).mq5 é um indicador de gráfico do MetaTrader 5 que exibe uma pequena legenda de texto no canto do gráfico, mostrando: Contador regressivo até o fechamento da vela atual (no formato HH:MM:SS ou MM:SS, dependendo do período) Spread atual (Ask − Bid, em pontos), exibido entre parênteses ao lado do contador. Histórico de alterações: Versão 2.20: - O spread agora muda de cor dinamicamente de acordo com a direção (verde = aumentando, vermelho = diminuindo) - Adicionadas entradas configuráveis para as cores do spread
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.
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.