Disponível no MQL5 Market: Supply Demand RSJ PRO
Aviso de risco. Operar envolve risco de perda. Este indicador marca zonas de preço no gráfico; ele não prevê o mercado, não abre trades e não garante nenhum resultado. Use-o junto com sua própria análise e gestão de risco, e teste primeiro em uma conta demo.

O Supply Demand RSJ PRO desenha zonas de oferta (supply) e demanda (demand) construídas a partir de topos e fundos (swings), classifica cada zona em cinco graus (weak, strong, verified, proven, turncoat), conta quantas vezes o preço retestou a zona, inverte as zonas rompidas uma vez e remove as zonas rompidas duas vezes. Zonas sobrepostas podem ser unidas, cada zona pode ter um rótulo de texto e um alerta pode disparar quando o preço entra em uma zona. Funciona em qualquer símbolo, qualquer corretora e qualquer timeframe. Não abre trades.
1. Instalação e início rápido
- Compre ou alugue o indicador no MQL5 Market e instale-o pela aba Market do terminal (Toolbox → Market → Purchased → Install).
- Abra um gráfico e arraste o Supply Demand RSJ PRO do Navegador (Indicators → Market) para ele.
- Mantenha os inputs padrão ou ajuste-os (seção 11) e pressione OK.
O indicador analisa as últimas 3000 barras (input NUM CANDLES FOR ANALYSIS) e reconstrói todas as zonas no primeiro tick de cada nova barra; se o histórico ainda não estiver pronto, ele tenta de novo nos ticks seguintes. Com Show Labels? ativado (padrão), o deslocamento do gráfico (chart shift) é ligado para que os rótulos tenham espaço à direita da última barra; se estava desligado antes, volta a ser desligado quando o indicador é removido (a não ser que outra cópia ainda esteja no gráfico).
Início rápido
- Leia o grau no rótulo: zonas Proven e Verified já seguraram retestes, zonas Strong vêm de um swing principal que nunca foi retestado, zonas Weak vêm de um swing menor, zonas Turncoat foram rompidas uma vez e mudaram de lado.
- A cor padrão dos rótulos é preta. Em um gráfico escuro, altere Labels Font Color (por exemplo para branco ou prata).
- Para um gráfico mais limpo, desative primeiro Show Weak Zones?.
- Para ser avisado quando o preço entrar em uma zona, configure Trigger Alert When Enter Zone? (seção 10).

2. Legenda do gráfico
| No gráfico | Significado |
|---|---|
| Caixa preenchida acima do preço (carmim / bordô / orquídea / azul-violeta) | Zona de oferta (supply). Cor por grau: Verified carmim, Proven bordô, Strong orquídea, Weak azul-violeta. |
| Caixa preenchida abaixo do preço (verde / azul royal / verde-oliva / azul-centáurea) | Zona de demanda (demand). Cor por grau: Verified verde, Proven azul royal, Strong verde-oliva, Weak azul-centáurea. |
| Caixa preenchida laranja-escura | Zona turncoat ("broken"): rompida uma vez e agora atuando do outro lado (antiga oferta como demanda, ou o inverso). |
| Texto como Verified Demand Zone, Retests = 2 | Rótulo da zona (opcional), desenhado à direita da última barra, no terço superior da zona. |
Cada caixa começa na barra do swing que a criou e termina na barra atual. Passe o mouse sobre uma caixa para ler o tooltip, por exemplo SDRSJ#123456#S4 Type = Verified, Test Count = 2 (S = demanda, R = oferta). Todos os objetos do indicador começam com SDRSJ# seguido de um número diferente para cada cópia do indicador, e são desenhados no fundo, atrás dos candles.
3. Como as zonas aparecem

- As zonas são desenhadas em torno de pontos de virada do mercado (topos e fundos) encontrados nas últimas NUM CANDLES FOR ANALYSIS barras.
- Um ponto de virada só é confirmado depois que algumas barras fecham à sua direita, então uma zona nova aparece algumas barras depois da virada, nunca na barra em formação.
- Com Extend Zones? ativado, a zona cobre um pouco mais que o pavio da barra de virada.
- ATR Factor deixa as zonas mais largas ou mais estreitas; os fatores de fractal definem o tamanho mínimo de uma virada para criar uma zona (seção 11).
4. Graus das zonas

