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:
- 6
- Avaliação:
- Publicado:
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Quase todo método baseado em estrutura começa com a mesma pergunta: quais picos e vales realmente importam? Tudo o que vem a seguir — estrutura de mercado, BOS e CHoCH, blocos de ordens, níveis de liquidez — se baseia nessa única resposta; portanto, a definição que você escolher determina o que o restante da sua análise irá considerar.
Existem várias maneiras comuns de responder a essa pergunta. A mais conhecida é o padrão de 3 velas (o fractal): uma vela cuja alta está acima das duas vizinhas é uma alta de oscilação. É simétrica, fácil de calcular e é o que a maioria dos indicadores de oscilação utiliza. Outros ampliam a janela para 5 ou 7 velas, ou filtram os candidatos por um movimento mínimo em pontos ou ATR.
Este indicador usa uma definição diferente — a definição de pullback utilizada no Trading Hub 3.0. Em vez de perguntar se uma vela é mais alta que suas vizinhas, ele pergunta se o preço voltou e rejeitou essa vela. Uma alta só se torna um swing quando o mercado volta a negociar abaixo da mínima da vela que a formou. Nada é decidido pela forma; tudo é decidido pelo que o preço faz depois.
A diferença prática: um fractal descreve geometria, enquanto um pullback descreve um evento. Como um pullback é um evento, ele também indica quando a oscilação se tornou válida — e esse registro de tempo é o que torna possível uma implementação sem repintura.
Como a regra funciona
O detector nunca procura os dois lados ao mesmo tempo. Ele procura um lado de cada vez e mantém exatamente três informações:
| Estado | Significado |
|---|---|
| Direção | qual lado está sendo procurado no momento — alto ou baixo |
| Extremo rastreado | a máxima mais alta (ou a mínima mais baixa) observada até o momento no movimento atual |
| Nível de referência | a extremidade oposta da vela que formou esse extremo |
A referência é a parte importante. Quando uma vela estabelece uma nova alta máxima, essa mesma vela também fornece o nível que mais tarde a confirmará: sua própria baixa. O preço deve voltar a passar por essa baixa para que a alta seja válida.
Interpretação da figura:
- A — uma fase se inicia. A máxima acompanhada e a mínima de referência provêm ambas de uma única vela.
- B — cada nova alta substitui ambos os valores. A alta ainda é provisória; nada é traçado.
- C — uma vela finalmente é negociada abaixo da mínima de referência. Esse é o recuo, e ele confirma a máxima rastreada como uma máxima de oscilação.
- D — a vela de confirmação imediatamente inicia a busca por uma mínima, de forma espelhada: acompanhe a mínima mais baixa; a referência é sua máxima; uma quebra acima dela a confirma.
Como a confirmação de um lado sempre inverte a busca para o outro, as máximas e mínimas de oscilação se alternam automaticamente. Não há regra separada que imponha isso nem comparação com oscilações anteriores.
As regras, vela por vela
A cada vela fechada, o detector faz duas perguntas independentes: essa vela atingiu um novo extremo? E ela rompeu a referência? São possíveis quatro combinações por direção.
| # | Tendência atual | Vela atual | Ação 1 | Ação 2 |
|---|---|---|---|---|
| 1 | Buscando uma MÁXIMA | Barra interna — sem nova alta, mínima de referência intacta | nada | nada |
| 2 | Procurando uma MÁXIMA | Nova alta, mínima de referência intacta | máxima rastreada = máxima desta vela | mínima de referência = mínima desta vela |
| 3 | Procurando uma MÁXIMA | Rompimento — sem nova alta, mas as negociações ocorrem abaixo da baixa de referência | confirmar a máxima rastreada como uma máxima de oscilação | mudar para MÍNIMO: mínimo rastreado = mínimo desta vela, máximo de referência = máximo desta vela |
| 4 | Procurando uma MÁXIMA | Barra externa — nova alta e rompe a mínima de referência | confirme a própria alta desta vela como uma alta de oscilação | mudança para MÍNIMO: mínimo rastreado = mínimo desta vela, máximo de referência = máximo desta vela |
| 5 | Procurando por uma MÍNIMA | Barra interna — sem nova mínima, máxima de referência intacta | nada | nada |
| 6 | Procurando por uma MÍNIMA | Nova mínima, máxima de referência intacta | mínima registrada = mínima desta vela | máxima de referência = a máxima desta vela |
| 7 | Procurando por uma MÍNIMA | Quebra — sem nova mínima, mas sendo negociada acima da máxima de referência | confirme a mínima rastreada como uma mínima de oscilação | mudar para MÁXIMO: máxima rastreada = máxima desta vela, mínima de referência = mínima desta vela |
| 8 | Procurando por uma MÍNIMA | Barra externa — nova mínima e rompe a máxima de referência | confirme a própria mínima desta vela como uma mínima de oscilação | mudar para ALTA: alta rastreada = alta desta vela, baixa de referência = baixa desta vela |
As linhas 1–4 e 5–8 são espelhos exatos, e é por isso que todo o mecanismo tem apenas algumas dezenas de linhas.
O caso raro: uma vela que rompe em ambas as direções
As linhas 4 e 8 merecem uma explicação à parte. Normalmente, uma vela ou estende a tendência ou rompe a referência. Uma barra externa pode fazer as duas coisas ao mesmo tempo — ela atinge uma nova alta e é negociada abaixo da mínima de referência na mesma vela.
Ambas as regras, então, reivindicam esse caso, e elas se contradizem. Tratá-la como uma extensão desconsidera uma quebra real; tratá-la como uma quebra confirmaria uma máxima que essa mesma vela já ultrapassou.
A solução é deixar que a vela seja a própria oscilação:
- Sua própria alta é confirmada como a alta da oscilação — não a alta anterior rastreada, que ela acabou de superar.
- A mesma vela, então, inicia a perna oposta: a mínima rastreada torna-se sua mínima e a de referência torna-se sua máxima.
Assim, uma única vela carrega tanto a alta da oscilação quanto o início da perna de baixa. No gráfico, isso aparece como um marcador acima e abaixo da mesma barra, com uma perna vertical entre elas — que é exatamente o que aconteceu dentro dessa vela.
This is also why the legs are drawn as trend-line objects rather than a DRAW_SECTION buffer. A section plot stores one value per bar and could not hold two points on the same candle.
Ela não é repintada
O extremo rastreado é provisório e nunca é desenhado. Uma oscilação é registrada no gráfico apenas na vela que a confirma e, uma vez registrada, nunca é movida, recolorida ou removida. Apenas velas fechadas são avaliadas; a vela em formação é totalmente ignorada.
A contrapartida é clara e vale a pena ser mencionada: o atraso na confirmação. A oscilação mais recente aparece somente após o rompimento que a valida. Se você deseja um marcador no instante em que uma nova alta é registrada, esta não é a ferramenta certa — esse marcador teria que se mover posteriormente, o que seria repintura.
Entradas
Detecção
| Entrada | Padrão | O que faz |
|---|---|---|
| Comece procurando | Procurando uma alta de oscilação | Qual lado a primeira etapa procura. Isso afeta apenas as barras mais antigas do gráfico; após a primeira confirmação, a direção é determinada inteiramente pelas quebras. Não altere essa configuração, a menos que o primeiro swing em seu histórico pareça errado. |
| Romperdura confirmada por | Pavilhão | A opção “Wick” usa a máxima/mínima da vela — a regra literal do Trading Hub e a configuração mais sensível. A opção “Close” exige que a vela feche ultrapassando a referência, o que ignora os toques de uma única sombra e resulta em oscilações visivelmente menos frequentes, porém maiores. |
Como escolher: comece com “Pavilhão”. Se você estiver trabalhando em M1–M15, ou em um símbolo com pavilhões longos e ruidosos, como ouro ou um CFD de índice, mude para “Fechamento” — isso remove a maioria das oscilações causadas por um único pico sem alterar a lógica em nenhum outro ponto. Um intervalo de tempo maior é outra maneira de obter uma estrutura mais ampla; a regra em si não possui configuração de sensibilidade ou período para ajuste.
Exibição
| Entrada | Padrão | O que faz |
|---|---|---|
| Traça os marcadores de oscilação | true | Ativa ou desativa as setas. Os buffers permanecem preenchidos de qualquer maneira, portanto o iCustom ainda retorna cada oscilação. |
| Código da seta — oscilação alta / baixa | 217 / 218 | Códigos Wingdings. Alternativas comuns:234/233,241/242, 159 para pontos. |
| Distância da seta em relação à barra | 10 | Espaço em pixels entre a vela e sua seta. Aumente-o em gráficos densos. |
| Desenhe as pernas entre as oscilações | true | O ziguezague pontilhado que conecta oscilações consecutivas. Desative-o se você já estiver usando um ziguezague. |
| Cor / estilo / largura das pernas | prata, pontilhada, 1 | Aparência das linhas. |
Desativar tanto os marcadores quanto as linhas resulta em uma instância puramente computacional — útil quando um EA lê os buffers e você não quer nada no gráfico.
Alertas
| Entrada | Padrão | O que faz |
|---|---|---|
| Alerta pop-up em uma oscilação confirmada | false | Aparece uma janela pop-up no terminal quando uma oscilação é confirmada. |
| Notificação push ao ser confirmado um swing | false | Enviada para o ID da MetaQuotes definido em Ferramentas → Opções → Notificações. |
Os alertas são acionados apenas em atualizações em tempo real, nunca enquanto o indicador carrega o histórico, e apenas uma vez por oscilação.
Utilização em um EA
Dois buffers, ambos preenchidos apenas em oscilações confirmadas (valor vazio é 0,0):
| Buffer | Conteúdo |
|---|---|
| 0 | preço de uma alta de oscilação confirmada |
| 1 | preço de uma baixa oscilatória confirmada |
int h = iCustom(_Symbol, _Period, "SMC_Pullback"); double buf[]; CopyBuffer(h, 0, 0, 100, buf); // máximas de oscilação
O mecanismo de detecção está em uma única classe independente, CPullbackDetector, sem dependências de gráficos ou buffers — ele recebe as matrizes de preços e relata os picos e vales confirmados, de modo que pode ser copiado diretamente para um EA, caso você prefira não passar pelo iCustom.
O que ele deliberadamente não faz
Este indicador se limita aos pontos de oscilação. Ele não identifica HH/HL/LH/LL, nem calcula BOS, CHoCH, IDM, blocos de ordens ou níveis de liquidez. Essas são etapas separadas que exigem, primeiro, um conjunto confiável de oscilações — que é exatamente o que este indicador fornece.
O projeto é hospedado no MQL5 Algo Forge. Você pode encontrar o código e as próximas atualizações no link abaixo.
O repositório está aqui: https://forge.mql5.io/SandroBegashvil/SMC-Pullback-CodeBase
Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/76451
SuperTrend Indicator
Um indicador SuperTrend personalizado, desenvolvido a partir dos princípios básicos, que combina uma faixa de volatilidade baseada no ATR com um mecanismo de catraca para produzir uma linha de tendência nítida e que não se repinta. O estado recursivo interno é gerenciado por meio de buffers de cálculo devidamente registrados, evitando os erros de perda de estado comuns em implementações de matrizes gerenciadas manualmente. Da série de artigos “Criação de indicadores personalizados para iniciantes”.
Fisher Transform Indicator
Um oscilador de Transformada de Fisher desenvolvido a partir de princípios estatísticos fundamentais — normalizando o preço em um intervalo delimitado e, em seguida, aplicando uma transformada logarítmica para produzir sinais de reversão nítidos e bem definidos, em vez das mudanças graduais típicas dos osciladores convencionais. O estado recursivo interno é gerenciado por meio de buffers de cálculo adequados, garantindo um comportamento confiável e correto em todos os backtests. Da série de artigos “Criação de indicadores personalizados para iniciantes”.
PropFirm Equity Protector - Gerenciador de Risco Institucional (Código Aberto)
EA profissional para gestão de riscos em corretoras de negociação. Oferece monitoramento diário do patrimônio líquido, mitigação gradual em posições com prejuízo e limites de stop absolutos por meio de um painel gráfico com recurso de autocorreção.
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.




