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

RegimeRouter — classificador de tendência/faixa com um registro de taxa de vitórias por regime - expert para MetaTrader 5

Ali Akbar
Ali Akbar
  • MQL5 Developer & Algorithmic Trading Specialist em  Freelance
  • Paquistão
  • 1596
Hi, I'm Ali. 24 years old, trading for around 5 years, and developing MQL5/MQL4 tools. I mainly work on automating manual strategies, fixing broken EA logic, and building clean indicators. I care more about clean architecture and proper risk management than over-complicated code. Always down to talk
| Portuguese English Русский 中文 Español Deutsch 日本語 한국어 Français Italiano Türkçe
Visualizações:
16
Avaliação:
(2)
Publicado:
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

RegimeRouter — classificador de tendências/faixas com um registro de taxa de vitórias por regime


O problema

Uma regra que segue tendências perde dinheiro em um intervalo. Uma regra de reversão à média é destruída em uma tendência. A maioria dos EAs escolhe uma delas e torce para que o mercado coopere. A solução comum é um único filtro ADX. O ADX mede apenas uma coisa — a força direcional — e não diz nada sobre se os retornos são realmente persistentes ou se revertem à média.

Como ele classifica

Em cada barra fechada, ele mede três propriedades independentes da série de preços recente.

  • ADX — força direcional clássica.
  • Exponente de Hurst — análise da faixa reescalonada (R/S) dos retornos logarítmicos. Acima de 0,5, a série é persistente. Abaixo de 0,5, é antipersistente. Em 0,5, trata-se de um passeio aleatório.
  • Autocorrelação de defasagem 1 — se um movimento tende a ser seguido por outro movimento na mesma direção ou por uma reversão repentina.

Cada um deles dá um voto. Mais um para tendência, menos um para variação, zero para indeciso. Os votos são somados. Se a soma ultrapassar o valor de `InpMinVotes` em qualquer direção, o regime é TENDÊNCIA ou VARIAÇÃO. Caso contrário, é NEUTRO e o EA não opera. Se qualquer um dos três não puder ser calculado, ele não vota e a barra é considerada NEUTRA. O importante é exigir consenso. Um indicador sozinho é como jogar uma moeda com etapas extras.

Como ele opera

Regime Módulo
TENDÊNCIA Quebra da máxima ou mínima da barra N, considerada apenas na direção para a qual as EMAs rápida e lenta já estejam apontando.
FAIXA Negocie com base no z-score esticado do preço em relação à sua própria média móvel. Compre na cauda baixa, venda na cauda alta.
NEUTRO Nada.

O livro-razão

Cada posição é aberta com um número mágico de InpMagicBase mais o ID do regime, de modo que o regime que gerou uma operação fica registrado na própria operação. Ao iniciar, o EA percorre o histórico de operações, agrupa as operações por ID de posição e reconstrói o registro. Ele sobrevive a uma reinicialização e à transferência para outro terminal.

Para cada módulo, ele relata a taxa de ganho bruta, olimite inferior de 95% de Wilson, ataxa de ganho de equilíbrio implícita na média de ganho e na média de perda do próprio módulo, o fator de lucro e um veredicto.

TREND 96 tr 38 W bruta 39,6% wilson95 30,4% ponto de equilíbrio 34,2% PF 1,26 líquido +734,84 [NÃO COMPROVADO]

Os dois números do meio são os que importam. Um seguidor de tendência de 2R é lucrativo acima de aproximadamente 34%. Um fade de 1R precisa de mais de 50%. E uma taxa de vitórias bruta de seis negociações não é prova de nada. O veredicto é simplesmente se o limite inferior ultrapassa o ponto de equilíbrio, que é a única versão de “esse módulo funciona” que se sustenta em uma amostra pequena.

A opção A/B

O InpForceRegime desativa o roteador e força todas as negociações a passarem por um único módulo. Execute o mesmo símbolo e o mesmo período três vezes — AUTO, depois ALWAYS_TREND, depois ALWAYS_RANGE — e você obterá uma medição direta de se o classificador está agregando algum valor. As três leituras ainda são registradas em uma execução forçada, para que você possa ver como o módulo forçado se saiu nas barras que o roteador teria rejeitado.

Faça isso antes de confiar nele. A ideia do roteador é uma hipótese, não um resultado.

Backtest

H1 · 01/01/2026 a 20/09/2026 · 10.000 USD · Atraso aleatório ativado · todas as configurações padrão. Dois símbolos, ambos exibidos.