| Grau (rótulo) | Significado | Cor padrão (oferta / demanda) | Input de filtro |
|---|---|---|---|
| Weak | Zona de uma virada menor, nunca retestada. | Azul-violeta / Azul-centáurea | Show Weak Zones? |
| Strong | Zona de uma virada principal, nunca retestada e nunca rompida — uma zona untested (não testada). | Orquídea / Verde-oliva | Show Untested Zones? |
| Verified | 1 a 3 retestes. | Carmim / Verde | sempre exibida |
| Proven | 4 ou mais retestes. | Bordô / Azul royal | sempre exibida |
| Turncoat | Rompida uma vez e mudou de lado, sem reteste desde o rompimento. | Laranja-escuro / Laranja-escuro | Show Broken Zones? |
Uma zona que se inverteu e depois foi retestada volta a ser Verified ou Proven. Uma zona recente pode aparecer primeiro como Weak e virar Strong depois, quando sua virada é confirmada como principal. Os graus são atualizados a cada nova barra.
5. Retestes, rompimentos e zonas turncoat

Reteste. Um reteste é contado quando o preço volta a virar dentro da zona, no lado em que a zona atua.
Rompimento. Uma zona de oferta é rompida quando uma barra posterior negocia acima do seu topo (máxima acima do topo); uma zona de demanda, quando uma barra negocia abaixo da sua base. Pavios contam.
- Uma zona weak é removida no primeiro rompimento.
- Uma zona strong, verified ou proven rompida uma vez se inverte: vira uma zona turncoat do outro lado (uma oferta rompida passa a ser lida como demanda, e o inverso) e sua contagem de retestes recomeça em 0.
- Um segundo rompimento sem reteste entre eles remove a zona. Um reteste depois da inversão zera essa contagem, então um nível bem respeitado pode se inverter mais de uma vez.
As zonas turncoat são desenhadas em laranja-escuro (rótulo Turncoat) até serem retestadas no novo lado.
6. Oferta ou demanda?
Se uma zona é desenhada como oferta ou demanda depende de onde o preço está agora em relação a ela, não da virada que a criou: uma zona abaixo do preço é lida como demanda, uma zona acima do preço como oferta. Quando o preço atravessa uma zona, o lado dela pode portanto mudar algumas barras depois.
7. União de zonas sobrepostas

Com Merge Zones? ativado (padrão), zonas que se sobrepõem são unidas em uma zona mais larga; as contagens de retestes são combinadas e o rótulo mostra o grau resultante.
Desative para ver cada zona de swing separadamente.
8. Rótulos
Com Show Labels? ativado, cada zona visível recebe um rótulo de texto: grau + lado, mais a contagem de retestes para zonas verified e proven, por exemplo:
- Weak Supply Zone
- Strong Demand Zone
- Verified Supply Zone, Retests = 2
- Proven Demand Zone, Retests = 5
- Turncoat Demand Zone
Os rótulos usam a fonte Courier New, Labels Font Size (padrão 9) e Labels Font Color (padrão preto). Eles ficam cerca de duas barras à direita da barra atual; para isso o indicador liga o deslocamento do gráfico.
9. Cores

As cores das zonas são definidas na aba Colors das propriedades do indicador (não na aba Inputs). Cada entrada corresponde a um grau e um lado:
| Entrada da aba Colors | Usada para | Padrão |
|---|---|---|
| Broken Supply Zone | Zona turncoat exibida como oferta | Laranja-escuro |
| Proven Supply Zone | Oferta proven | Bordô |
| Verified Supply Zone | Oferta verified | Carmim |
| Strong Supply Zone | Oferta strong (não testada) | Orquídea |
| Weak Supply Zone | Oferta weak | Azul-violeta |
| Weak Demand Zone | Demanda weak | Azul-centáurea |
| Strong Demand Zone | Demanda strong (não testada) | Verde-oliva |
| Verified Demand Zone | Demanda verified | Verde |
| Proven Demand Zone | Demanda proven | Azul royal |
| Broken Demand Zone | Zona turncoat exibida como demanda | Laranja-escuro |
Só a cor é usada; estilo e espessura não têm efeito. As caixas são preenchidas e desenhadas no fundo.
10. Alertas

