Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 4
- Ranking:
- Publicado:
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Casi todos los métodos basados en la estructura parten de la misma pregunta: ¿qué máximos y mínimos son realmente importantes? Todo lo que viene después —la estructura del mercado, el BOS y el CHoCH, los bloques de órdenes, los niveles de liquidez— se basa en esa única respuesta, por lo que la definición que elijas determinará lo que se observe en el resto de tu análisis.
Hay varias formas habituales de responder a esta pregunta. La más conocida es el patrón de tres velas (el fractal): una vela cuyo máximo se sitúe por encima de los de sus dos vecinas es un máximo de oscilación. Es simétrico, muy sencillo de calcular y es el que utilizan la mayoría de los indicadores de oscilación. Otros amplían la ventana a 5 o 7 velas, o filtran las candidatas en función de un movimiento mínimo en puntos o del ATR.
Este indicador utiliza una definición diferente: la definición de retroceso utilizada en Trading Hub 3.0. En lugar de preguntarse si una vela es más alta que sus vecinas, se pregunta si el precio volvió y rechazó esa vela. Un máximo se convierte en un swing solo cuando el mercado vuelve a cotizar por debajo del mínimo de la vela que lo generó. Nada se decide por la forma; todo se decide por lo que hace el precio a continuación.
La diferencia práctica: un fractal describe la geometría, mientras que un retroceso describe un evento. Como un retroceso es un evento, también indica cuándo se validó el swing, y esa marca de tiempo es lo que hace posible una implementación sin repintado.
Cómo funciona la regla
El detector nunca busca ambos lados a la vez. Busca un lado cada vez y almacena exactamente tres datos:
| Estado | Significado |
|---|---|
| Dirección | qué lado se está buscando en ese momento: alto o bajo |
| Valor extremo registrado | el máximo más alto (o el mínimo más bajo) registrado hasta el momento en el tramo actual |
| Nivel de referencia | el extremo opuesto de la vela que marcó ese extremo |
La referencia es la parte importante. Cuando una vela establece un nuevo máximo histórico, esa misma vela también proporciona el nivel que más tarde lo confirmará: su propio mínimo. El precio debe volver a pasar por ese mínimo para que el máximo cuente.
Interpretación de la figura:
- A — se abre una fase. Tanto el máximo registrado como el mínimo de referencia proceden de una misma vela.
- B — Cada máximo superior sustituye a ambos valores. El máximo sigue siendo provisional; no se traza nada.
- C — una vela cotiza finalmente por debajo del mínimo de referencia. Ese es el retroceso, y confirma el máximo registrado como un máximo de oscilación.
- D — la vela confirmatoria inicia inmediatamente la búsqueda de un mínimo, de forma simétrica: se rastrea el mínimo más bajo; la referencia es su máximo, y una ruptura al alza lo confirma.
Dado que la confirmación de un lado siempre invierte la búsqueda hacia el otro, los máximos y mínimos de oscilación se alternan automáticamente. No hay ninguna regla específica que lo imponga ni comparación con oscilaciones anteriores.
Las reglas, vela por vela
En cada vela cerrada, el detector plantea dos preguntas independientes: ¿ha marcado esta vela un nuevo extremo? y ¿ha superado la referencia? Hay cuatro combinaciones posibles por dirección.
| # | Tendencia actual | Vela actual | Acción 1 | Acción 2 |
|---|---|---|---|---|
| 1 | Buscando un MÁXIMO | Barra interior: sin nuevo máximo, mínimo de referencia intacto | nada | nada |
| 2 | Buscando un MÁXIMO | Nuevo máximo, mínimo de referencia intacto | máximo registrado = el máximo de esta vela | mínimo de referencia = el mínimo de esta vela |
| 3 | Buscando un MÁXIMO | Rompimiento: no hay nuevo máximo, pero se cotiza por debajo del mínimo de referencia | Confirmar el máximo registrado como un máximo de oscilación | cambio a MÍNIMO: mínimo seguido = mínimo de esta vela, máximo de referencia = máximo de esta vela |
| 4 | Buscando un MÁXIMO | Barra exterior: nuevo máximo y rompe el mínimo de referencia | Confirmar el máximo de esta propia vela como máximo de oscilación | Cambiar a MÍNIMO: mínimo registrado = mínimo de esta vela; máximo de referencia = máximo de esta vela |
| 5 | Buscando un MÍNIMO | Barra interior: sin nuevo mínimo, máximo de referencia intacto | nada | nada |
| 6 | Buscando un MÍNIMO | Nuevo mínimo, máximo de referencia intacto | mínimo registrado = mínimo de esta vela | máximo de referencia = máximo de esta vela |
| 7 | Buscando un MÍNIMO | Rompimiento: no hay nuevo mínimo, pero se cotiza por encima del máximo de referencia | confirmar el mínimo registrado como mínimo de oscilación | cambio a MÁXIMO: máximo seguido = máximo de esta vela, mínimo de referencia = mínimo de esta vela |
| 8 | Buscando un MÍNIMO | Barra exterior: nuevo mínimo y rompe el máximo de referencia | Confirmar el mínimo de esta propia vela como mínimo de oscilación | cambio a MÁXIMO: máximo registrado = máximo de esta vela, mínimo de referencia = mínimo de esta vela |
Las filas 1–4 y 5–8 son imágenes especulares exactas, por lo que todo el motor solo ocupa unas pocas docenas de líneas.
El caso excepcional: una vela que rompe en ambas direcciones
Las filas 4 y 8 merecen una explicación aparte. Normalmente, una vela o bien prolonga el movimiento o bien rompe la referencia. Una barra exterior puede hacer ambas cosas a la vez: alcanza un nuevo máximo y cotiza por debajo del mínimo de referencia en la misma vela.
En ese caso, ambas reglas la reclaman y se contradicen entre sí. Considerarla una prolongación descarta una ruptura real; considerarla una ruptura confirmaría un máximo que esta misma vela ya ha superado.
La solución es considerar que la propia vela es el swing:
- su propio máximo se confirma como el máximo del swing —no el máximo anterior registrado, que acaba de superar—.
- A continuación, esa misma vela inicia la fase opuesta: el mínimo registrado se convierte en su mínimo y el de referencia, en su máximo.
Así, una sola vela contiene tanto un máximo del swing como el inicio del movimiento bajista. En el gráfico, esto se muestra como un marcador por encima y por debajo de la misma barra, con un tramo vertical entre ambos —que es exactamente lo que ocurrió dentro de esa 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.
No se vuelve a dibujar
El extremo registrado es provisional y nunca se traza. Un swing solo se anota en el gráfico en la vela que lo confirma y, una vez anotado, nunca se mueve, se cambia de color ni se elimina. Solo se evalúan las velas cerradas; la vela en formación se ignora por completo.
La contrapartida es clara y merece la pena mencionarla: el retraso en la confirmación. El swing más reciente solo aparece tras la ruptura que lo valida. Si quieres un marcador en el instante en que se registra un nuevo máximo, esta no es la herramienta adecuada, ya que ese marcador tendría que moverse más tarde, lo que supone un repintado.
Parámetros
Detección
| Entrada | Por defecto | Qué hace |
|---|---|---|
| Empieza por buscar | Buscar un máximo de oscilación | El lado que busca el primer tramo. Solo afecta a las barras más antiguas del gráfico; tras la primera confirmación, la dirección viene determinada íntegramente por las rupturas. No lo modifiques a menos que el primer swing de tu historial parezca incorrecto. |
| Ruptura confirmada por | La mecha | «Wick» utiliza el máximo y el mínimo de la vela —la regla literal de Trading Hub— y es el ajuste más sensible. «Close» requiere que la vela cierre por encima de la referencia, lo que ignora las oscilaciones de una sola mecha y ofrece oscilaciones notablemente menos frecuentes, pero más amplias. |
Cómo elegir: empieza con «Mecha». Si trabajas en M1–M15, o con un símbolo con mechas largas y ruidosas, como el oro o un CFD sobre índices, cambia a «Cierre »: elimina la mayoría de las oscilaciones causadas por un pico aislado sin alterar la lógica en ningún otro aspecto. Utilizar un marco temporal más amplio es otra forma de obtener una estructura más amplia; la regla en sí misma no tiene ningún ajuste de sensibilidad ni de período que se pueda modificar.
Visualización
| Entrada | Por defecto | Qué hace |
|---|---|---|
| Traza los marcadores de oscilación | true | Activa o desactiva las flechas. Los búferes permanecen llenos en cualquier caso, por lo que iCustom sigue devolviendo cada oscilación. |
| Código de flecha — oscilación alta / baja | 217 / 218 | Códigos de Wingdings. Alternativas habituales:234/233,241/242, 159 para los puntos. |
| Distancia de la flecha respecto a la barra | 10 | Espacio en píxeles entre la vela y su flecha. Aumenta este valor en gráficos densos. |
| Dibuja las patas entre los oscilaciones | true | La línea punteada en zigzag que conecta oscilaciones consecutivas. Desactívala si ya tienes una línea en zigzag. |
| Color / estilo / grosor de las líneas | plata, punteado, 1 | Aspecto de los trazos. |
Si se desactivan tanto los marcadores como las líneas, queda una instancia puramente computacional, lo cual resulta útil cuando un EA lee los búferes y no se desea que aparezca nada en el gráfico.
Alertas
| Entrada | Por defecto | Qué hace |
|---|---|---|
| Alerta emergente ante un swing confirmado | false | Ventana emergente en el terminal cuando se confirma un swing. |
| Notificación push al confirmarse un swing | false | Se envía al ID de MetaQuotes configurado en Herramientas → Opciones → Notificaciones. |
Las alertas solo se activan con las actualizaciones en tiempo real, nunca mientras el indicador carga el historial, y solo una vez por oscilación.
Uso desde un EA
Dos búferes, ambos no vacíos únicamente en oscilaciones confirmadas (el valor vacío es 0,0):
| Búfer | Contenido |
|---|---|
| 0 | precio de un máximo de oscilación confirmado |
| 1 | Precio de un mínimo de oscilación confirmado |
int h = iCustom(_Symbol, _Period, "SMC_Pullback"); double buf[]; CopyBuffer(h, 0, 0, 100, buf); // máximos de oscilación
El motor de detección se encuentra en una única clase autónoma, CPullbackDetector, sin dependencias de gráficos ni búferes: toma las matrices de precios e informa de los picos confirmados, por lo que se puede copiar directamente en un EA si prefieres no pasar por iCustom.
Lo que no hace deliberadamente
Este indicador se limita a los puntos de oscilación. No etiqueta HH/HL/LH/LL, ni calcula BOS, CHoCH, IDM, bloques de órdenes o niveles de liquidez. Esos son pasos independientes que requieren primero un conjunto fiable de oscilaciones, que es precisamente lo que proporciona este indicador.
El proyecto está disponible en MQL5 Algo Forge. Puedes encontrar el código y las próximas actualizaciones en el enlace que figura a continuación.
El repositorio está aquí: https://forge.mql5.io/SandroBegashvil/SMC-Pullback-CodeBase
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/76451
SuperTrend Indicator
Un indicador SuperTrend personalizado creado partiendo de los principios básicos, que combina una banda de volatilidad basada en el ATR con un mecanismo de trinquete para generar una línea de tendencia nítida que no se repinta. El estado recursivo interno se gestiona mediante búferes de cálculo debidamente registrados, lo que evita los errores de pérdida de estado habituales en las implementaciones con matrices gestionadas manualmente. De la serie de artículos «Creación de indicadores personalizados para principiantes».
Fisher Transform Indicator
Un oscilador de transformada de Fisher construido a partir de principios estadísticos fundamentales: normaliza el precio dentro de un rango acotado y, a continuación, aplica una transformada logarítmica para generar señales de reversión nítidas y bien definidas, en lugar de los giros graduales típicos de los osciladores convencionales. El estado recursivo interno se gestiona mediante búferes de cálculo adecuados para garantizar un comportamiento fiable y correcto en todas las pruebas retrospectivas. De la serie de artículos «Creación de indicadores personalizados para principiantes».
Accumulation/Distribution
El indicador Accumulation/Distribution (Acumulación/Distribución) queda determinado por los cambios que se producen en el precio y en el volumen.
Accelerator Oscillator (AC)
El indicador Acceleration/Deceleration (AC, Aceleración/Desaceleración) mide la aceleración y la desaceleración de la fuerza impulsora del mercado.