EURUSD H1

Métrica Valor
Lucro líquido total +900,42
Lucro bruto / prejuízo bruto 3 712,84 / 2 812,42
Fator de lucro 1,32
Retorno esperado 9,00
Fator de recuperação 1,71
Total de operações 100
Queda máxima do saldo 505,32 (4,56%)
Queda máxima do patrimônio líquido 527,80 (4,76%)
Módulo Operações Operações lucrativas Bruto Mínimo de 95% de Wilson Líquido
TENDÊNCIA 96 38 39,6% 30,4% +734,84
INTERVALO 4 4 100,0% 51,0% +165,58

96 + 4 = 100 operações e +734,84 + 165,58 = +900,42; portanto, o livro-razão bate exatamente com o relatório do testador.

XAUUSD H1 — mesmo EA, mesmas configurações, mesmo período

Métrica Valor
Lucro líquido total −1 554,11
Saldo final 8 445,89
Total de transações 85
Módulo Operações Operações lucrativas Bruto Mínimo de 95% de Wilson Líquido
TENDÊNCIA 78 26 33,3% 23,9% −1 576,33
INTERVALO 7 4 57,1% 25,0% +22,22

78 + 7 = 85 negociações e −1.576,33 + 22,22 = −1.554,11. Essa aqui dá prejuízo. Estou publicando-a ao lado da vencedora de propósito, porque uma lista que mostra apenas o símbolo que funcionou não diz nada sobre o EA.

O que esse resultado mostra e o que não mostra

Leia esta parte antes de usá-lo.

  • O módulo TREND não foi comprovado em nenhum dos símbolos. No EURUSD, seu lucro médio foi de 93,35 e seu prejuízo médio, de 48,49; portanto, foram necessárias cerca de 34,2% das negociações lucrativas apenas para atingir o ponto de equilíbrio. Ele teve 39,6% de negociações lucrativas. Mas o limite inferior de 95% de Wilson para essa taxa de ganhos é de 30,4%, o que está abaixo do ponto de equilíbrio. Com esse tamanho de amostra, o resultado é consistente com a ausência total de vantagem. No XAUUSD, o mesmo módulo apresentou 33,3% brutos e 23,9% no limite inferior, e teve prejuízo. Esse é o mesmo veredicto em ambos os casos: ainda não há evidências suficientes.
  • Seriam necessárias aproximadamente 320 operações com a taxa de acertos do EURUSD para que o limite inferior ultrapassasse o ponto de equilíbrio. Um símbolo no H1 gerou 100 em cerca de nove meses; portanto, trata-se de um problema de portfólio, e não de um problema de backtest mais longo.
  • O módulo RANGE é, essencialmente, não testado. Quatro operações no EURUSD, sete no XAUUSD. A taxa de acerto de 100% no EURUSD não significa nada, e é exatamente por isso que a coluna de Wilson existe.
  • Não há teste fora da amostra. Um período, um timeframe, dois símbolos.
  • A modelagem foi feita com “cada tick”, não com ticks reais. As saídas são determinadas pelo SL e TP da corretora, portanto, a trajetória intrabarral é importante. Reexecute a simulação com ticks reais antes de tirar conclusões.

Estou publicando isso porque o aparato de medição é a parte útil, não porque eu tenha uma vantagem validada para vender a você. Faça o teste A/B. Se o roteador não superar seus próprios dois módulos no seu símbolo, isso também vale a pena saber.

Notas de execução

  • Os sinais são avaliados no fechamento da barra, portanto, isso foi desenvolvido para M15 e acima.
  • As posições são abertas sem stops; em seguida, os stops são definidos a partir do preço real de execução. Um stop calculado a partir de um instantâneo pré-negociação já pode estar inválido no momento em que a ordem for executada.
  • Se a aplicação dos stops falhar, a posição é fechada imediatamente, em vez de ficar desprotegida.
  • As distâncias dos stops são limitadas ao nível de stops e ao nível de congelamento do próprio símbolo.
  • As saídas seguem os SL e TP da corretora. Não há fechamento forçado manual programado.
  • Stop móvel ATR opcional para negociações de tendência, aplicado no máximo uma vez por barra e nunca na barra de entrada.
  • Uma posição por vez. Em uma conta de compensação, uma segunda ordem no mesmo símbolo se funde à posição existente, em vez de se tornar uma negociação separada, o que corromperia silenciosamente o livro-razão.
  • Dimensionamento de lotes com base no risco, um limite diário de perda, um limite diário de negociações, um filtro de spread, uma relação mínima entre take-profit e spread e um filtro de sessão opcional.

