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
RegimeRouter — classificador de tendência/faixa com um registro de taxa de vitórias por regime - expert para MetaTrader 5
- Visualizações:
- 16
- Avaliação:
- Publicado:
-
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
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
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
O Indicador Accumulation/Distribution (Acumulação/Distribuição ou A/D) é determinado pelas mudanças de preço e volume.
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.
