SMC Ultimate
- Indicadores
-
Ahmed Hamed Hamed Eadwan
SPANISH TRANSLATION — ESPAÑOL
===============================
TITLE:
Desarrollador MQL5 y Trader | Fundador de R protocols
ABOUT:
Hola, soy Ahmed — un trader y desarrollador MQL5 basado en
los Emiratos Árabes Unidos, y fundador de R protocols. - Versión: 1.0
- Activaciones: 5
SMC Ultimate
Motor de decisión institucional Smart Money Concepts (SMC) / ICT para MetaTrader 5. Analiza estructura de mercado, liquidez, Order Blocks y Fair Value Gaps y los convierte en puntuación, estado codificado y señales Buy/Sell confirmadas.
Funciona de forma totalmente autónoma (panel, dibujos y alertas). También está listo para EA mediante un contrato estable de 4 buffers y 88 entradas fijas para una integración fiable con iCustom.
Precio de lanzamiento de la primera versión pública (versión 1.0). El precio puede aumentar tras las primeras actualizaciones y reseñas.
Características principales
- Estructura HTF y LTF: swings, BOS y CHoCH
- Mapa de liquidez: equal highs/lows y detección de sweeps
- Order Blocks y Fair Value Gaps con estados de toque y mitigación
- Puntuación de contexto Premium / Discount
- Score multifactor ponderado con bloqueo de histéresis
- Anti-Repaint: señales confirmadas en la vela cerrada (shift 1)
- Panel en gráfico: tendencia, zona, score, señal y buffers
- Alertas: popup, sonido y push, con cooldown y once-per-bar
- EA Mode: desactiva dibujos y alimenta EAs compatibles
- Prefijo de objetos seguro con ChartID (multi-instancia)
- Tolerancias ATR adaptativas opcionales para EQH/EQL y FVG
- Filtro de spread, sesión y días laborables, modo cuenta cent
Cómo funcionan las señales
Los motores de estructura y liquidez se actualizan en la lógica de vela cerrada. El contexto sitúa el precio en Premium, Discount o Neutral. El motor de decisión construye un score limitado con pesos configurables. Las reglas opcionales Strict-SMC filtran entradas de baja calidad. Con Anti-Repaint activado (por defecto), Buy/Sell confirmados se fijan en shift 1 y no se reescriben al cerrar la vela. Las flechas solo aparecen en velas cerradas confirmadas, no en la vela en formación.
Anti-Repaint y Two-Pass
Anti-Repaint es una función central de integridad y está activada por defecto. Las señales históricas confirmadas permanecen fijas tras el cierre de la vela.
Two-Pass Mitigation es experimental y está desactivada por defecto. Puede refinar la mitigación histórica de OB/FVG.
Si ambos están activos, Anti-Repaint tiene prioridad automática:
- Two-Pass se desactiva en la sesión actual
- El valor del input no se modifica (contrato EA de 88 slots intacto)
- Se escribe un aviso en el registro Experts
- Se muestra una alerta en gráfico si el GUI está permitido
- El panel muestra: 2-Pass:OFF(AR-Override)
Para usar Two-Pass de forma intencional, ponga Anti-Repaint = false. La fusión completa de modos está prevista en una actualización futura.
Panel
- Tendencia LTF y HTF
- Zona Premium-Discount con etiqueta extreme
- Contadores Swing, BOS, CHoCH y Sweep
- Conteo de OB y FVG activos
- Score y señal: BUY, SELL o No Signal
- Estado del bloqueo de histéresis
- Anti-Repaint y estado efectivo de Two-Pass
- Monitor de spread, objetos y salud del feed HTF
- Lectura de buffers: Score, Signal, State
Buffers EA
Cuatro buffers exportados para Expert Advisors y herramientas personalizadas:
- Buffer 0 - SMC_BUY: 1.0 en BUY confirmado solo en shift 1
- Buffer 1 - SMC_SELL: 1.0 en SELL confirmado solo en shift 1
- Buffer 2 - SMC_SCORE: fuerza de decisión, límite suave aprox. +/-200
- Buffer 3 - SMC_STATE: tendencia HTF/LTF y sweep codificados; +100000 si spread bloqueado
Buy/Sell confirmados solo en shift 1. Score y State en shift 0 son vista previa en vivo del contexto de bar-1. El filtro de tiempo suprime Buy/Sell pero conserva State. Las 88 entradas están fijas para lecturas posicionales estables de iCustom.
Integración iCustom (estilo de código EA)
Use el nombre exacto del indicador en el Navigator tras instalar desde Market. Ejemplos con Market\SMC Ultimate. Entradas confirmadas solo en shift 1. Diseño de buffers fijo:
- 0 = SMC_BUY
- 1 = SMC_SELL
- 2 = SMC_SCORE
- 3 = SMC_STATE
Lea siempre la confirmación en shift 1.
Entradas: 88 slots posicionales. No reordene. Los slots 41-46 están reservados. Los inputs finales omitidos conservan valores por defecto.
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;
}
}
Reglas de integración
- Opere solo Buy/Sell en shift 1, nunca en shift 0
- Score/State en shift 0 son preview de monitoreo, no entrada final
- EMPTY_VALUE / números inválidos = sin señal confirmada
- Si State >= 100000, reste 100000 y no abra entradas (spread bloqueado)
- Codificación State: (htf+1)*100 + (ltf+1)*10 + sweepEnc
- Active EA Mode si el EA debe correr sin panel/objetos
- Verifique siempre el retorno de CopyBuffer
- Lote, SL/TP y money management solo dentro del EA
SMC Ultimate entrega los buffers de decisión. La ejecución y el riesgo son de su EA.
Inicio recomendado
- Adjunte a su timeframe de trabajo (M15-H1 es habitual; cualquier TF soportado)
- Mantenga Anti-Repaint = true
- Mantenga Two-Pass = false salvo necesidad intencional
- Ajuste MaxSpread a su símbolo
- Calibre MinDecisionScore y pesos solo tras observar el comportamiento en vivo
- Para EA: active EA Mode y lea los 4 buffers con iCustom
Buenas prácticas
- Trátelo como motor de decisión, no como impresora de operaciones garantizadas
- Mayor convicción: alineación HTF + sweep de apoyo + zona no extrema
- Respete el spread del bróker y sus límites de riesgo
- En el Strategy Tester use modo Visual para objetos y alertas
- Una instancia por gráfico es ideal; varias se aíslan por ChartID
Grupos de entradas (88 total, orden fijo)
- Seguridad: spread, Strict SMC, Anti-Repaint, EA Mode
- Filtros de tiempo y días laborables
- Tolerancias ATR adaptativas
- Pesos del score de decisión
- Estructura: HTF, swing strength, lookback
- Umbral de decisión y mitigación de zonas, incluido Two-Pass experimental
- Constantes de modo fijo
- Slots reservados de compatibilidad EA
- Límite de objetos del gráfico
- Visuales, alertas y layout del panel
- Colores y registro
No reordene, elimine ni reutilice slots reservados si integra por posición de input.
Versión 1.0
Primera publicación pública en MQL5 Market. Stack completo SMC/ICT, motor Anti-Repaint por snapshots, Two-Pass experimental con resolución activa del conflicto AR, contrato de 4 buffers, 88 inputs fijos, prefijo ChartID, dimensionado ATR, panel institucional y controles de spread/sesión/histéresis.
Soporte
Use el sistema de mensajería de MQL5.org en el perfil del autor. Indique símbolo, timeframe, captura de inputs y mensajes de la pestaña Experts. Otorgue un tiempo razonable de respuesta.
Aviso legal
Operar implica riesgo de pérdida. Los patrones históricos de estructura no garantizan resultados futuros. SMC Ultimate es un indicador analítico de apoyo a la decisión, no un consejo financiero. Usted es el único responsable de la gestión del riesgo y de la ejecución.