Principais parâmetros de entrada

Entrada Padrão O que faz
InpForceRegime Automático Força um módulo a realizar o teste A/B no classificador
InpMinVotes 2 Votos necessários, de um total de três, para confirmar um regime
InpADXTrendLevel / InpADXRangeLevel 25 / 20 Limites de votação do ADX
InpHurstBars 256 Barras de retornos atrás da estimativa de Hurst
InpHurstAdaptive desativado Avaliar o modelo de Hurst em relação à sua própria distribuição, em vez de níveis fixos
InpAutoCorrThreshold 0,05 A autocorrelação deve ultrapassar esse valor para ser considerada válida
InpBreakoutBars 20 Módulo de tendência: alta/baixa de N barras a ser rompida
InpRangeZEntry 2,0 Módulo de faixa: z-score no qual se deve reduzir a posição
InpRiskPercent 0,5 Risco por operação, % do saldo
InpMagicBase 772.000 O ID do regime é adicionado a este

Observação sobre o limiar de Hurst

Existe um parâmetro chamado InpHurstAdaptive , desativado por padrão.

A linha clássica de tendência/intervalo para o expoente de Hurst é 0,5. Na prática, essa linha está no lugar errado. O estimador R/S apresenta viés para cima em uma amostra finita; portanto, uma estimativa de 256 barras de uma série comum fica bem acima de 0,5. Medido no EURUSD H1, os valores ficaram em média em 0,568 e caíram abaixo de 0,45 apenas duas vezes em 419 observações. Contra uma faixa fixa de 0,45 / 0,55, esse indicador não está medindo nada. É um voto quase permanente a favor da TENDÊNCIA.

Ao ativar o `InpHurstAdaptive` , a escala absoluta é desativada e, em vez disso, é feita uma pergunta relativa: a série está mais persistente do que esse símbolo tem se mostrado recentemente? As últimas N leituras são mantidas e o voto é dado com base nos percentis desse histórico, em vez de em 0,5.

O custo disso é real. Por definição, o “votante” passa a votar em RANGE em uma parcela fixa de barras, independentemente do comportamento do mercado. Portanto, trata-se de uma opção, não de uma reescrita. Ela vem desativada por padrão porque os backtests acima foram executados com ela desativada, e não quero que o padrão de fábrica seja uma configuração para a qual não tenho resultados.

Nenhuma estratégia tem lucratividade garantida. Isso oferece a você uma estrutura para testes com a métrica já integrada. Não lhe dá uma vantagem.

— Ali Rajput


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

Gerenciador de Negociações com Um Clique — tamanho do lote baseado no risco, com ponto de entrada, stop e meta em um único clique Gerenciador de Negociações com Um Clique — tamanho do lote baseado no risco, com ponto de entrada, stop e meta em um único clique

Calcula o lote com base na sua porcentagem de risco e na distância do stop, e então abre a operação com o stop loss e o take profit já definidos. Nunca opera por conta própria.

Contract Sizer: ladder, floor and a breaker that survives a deposit Contract Sizer: ladder, floor and a breaker that survives a deposit

Três proteções de dimensionamento de posição que funcionam de maneiras diferentes; confundir essas proteções é o motivo pelo qual tantas contas vão à falência: - ladder: um contrato por cada X do saldo, sempre aplicada como um limite máximo (CAP), mesmo com dimensionamento manual de lotes; - floor: abaixo do capital mínimo, a conta não opera; é necessário um novo depósito; - breaker: interrompe a operação quando o saldo fica X% abaixo do pico, independentemente do tamanho da conta, e não se reativa automaticamente. O que esta biblioteca resolve e quase nenhuma outra resolve: um depósito não é lucro, e um saque não é perda. O breaker mede a queda em relação ao pico do saldo. Se não for tratado, um depósito feito DURANTE uma queda eleva o saldo e o pico juntos, e a proteção deixa de detectar a queda exatamente quando seria útil. Aqui, depósitos e saques alteram o pico no mesmo valor. O pico é salvo em um arquivo: um limitador que esquece o pico ao reiniciar o terminal não é um limitador. A demonstração simula um depósito no ponto mais baixo de uma queda. Execute-a com o depósito ativado e desativado e compare a coluna “queda”.

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.