SMC Ultimate
- Indicadores
-
Ahmed Hamed Hamed Eadwan
PORTUGUESE TRANSLATION — PORTUGUÊS
====================================
TITLE:
Desenvolvedor MQL5 e Trader | Fundador da R protocols
ABOUT:
Olá, sou Ahmed — um trader e desenvolvedor MQL5 baseado nos
Emirados Árabes Unidos, e fundador da R protocols. - Versão: 1.0
- Ativações: 5
SMC Ultimate
Motor de decisão institucional Smart Money Concepts (SMC) / ICT para MetaTrader 5. Analisa estrutura de mercado, liquidez, Order Blocks e Fair Value Gaps e os converte em score, estado codificado e sinais Buy/Sell confirmados.
Funciona de forma totalmente autónoma (painel, desenhos e alertas). Também está pronto para EA por meio de um contrato estável de 4 buffers e 88 entradas fixas para integração confiável com iCustom.
Preço de lançamento da primeira versão pública (versão 1.0). O preço pode aumentar após as primeiras atualizações e avaliações.
Principais recursos
- Estrutura HTF e LTF: swings, BOS e CHoCH
- Mapa de liquidez: equal highs/lows e detecção de sweeps
- Order Blocks e Fair Value Gaps com estados de toque e mitigação
- Pontuação de contexto Premium / Discount
- Score multifator ponderado com travamento de histerese
- Anti-Repaint: sinais confirmados na barra fechada (shift 1)
- Painel no gráfico: tendência, zona, score, sinal e buffers
- Alertas: popup, som e push, com cooldown e once-per-bar
- EA Mode: desativa desenhos e alimenta EAs compatíveis
- Prefixo de objetos seguro com ChartID (multi-instância)
- Tolerâncias ATR adaptativas opcionais para EQH/EQL e FVG
- Filtro de spread, sessão e dias da semana, modo conta cent
Como os sinais funcionam
Os motores de estrutura e liquidez atualizam na lógica de barra fechada. O contexto coloca o preço em Premium, Discount ou Neutral. O motor de decisão monta um score limitado com pesos configuráveis. Regras opcionais Strict-SMC filtram entradas fracas. Com Anti-Repaint ativo (padrão), Buy/Sell confirmados ficam em shift 1 e não são reescritos após o fechamento. Setas apenas em barras fechadas confirmadas, não na vela em formação.
Anti-Repaint e Two-Pass
Anti-Repaint é um recurso central de integridade e vem ativado por padrão. Sinais históricos confirmados permanecem fixos após o fechamento da barra.
Two-Pass Mitigation é experimental e vem desativado por padrão. Pode refinar a mitigação histórica de OB/FVG.
Se ambos estiverem ativos, o Anti-Repaint tem prioridade automática:
- Two-Pass é desativado na sessão atual
- O valor do input nunca é alterado (contrato EA de 88 slots intacto)
- Um aviso é gravado no log Experts
- Um alerta no gráfico é exibido quando o GUI é permitido
- O painel mostra: 2-Pass:OFF(AR-Override)
Para usar Two-Pass de propósito, defina Anti-Repaint = false. A fusão completa dos modos está planejada para uma atualização futura.
Painel
- Tendência LTF e HTF
- Zona Premium-Discount com tag extreme
- Contadores Swing, BOS, CHoCH e Sweep
- Contagem de OB e FVG ativos
- Score e sinal: BUY, SELL ou No Signal
- Estado do lock de histerese
- Anti-Repaint e status efetivo do Two-Pass
- Monitor de spread, objetos e saúde do feed HTF
- Leitura de buffers: Score, Signal, State
Buffers EA
Quatro buffers exportados para Expert Advisors e ferramentas personalizadas:
- Buffer 0 - SMC_BUY: 1.0 em BUY confirmado somente no shift 1
- Buffer 1 - SMC_SELL: 1.0 em SELL confirmado somente no shift 1
- Buffer 2 - SMC_SCORE: força da decisão, limite suave cerca de +/-200
- Buffer 3 - SMC_STATE: tendência HTF/LTF e sweep codificados; +100000 se spread bloqueado
Buy/Sell confirmados somente no shift 1. Score e State no shift 0 são preview ao vivo do contexto de bar-1. O filtro de tempo suprime Buy/Sell, mas preserva State. O layout de 88 inputs é fixo para leituras posicionais estáveis de iCustom.
Integração iCustom (estilo de código EA)
Use o nome exato do indicador no Navigator após instalar pelo Market. Exemplos com Market\SMC Ultimate. Entradas confirmadas somente no shift 1. Layout de buffers congelado:
- 0 = SMC_BUY
- 1 = SMC_SELL
- 2 = SMC_SCORE
- 3 = SMC_STATE
Leia sempre a confirmação no shift 1.
Inputs: 88 slots posicionais. Não reordene. Slots 41-46 são reservados. Inputs finais omitidos mantêm os defaults.
Código MQL5 (esqueleto EA)
#define SMC_BUF_BUY 0
#define SMC_BUF_SELL 1
#define SMC_BUF_SCORE 2
#define SMC_BUF_STATE 3
#define SMC_SHIFT_CONFIRMED 1
#define SMC_SPREAD_BLOCK_MARK 100000.0
int g_smc_handle = INVALID_HANDLE;
datetime g_smc_last_bar = 0;
int OnInit()
{
g_smc_handle = iCustom(_Symbol, PERIOD_CURRENT, "Market\\SMC Ultimate");
if(g_smc_handle == INVALID_HANDLE)
{
Print("SMC Ultimate: iCustom failed, error=", GetLastError());
return INIT_FAILED;
}
return INIT_SUCCEEDED;
}
// Optional: pass inputs by frozen 88-slot order only if needed
// g_smc_handle = iCustom(_Symbol, PERIOD_CURRENT, "Market\\SMC Ultimate", ...);
// Enable EA Mode in indicator inputs for chart-less EA use.
bool SMC_Read(const int buffer_index, const int shift, double &out_value)
{
out_value = EMPTY_VALUE;
if(g_smc_handle == INVALID_HANDLE) return false;
double tmp[];
ArraySetAsSeries(tmp, true);
if(CopyBuffer(g_smc_handle, buffer_index, shift, 1, tmp) != 1)
return false;
out_value = tmp[0];
return true;
}
bool SMC_IsValidNum(const double v)
{
return (v != EMPTY_VALUE && MathIsValidNumber(v));
}
bool SMC_DecodeState(double state_raw,
bool &spread_blocked,
int &htf_trend,
int <f_trend,
int &sweep_enc)
{
spread_blocked = false;
htf_trend = 0; ltf_trend = 0; sweep_enc = 0;
if(!SMC_IsValidNum(state_raw)) return false;
double s = state_raw;
if(s >= SMC_SPREAD_BLOCK_MARK)
{
spread_blocked = true;
s -= SMC_SPREAD_BLOCK_MARK;
}
int sv = (int)MathRound(s);
htf_trend = sv / 100 - 1; // -1 bear, 0 flat, +1 bull
ltf_trend = (sv % 100) / 10 - 1; // -1 bear, 0 flat, +1 bull
sweep_enc = sv % 10; // 0 none, 1 buy-side, 2 sell-side
return true;
}
void OnTick()
{
datetime t[];
ArraySetAsSeries(t, true);
if(CopyTime(_Symbol, PERIOD_CURRENT, 0, 2, t) != 2) return;
if(t[0] == g_smc_last_bar) return;
g_smc_last_bar = t[0];
double buy=0, sell=0, score=0, state=0;
if(!SMC_Read(SMC_BUF_BUY, SMC_SHIFT_CONFIRMED, buy)) return;
if(!SMC_Read(SMC_BUF_SELL, SMC_SHIFT_CONFIRMED, sell)) return;
if(!SMC_Read(SMC_BUF_SCORE,SMC_SHIFT_CONFIRMED, score)) return;
if(!SMC_Read(SMC_BUF_STATE,SMC_SHIFT_CONFIRMED, state)) return;
bool spread_blocked; int htf, ltf, sweep;
if(!SMC_DecodeState(state, spread_blocked, htf, ltf, sweep)) return;
if(spread_blocked) return;
const bool is_buy =
SMC_IsValidNum(buy) && buy > 0.5 && buy < 1.0e10;
const bool is_sell =
SMC_IsValidNum(sell) && sell > 0.5 && sell < 1.0e10;
if(is_buy)
{
PrintFormat("SMC BUY confirmed | score=%.0f htf=%d ltf=%d sweep=%d",
score, htf, ltf, sweep);
// --- risk + OrderSend / trade.Buy() ---
}
else if(is_sell)
{
PrintFormat("SMC SELL confirmed | score=%.0f htf=%d ltf=%d sweep=%d",
score, htf, ltf, sweep);
// --- risk + OrderSend / trade.Sell() ---
}
}
void OnDeinit(const int reason)
{
if(g_smc_handle != INVALID_HANDLE)
{
IndicatorRelease(g_smc_handle);
g_smc_handle = INVALID_HANDLE;
}
}
Regras de integração
- Negocie apenas Buy/Sell no shift 1, nunca no shift 0
- Score/State no shift 0 são preview de monitoramento, não entrada final
- EMPTY_VALUE / números inválidos = sem sinal confirmado
- Se State >= 100000, subtraia 100000 e não abra entradas (spread bloqueado)
- Codificação State: (htf+1)*100 + (ltf+1)*10 + sweepEnc
- Ative EA Mode se o EA deve rodar sem painel/objetos
- Sempre verifique o retorno de CopyBuffer
- Lote, SL/TP e money management somente dentro do EA
SMC Ultimate fornece os buffers de decisão. Execução e risco ficam no seu EA.
Início recomendado
- Anexe ao timeframe de trabalho (M15-H1 é comum; qualquer TF é suportado)
- Mantenha Anti-Repaint = true
- Mantenha Two-Pass = false, salvo necessidade intencional
- Ajuste MaxSpread ao seu símbolo
- Calibre MinDecisionScore e pesos só após observar o comportamento ao vivo
- Para EA: ative EA Mode e leia os 4 buffers via iCustom
Boas práticas
- Trate como motor de decisão, não como impressora de trades garantidos
- Maior convicção: alinhamento HTF + sweep de suporte + zona não extrema
- Respeite o spread da corretora e seus limites de risco
- No Strategy Tester, use o modo Visual para objetos e alertas
- Uma instância por gráfico é ideal; várias são isoladas por ChartID
Grupos de inputs (88 no total, ordem fixa)
- Segurança: spread, Strict SMC, Anti-Repaint, EA Mode
- Filtros de tempo e dias da semana
- Tolerâncias ATR adaptativas
- Pesos do score de decisão
- Estrutura: HTF, swing strength, lookback
- Limiar de decisão e mitigação de zonas, incluindo Two-Pass experimental
- Constantes de modo fixo
- Slots reservados de compatibilidade EA
- Limite de objetos do gráfico
- Visuais, alertas e layout do painel
- Cores e logging
Não reordene, remova ou reaproveite slots reservados se integrar por posição de input.
Versão 1.0
Primeira publicação pública no MQL5 Market. Stack completo SMC/ICT, motor Anti-Repaint por snapshots, Two-Pass experimental com resolução ativa do conflito AR, contrato de 4 buffers, 88 inputs fixos, prefixo ChartID, dimensionamento ATR, painel institucional e controles de spread/sessão/histerese.
Suporte
Use o sistema de mensagens do MQL5.org no perfil do autor. Informe símbolo, timeframe, print dos inputs e mensagens da aba Experts. Aguarde um tempo razoável de resposta.
Aviso legal
Negociar envolve risco de perda. Padrões históricos de estrutura não garantem resultados futuros. SMC Ultimate é um indicador analítico de apoio à decisão, não aconselhamento financeiro. Você é o único responsável pela gestão de risco e pela execução.
