Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Telegram!
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
Scripts

RepaintTest - measure whether a drawing indicator repaints - script para MetaTrader 5

Yogeswaran Suppiah
Yogeswaran Suppiah
Desenvolvedor independente de MetaTrader baseado na Malásia. Publico ferramentas de análise gráfica para traders discricionários. No MQL5 desde 2015.
| Portuguese English Русский 中文 Español Deutsch 日本語 한국어 Français Italiano Türkçe
Visualizações:
13
Avaliação:
(2)
Publicado:
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Quase todas as descrições de indicadores contêm a expressão “sem repintura”. Quase nenhuma contém um número. A expressão não pode estar errada, pois não há nenhum procedimento associado a ela — tanto um desenvolvedor que nunca verificou quanto um que verificou exaustivamente escrevem a mesma frase. Este script substitui a expressão por uma medida.

A invariante

Uma vez que uma barra tenha fechado e sido processada, nenhum objeto que o indicador tenha desenhado nela pode, jamais, sofrer alterações. Não se mover, não mudar de cor, não alterar seu texto e não desaparecer. Essa é uma afirmação que pode ser falsa, e é por isso que vale a pena testá-la.

Método

Um símbolo personalizado é inicializado com um trecho inicial de histórico real; seu indicador é anexado por meio de um modelo, e cada objeto que ele desenha é registrado. Mais barras são acrescentadas e o gráfico é submetido a um recálculo completo, de modo que o indicador reconstrói cada objeto do zero com base em um histórico mais longo. Cada objeto da passagem anterior que se encontra em uma barra já fechada é então consultado na nova passagem e comparado campo por campo: ambos os horários de referência, ambos os preços de referência, cor e texto. Repita por quantas etapas você desejar.

Uma reconstrução completa é um teste mais difícil do que um tick incremental. O indicador precisa reproduzir um mapa idêntico a partir de um histórico mais longo, usando índices de matriz diferentes, sem nenhuma memória do que desenhou da última vez. É exatamente isso que um usuário aciona ao rolar a tela para trás o suficiente para que o terminal busque barras mais antigas, e é aí que os nomes de objetos indexados pelo ÍNDICE da barra, em vez do TEMPO da barra, deixam de funcionar.

O que importa

Alterações e desaparecimentos são contados separadamente, e apenas uma alteração significa que a afirmação é falsa. A maioria dos indicadores de desenho elimina objetos antigos propositalmente assim que um limite é excedido; portanto, um desaparecimento geralmente se deve à sua própria configuração de `MaxObjects` ou `HistoryBars`, e não a um defeito. Execute com esses limites desativados.

Uma execução que não comparou nada é relatada como INCONCLUSIVA, nunca como aprovada. O bug mais perigoso que um ambiente de teste pode ter é relatar sucesso em uma execução vazia, já que esse é o número que acaba sendo citado.

A saída é um arquivo CSV na pasta MQL5\Files, com uma linha por símbolo, período e etapa, contendo as contagens de objetos comparados, alterados e desaparecidos, além do primeiro objeto em questão. Some a coluna “marks_compared” e você terá o número que pode publicar — e o arquivo que o comprova.

Uso

1. Defina “Prefixo” como o prefixo do nome do objeto do seu indicador. Liste em “Excluir” tudo o que muda por padrão: uma legenda redesenhada a cada tick, um cronômetro de contagem regressiva. Esses não são marcadores. Declará-los aqui é mais honesto do que filtrá-los silenciosamente.

2. Anexe seu indicador a um gráfico com todas as restrições de desenho desativadas e salve esse gráfico como um modelo. Defina “Modelo” para ele.

3. Aumente o valor de “SettleMs” até que a contagem de marcas na primeira passagem pare de variar entre as execuções. Um valor muito baixo não gera erros — mas causa desaparecimentos fantasmas.

4. Quebre algo propositalmente uma vez: desloque um objeto em uma barra e confirme se o script relata o problema, identificando o campo. Um conjunto de testes que você nunca viu falhar ainda não é prova de nada.

O que isso não vai lhe dizer

Se o indicador é preciso ou se seus sinais são confiáveis. Ele responde a uma pergunta específica, e essa é a única razão pela qual a resposta tem algum valor.

Dois testes que parecem testes, mas não são — ambos já foram testados e rejeitados antes deste: o Strategy Tester, no qual os objetos de um indicador baseado em iCustom não são enumeráveis por um EA no MT4; e a variação da própria entrada HistoryBars do indicador em um gráfico ao vivo, o que altera o ponto de início do loop, mas deixa rates_total e todos os índices da matriz inalterados, de modo que a classe de bug que este código se destina a detectar nunca é acionada.

Gratuito e sem necessidade de atribuição de autoria. Se ele encontrar algo em seu código, ficaria feliz em saber o que foi.

Resultado do RepaintTest: 199.984 verificações de invariantes, 0 alteradas, 0 desaparecidas

Como funciona o teste: gerar um ponto inicial, adicionar barras, forçar uma reconstrução completa, comparar

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

RSI Exhaustion Reversal - EURUSD RSI Exhaustion Reversal - EURUSD

Open-source EURUSD Expert Advisor for MetaTrader 5 Strategy Tester, based on RSI exhaustion signals, ATR-based exits and volatility-adjusted spread filtering.

Sniper Gold Hybrid Recovery EA Sniper Gold Hybrid Recovery EA

EA de recuperação em cesta para XAUUSD no gráfico M15 com espaçamento ATR adaptativo, validação da estrutura LL/LH, filtragem dinâmica do RSI, detecção de quedas bruscas, filtro de notícias e ajuste inteligente de posições.

Support Resistance zig zag based Support Resistance zig zag based

O “Support Resistance Zig Zag” é um indicador de Price Action projetado para mapear de forma automática e dinâmica os níveis de suporte, resistência e áreas de transição (Flip Zones) no gráfico. Ele se concentra exclusivamente no mapeamento claro da estrutura de preços e na identificação das principais áreas de reação (SBR e RBS). Além disso, inclui um painel interativo para monitorar a tendência do mercado em tempo real.

ZoneUS30 — Reversion and Positive Swap on Your Side in US30 ZoneUS30 — Reversion and Positive Swap on Your Side in US30

ZoneUS30 is a simple US30 Expert Advisor focused on SELL opportunities after upward price extensions. The strategy combines a mean-reversion concept with a carry-trade idea: when short positions receive positive overnight swap, the EA can benefit both from a price correction and from holding the position over time. Designed for US30 and intended for experimental and educational use. Counter-trend trading involves significant risk, especially with high lot sizes.