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
Indicadores

Relative Moving Average Indicator - indicador para MetaTrader 5

Visualizações:
19
Avaliação:
(2)
Publicado:
Freelance MQL5 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.

Observação: esta não é a “RMA” que algumas plataformas de gráficos apresentam (o suavização de Wilder, uma variante da EMA). Apesar da sigla em comum, trata-se de um objeto totalmente diferente. Aqui, RMA refere-se à construção de Bloch: estatísticas de preço medidas em relação a uma média móvel e projetadas sobre uma distribuição de retornos normalizados.

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.

Construção da RMA: janela de preços → SMA → distribuição normalizada → fractil

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

Janela do oscilador RMA_Engine com fractiles, banda alfa e fundo de regime no EURUSD M30

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.

Gráfico adverso com D_k e d_med_w no EURUSD M30

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

Painel de passagem da família RMA com rma_w, min e max no EURUSD M30

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.
Atenção: cada grupo de entrada no indicador ocupa um espaço de parâmetro na chamada do iCustom, mesmo que não contenha nenhum valor. Se omitir um, os parâmetros restantes avançam uma posição, o que carrega um indicador de trabalho configurado com os números errados e falha silenciosamente. Passe as entradas exatamente na ordem em que estão declaradas, incluindo os grupos.


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
Observação: os painéis são ignorados automaticamente em uma execução não visual do Strategy Tester; portanto, nada é exibido onde não há gráfico para exibi-los.


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 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) 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 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) 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.