El Smart Money Concepts (SMC) lleva años siendo la metodologÃa favorita de traders discrecionales que buscan operar alineados con el flujo institucional. El problema: ejecutarlo manualmente requiere horas de análisis, atención constante y una disciplina casi imposible de mantener. La solución en 2026 es clara — automatizarlo. En esta guÃa aprenderás a traducir los conceptos clave de SMC a código MQL5 real para MetaTrader 5.
¿Qué es Smart Money Concepts y por qué automatizarlo?
SMC es un framework de análisis técnico basado en la premisa de que los grandes actores institucionales — bancos, fondos de cobertura, market makers — dejan huellas en el precio que los traders minoristas pueden identificar y seguir.
Los pilares fundamentales de SMC son:
Order Blocks (OB) — Zonas de precio donde las instituciones acumularon posiciones masivas antes de un movimiento fuerte
Break of Structure (BOS) — Ruptura de un máximo o mÃnimo previo que confirma cambio de tendencia
Change of Character (ChoCH) — Primera señal de reversión antes de confirmar el BOS
Fair Value Gap (FVG) — Ineficiencia de precio entre tres velas consecutivas que el mercado tiende a rellenar
Liquidity Sweeps — Barridos de stops colocados por retailers antes del movimiento real institucional
Automatizar SMC no significa reemplazar el juicio trader — significa ejecutarlo con precisión quirúrgica, sin emociones y en múltiples pares simultáneamente.
Detectando un Order Block con Código MQL5
Un Order Block alcista se forma cuando hay una vela bajista seguida de un movimiento alcista fuerte que rompe estructura. El precio tiende a regresar a esa zona antes de continuar al alza.
//+------------------------------------------------------------------+
//| Función para detectar Bullish Order Block |
//+------------------------------------------------------------------+
bool EsBullishOrderBlock(int indice) {
// La vela en 'indice' debe ser bajista
double aperturaOB = iOpen(_Symbol, PERIOD_CURRENT, indice);
double cierreOB = iClose(_Symbol, PERIOD_CURRENT, indice);
if (cierreOB >= aperturaOB) return false; // No es vela bajista
// La siguiente vela debe ser alcista y más grande
double aperturaSig = iOpen(_Symbol, PERIOD_CURRENT, indice - 1);
double cierreSig = iClose(_Symbol, PERIOD_CURRENT, indice - 1);
double rangoOB = aperturaOB - cierreOB;
double rangoSig = cierreSig - aperturaSig;
// El impulso siguiente debe ser al menos 1.5x el tamaño del OB
if (rangoSig < rangoOB * 1.5) return false;
// Verificar que rompió el máximo previo (BOS básico)
double maximoPrevio = iHigh(_Symbol, PERIOD_CURRENT, indice + 1);
if (cierreSig <= maximoPrevio) return false;
return true;
}Una vez identificado el Order Block, el precio del bloque se almacena como zona de interés. Cuando el precio regresa a esa zona en el futuro, el EA evalúa la entrada.
Break of Structure (BOS) y Change of Character (ChoCH)
El BOS confirma que la tendencia cambió. El ChoCH es la señal anticipada antes de que se confirme ese cambio. Entender la diferencia entre ambos es crÃtico para no entrar prematuramente.
//+------------------------------------------------------------------+
//| Detección de Break of Structure (BOS) |
//+------------------------------------------------------------------+
bool DetectarBOS(int lookback) {
double maximoActual = iHigh(_Symbol, PERIOD_CURRENT, 0);
double maximoPrevio = 0;
// Buscar el máximo más alto en el rango de lookback
for (int i = 1; i <= lookback; i++) {
double maximo = iHigh(_Symbol, PERIOD_CURRENT, i);
if (maximo > maximoPrevio) maximoPrevio = maximo;
}
// BOS alcista: precio actual rompe por encima del máximo previo
if (maximoActual > maximoPrevio) {
Print("BOS Alcista detectado en: ", TimeCurrent());
return true;
}
return false;
}
//+------------------------------------------------------------------+
//| Detección de Change of Character (ChoCH) |
//+------------------------------------------------------------------+
bool DetectarChoCH(int lookback) {
// ChoCH: el primer mÃnimo más alto en tendencia bajista
// o el primer máximo más bajo en tendencia alcista
double minActual = iLow(_Symbol, PERIOD_CURRENT, 1);
double minAnterior = iLow(_Symbol, PERIOD_CURRENT, 2);
double minPrevio = iLow(_Symbol, PERIOD_CURRENT, lookback);
// En estructura bajista, si el mÃnimo reciente es más alto que el anterior
if (minActual > minAnterior && minAnterior < minPrevio) {
Print("ChoCH detectado — posible reversión en: ", TimeCurrent());
return true;
}
return false;
}Diferencia práctica:
ChoCH → Primera señal, alta recompensa, mayor riesgo
BOS confirmado → Entrada más segura, menor RR pero mayor probabilidad
Los traders profesionales esperan el BOS para confirmar, los agresivos entran en el ChoCH con tamaño de lote reducido.
Fair Value Gap (FVG): Detectando Ineficiencias de Precio
Un FVG ocurre cuando entre tres velas consecutivas queda un espacio de precio sin transacciones. El mercado estadÃsticamente tiende a regresar a rellenar esa ineficiencia antes de continuar.
//+------------------------------------------------------------------+
//| Detección de Bullish Fair Value Gap |
//+------------------------------------------------------------------+
struct FVGZona {
double superior;
double inferior;
datetime tiempo;
bool activo;
};
FVGZona DetectarBullishFVG(int indice) {
FVGZona fvg;
fvg.activo = false;
// FVG alcista: Low de vela 1 > High de vela 3 (hay gap entre ellas)
double low1 = iLow(_Symbol, PERIOD_CURRENT, indice + 1); // Vela anterior
double high3 = iHigh(_Symbol, PERIOD_CURRENT, indice - 1); // Vela posterior
if (low1 > high3) {
fvg.superior = low1;
fvg.inferior = high3;
fvg.tiempo = iTime(_Symbol, PERIOD_CURRENT, indice);
fvg.activo = true;
Print("FVG Alcista detectado: ", fvg.inferior, " - ", fvg.superior);
}
return fvg;
}Los FVG se usan como zonas de take profit parcial o como confirmación adicional de entrada cuando el precio regresa a ellos.
Construyendo una Estrategia SMC Completa: Lógica de Entrada
Con los tres conceptos implementados, la estrategia completa funciona asÃ:
Condiciones de entrada LONG (compra):
✅ BOS alcista confirmado en timeframe superior (H4 o D1)
✅ Precio regresa a zona de Bullish Order Block
✅ FVG alcista presente en la zona del OB como confluencia
✅ Liquidity sweep previo (barrido de mÃnimos) antes del impulso
✅ Vela de confirmación (engulfing o pinbar) en el OB
void OnTick() {
// Solo operar en apertura de nueva vela (evitar múltiples señales por tick)
static datetime ultimaVela = 0;
datetime velaActual = iTime(_Symbol, PERIOD_CURRENT, 0);
if (velaActual == ultimaVela) return;
ultimaVela = velaActual;
// Verificar condiciones SMC
bool bos = DetectarBOS(20);
bool choch = DetectarChoCH(10);
FVGZona fvg = DetectarBullishFVG(1);
// Entrada conservadora: esperar BOS + regreso a OB con FVG
if (bos && fvg.activo) {
double precioActual = SymbolInfoDouble(_Symbol, SYMBOL_BID);
// Precio dentro de la zona FVG
if (precioActual >= fvg.inferior && precioActual <= fvg.superior) {
double lote = CalcularLote(1.0, 60); // 1% de riesgo, 60 puntos SL
AbrirOrden(ORDER_TYPE_BUY, lote, 60, 180); // RR 1:3
Print("Entrada SMC ejecutada en: ", precioActual);
}
}
}Backtesting de una Estrategia SMC: Métricas Reales
Al hacer backtesting de SMC debes tener expectativas realistas. SMC no es un sistema de alta frecuencia — es un sistema de alta precisión con pocas operaciones por mes.
Resultados esperados en una estrategia SMC bien implementada:
| Métrica | Rango realista | Señal de alerta |
|---|---|---|
| Win Rate | 45% – 65% | Mayor a 75% = overfitting |
| Profit Factor | 1.6 – 2.8 | Menor a 1.3 = no viable |
| Max Drawdown | 8% – 18% | Mayor a 25% = riesgo alto |
| Operaciones/mes | 8 – 25 | Más de 60 = ruido |
| Sharpe Ratio | 1.2 – 2.5 | Menor a 1.0 = inestable |
Configuración obligatoria del Strategy Tester para SMC:
Modelo: Every tick based on real ticks — nunca uses OHLC para SMC
MÃnimo de datos: 2 años para resultados estadÃsticamente válidos
Forward testing: 6 meses mÃnimo antes de cuenta real
SMC vs. HFT: ¿Son Estrategias Compatibles?
Una pregunta frecuente entre developers que migran a trading algorÃtmico es si SMC y High-Frequency Trading pueden coexistir.
La respuesta corta: no en el mismo sistema.
| Criterio | SMC AlgorÃtmico | HFT |
|---|---|---|
| Timeframe | H1, H4, D1 | M1, tick data |
| Broker requerido | Cualquier ECN | VPS < 1ms al servidor |
| Capital mÃnimo sugerido | $1,000+ | $50,000+ |
| Frecuencia de trades | 8–25/mes | Miles/dÃa |
| Ventaja competitiva | Análisis estructural | Velocidad de ejecución |
| Complejidad de código | Media | Muy alta |
Para developers independientes y traders retail, SMC algorÃtmico ofrece el mejor balance entre complejidad de implementación y rentabilidad potencial en 2026.
Errores Fatales al Automatizar SMC
Estos errores destruyen cuentas incluso con buena lógica de mercado:
Detectar OBs en el mismo timeframe de entrada → Siempre busca OBs en TF superior y entra en TF inferior
No filtrar por sesión de mercado → SMC funciona mejor en sesión de Londres (3am–12pm EST) y Nueva York (8am–5pm EST)
Ignorar el spread en backtesting → Configura el spread real de tu broker, no el spread por defecto de MT5
Entrar sin confirmación de vela → Un OB sin vela de confirmación tiene 30% menos probabilidad de éxito
No desactivar el EA en noticias de alto impacto → NFP, FOMC y CPI pueden invalidar cualquier estructura SMC en segundos
Herramientas Recomendadas para SMC AlgorÃtmico
ICT Concepts Indicator (MQL5 Market) — Visualización de OBs y FVGs en MT5
Forex Factory Calendar API — Para filtrar entradas en eventos de alto impacto
TradingView Pine Script — Ideal para prototipado visual antes de traducir a MQL5
VPS Contabo o Vultr — Servidores de baja latencia para correr EAs 24/7
HydraBlack Market — EAs SMC y scripts MQL5 listos para personalizar y desplegar
¿Quieres un EA SMC Listo para MT5?
Construir un sistema SMC completo desde cero puede tomar semanas. En HydraBlack Market encuentras Expert Advisors basados en Smart Money Concepts, ya codificados, con backtesting documentado y soporte de developers especializados.
→ Explora los EAs de SMC en HydraBlack Market
Join the Discussion (0)