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:
- 13
- Avaliação:
- Publicado:
-
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.

Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/76632
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
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
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 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.