| Input | Dispara quando | Mensagem |
|---|---|---|
| Trigger Alert When Enter Zone? | o Bid atual entra em uma zona visível (base ≤ preço < topo) | Entered into Demand Zone. ou Entered into Supply Zone. |
Modos: NONE (padrão, sem alerta), POPUP, SOUND, NOTIFICATION (push no smartphone), POPUP_SOUND, NOTIFICATION_SOUND, POPUP_NOTIFICATION, POP_SOUND_NOTIFICATION. Trigger Alert Sound Type seleciona um dos 13 sons do terminal (padrão alert).
O texto inclui o produto, o símbolo e o timeframe, por exemplo RSJ Supply Demand PRO: EURUSD | PERIOD_H1 | Entered into Demand Zone.
Com que frequência dispara:
- A verificação roda a cada tick. O alerta dispara uma vez, quando o preço entra em uma zona; ele não se repete enquanto o preço permanece dentro. Depois que o preço sai da zona, uma nova entrada pode disparar de novo.
- Depois de um alerta, as entradas são ignoradas até passarem Delay between alerts (seconds) (padrão 180) no relógio desde esse alerta. Uma entrada que acontece durante a espera é descartada, não é enviada depois.
- Um alerta cobre uma zona (a primeira zona encontrada em que o preço acabou de entrar).
- Só zonas visíveis são verificadas: graus ocultados pelos filtros Show ... Zones? não disparam alertas.
- Nenhum alerta é enviado quando o indicador é anexado com o preço já dentro de uma zona, nem quando uma zona aparece em volta do preço em um recálculo (por exemplo um novo swing ou uma união).
As notificações push exigem o MetaQuotes ID em Tools → Options → Notifications. Os modos com som tocam o som sem pausar o indicador. O Strategy Tester não mostra pop-ups, sons nem notificações.
11. Inputs
Os títulos abaixo são as linhas separadoras da aba Inputs (não têm valor a configurar).
ZONES_VIEW_CONFIG
| Input | Padrão | Descrição |
|---|---|---|
| Show Weak Zones? | true | Exibe as zonas Weak. |
| Show Untested Zones? | true | Exibe as zonas Strong (não testadas). |
| Show Broken Zones? | true | Exibe as zonas Turncoat. |
| Merge Zones? | true | Une zonas sobrepostas (seção 7). |
| Extend Zones? | true | A zona cobre um pouco mais que o pavio da barra de virada (seção 3). |
Zonas Verified e Proven são sempre exibidas.
ZONES_CALC_CONFIG
| Input | Padrão | Descrição |
|---|---|---|
| NUM CANDLES FOR ANALYSIS | NUM_CANDLES_3000 | Barras pesquisadas em busca de zonas: NUM_CANDLES_500 a NUM_CANDLES_5000, em passos de 500. |
| ATR Period | 7 | Adapta o tamanho da zona à volatilidade recente do símbolo. |
| ATR Factor | 0.75 | Valores maiores dão zonas mais largas e mais uniões. |
| Fast Fractal Factor | 3.0 | Tamanho das viradas menores que criam zonas: valores maiores mantêm só viradas maiores. |
| Slow Fractal Factor | 8.0 | Tamanho das viradas principais (grau Strong): valores maiores mantêm só viradas maiores. |
Os fatores de fractal são usados como números inteiros (3,5 funciona como 3; valores abaixo de 1 funcionam como 1).
ZONES_LABEL_CONFIG
| Input | Padrão | Descrição |
|---|---|---|
| Show Labels? | true | Desenha os rótulos de texto e liga o deslocamento do gráfico. |
| Labels Font Color | Black | Cor dos rótulos. |
| Labels Font Size | 9 | Tamanho da fonte dos rótulos. |
ALERT_CONFIG
| Input | Padrão | Descrição |
|---|---|---|
| Trigger Alert When Enter Zone? | NONE | Modo de alerta (seção 10). |
| Trigger Alert Sound Type | alert | alert, alert2, connect, disconnect, email, expert, news, ok, request, stops, tick, timeout, wait. |
| Delay between alerts (seconds) | 180 | Intervalo mínimo entre dois alertas, em segundos medidos pelo relógio. |
12. Buffers para Expert Advisors / dashboards
O indicador expõe 8 buffers que podem ser lidos com iCustom + CopyBuffer . Eles ficam ocultos na Janela de Dados. Os buffers 0-3 são gravados quando as zonas são reconstruídas em uma nova barra; os buffers 4-7 são atualizados a cada tick.
| Buffer | Conteúdo | Valores | Vazio |
|---|---|---|---|
| 0 | Swing low lento | mínima na barra de um swing low lento (principal) confirmado | 0 |
| 1 | Swing high lento | máxima na barra de um swing high lento confirmado | 0 |
| 2 | Swing low rápido | mínima na barra de um swing low rápido (menor) confirmado | 0 |
| 3 | Swing high rápido | máxima na barra de um swing high rápido confirmado | 0 |
| 4 | Zona mais próxima acima - topo | topo da zona visível mais próxima inteiramente acima do Bid (a de menor base) | 0 |
| 5 | Zona mais próxima acima - base | base da mesma zona do buffer 4 | 0 |
| 6 | Zona mais próxima abaixo - topo | topo da zona visível mais próxima inteiramente abaixo do Bid (a de maior topo) | 0 |
| 7 | Zona mais próxima abaixo - base | base da mesma zona do buffer 6 | 0 |
Observações sobre os buffers 4-7:
- Eles são gravados na barra 0 a cada tick, com o Bid atual. O shift 1 guarda o último valor da barra anterior; barras mais antigas ficam em 0 .
- "Acima" e "abaixo" são medidos pelas bordas da zona, não pelo lado da zona: a zona acima do preço normalmente é de oferta, mas pode ser uma zona de demanda que o preço acabou de deixar para baixo (seção 6). Só zonas inteiramente acima ou inteiramente abaixo do preço são consideradas: uma zona que contém o preço não é informada, e os buffers mostram a próxima zona além dela.
- Só zonas visíveis são consideradas (os filtros Show ... Zones? se aplicam).
- 0 significa "nenhuma zona", nos quatro buffers.
Os buffers de swing 0-3 ficam em 0 nas últimas barras: uma virada só é conhecida depois de confirmada.
Carregamento. A versão do Market é instalada em MQL5\Indicators\Market\ ; confira o nome exato do arquivo no Navegador. Sem parâmetros após o nome, os inputs padrão são usados. Para alterar inputs, passe-os na ordem da seção 11. Cada linha separadora (ZONES_VIEW_CONFIG, ZONES_CALC_CONFIG, ZONES_LABEL_CONFIG, ALERT_CONFIG) também é um parâmetro: passe uma string vazia "" no lugar dela; caso contrário, todos os valores seguintes ficam deslocados. NUM CANDLES FOR ANALYSIS é passado como número: 0 = 500, 1 = 1000 … 5 = 3000 … 9 = 5000. Inputs omitidos no final mantêm seus valores padrão.
```mql5 // "" = ZONES_VIEW_CONFIG, depois show weak = false int h = iCustom(_Symbol, PERIOD_H1, "Market\Supply Demand RSJ PRO", "", false);
double up_top[1], up_bot[1], dn_top[1], dn_bot[1]; if (BarsCalculated(h) > 0) { if (CopyBuffer(h, 4, 0, 1, up_top) == 1 && CopyBuffer(h, 5, 0, 1, up_bot) == 1 && up_top[0] != 0.0) Print("nearest zone above ", up_bot[0], " - ", up_top[0]); if (CopyBuffer(h, 6, 0, 1, dn_top) == 1 && CopyBuffer(h, 7, 0, 1, dn_bot) == 1 && dn_top[0] != 0.0) Print("nearest zone below ", dn_bot[0], " - ", dn_top[0]); } ```
Observações: um indicador criado por iCustom desenha suas zonas e rótulos no gráfico do programa que o chamou, com nomes de objeto próprios, então não apaga as zonas de uma cópia anexada manualmente; as zonas não podem ser desligadas, só os rótulos (Show Labels? = false). Espere até BarsCalculated(h) > 0 antes da primeira leitura (o histórico pode ainda estar carregando). O grau, o lado e a contagem de retestes de uma zona não estão disponíveis nos buffers — só no gráfico (rótulos e tooltips).
13. Gratuito vs PRO
O gratuito Supply Demand RSJ Zones desenha o mesmo tipo de zona com configurações fixas.
| Supply Demand RSJ Zones (gratuito) | Supply Demand RSJ PRO | |
|---|---|---|
| Graus | 2: strong (cor cheia) e weak (tom esmaecido) | 5: weak, strong, verified, proven, turncoat |
| Rótulos com grau e contagem de retestes | — | sim |
| Filtro por grau | — | weak / untested / turncoat |
| Opções de união (merge) e extensão (extend) | sempre ativadas | ativar / desativar |
| Barras analisadas | 300-1500 (padrão 1000) | 500-5000 (padrão 3000) |
| Configurações de ATR e fractal | fixas | ajustáveis |
| Cores | cor de oferta e de demanda, tom weak automático | 10 cores (grau × lado) |
| Alertas | — | pop-up, som, push |
| Buffers | 8 (mesmo layout); oferta mais próxima acima / demanda mais próxima abaixo, 0 quando não há | 8; zona mais próxima inteiramente acima / abaixo, 0 quando não há (seção 12) |
14. Dicas
- Menos poluição visual: desative Show Weak Zones?; depois Show Untested Zones? para manter só as zonas que já seguraram um reteste (mais as turncoat).
- Zonas mais largas ou mais estreitas: aumente ou diminua ATR Factor. Zonas mais largas também se unem com mais frequência.
- Só níveis principais: aumente Fast Fractal Factor para que só swings maiores criem zonas.
- Contexto de timeframe superior: abra o indicador em H4 ou D1 ao lado do seu gráfico operacional; zonas de um timeframe superior não são desenhadas em um inferior.
- Gráfico escuro: defina Labels Font Color com uma cor clara.
- Desempenho: 5000 barras em muitos gráficos podem deixar o terminal mais lento a cada nova barra; 1000-3000 barras costumam bastar.
- Várias cópias em um gráfico: cada cópia usa seus próprios nomes de objetos, então duas ou mais cópias com configurações diferentes podem rodar no mesmo gráfico sem apagar as zonas uma da outra. Ligue o alerta em apenas uma cópia para evitar duplicidade.
15. Perguntas e solução de problemas
- Ele repinta? Os swings são confirmados em barras fechadas e nunca são movidos. As zonas, porém, são reconstruídas a partir do histórico a cada nova barra: uma zona só aparece depois que sua virada é confirmada, seu grau pode mudar (Weak → Strong quando o swing lento é confirmado, mais retestes, uma inversão) e ela é removida quando é rompida duas vezes. A barra em formação só é usada para as zonas quando a próxima barra abre; o alerta e os buffers 4-7 acompanham o Bid ao vivo.
- Não vejo rótulos. Verifique Show Labels? e Labels Font Color: rótulos pretos ficam invisíveis em um gráfico preto.
- Uma zona mudou de oferta para demanda. O preço a atravessou e ela virou uma zona turncoat, ou o preço passou para o outro lado da zona (seção 6).
- Uma zona sumiu. Ela foi rompida uma segunda vez sem reteste, ou uma zona weak foi rompida uma vez, ou ela é mais antiga que NUM CANDLES FOR ANALYSIS, ou seu grau está filtrado.
- Por que falta uma zona strong perto das últimas barras? Uma virada principal precisa de mais barras fechadas para ser confirmada; até lá a zona é Weak — oculta se Show Weak Zones? estiver desativado.
- Com que frequência chegam os alertas? Uma vez por entrada em uma zona, não enquanto o preço permanece dentro, e nunca com intervalo menor que Delay between alerts (seconds) (seção 10). Aumente o intervalo para ter menos alertas em timeframes curtos.
- O preço está dentro de uma zona, mas não houve alerta. O preço já estava dentro quando o indicador foi anexado, a zona apareceu em volta do preço em um recálculo, a entrada aconteceu durante o intervalo após o alerta anterior, ou a zona está oculta por um filtro Show ... Zones? (zonas ocultas não alertam).
- Strategy Tester. Funciona nos modos visual e não visual; pop-ups, sons e notificações não são enviados no testador.
Suporte: envie uma mensagem privada ao autor no MQL5.


