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:
- 22
- Ranking:
- Publicado:
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Detector de bloques de órdenes
La idea que hay detrás
Antes de un fuerte movimiento impulsivo, suele haber una última vela que va en la dirección «equivocada»: la última vela de venta antes de que el precio se dispare al alza, o la última vela de compra antes de que el precio se desplome. Esa vela se interpreta como la huella del flujo de órdenes que impulsó el movimiento: la zona que ocupa es donde probablemente se acumuló una gran posición antes de la ruptura. Este indicador formaliza la detección en tres pasos: confirmar puntos de oscilación fractales genuinos, estar atento a un cierre que supere de forma decisiva uno de ellos con una vela de impulso de cuerpo real (no un empujón débil de tipo doji) y, a continuación, mirar hacia atrás desde esa ruptura para localizar la última vela opuesta; el rango de esa vela se convierte en el bloque de órdenes.
Al igual que los detectores de brechas y de barridos de liquidez de esta serie, una zona aquí está realmente activa: mientras no se mitigue, sigue extendiéndose hacia adelante hasta la barra actual, y en el instante en que el precio vuelve a entrar en ella, el recuadro se congela exactamente en esa barra y (por defecto) se vuelve gris; así, de un vistazo se puede distinguir qué zonas siguen «sin probar» y cuáles ya se han vuelto a visitar.
Cómo interpretarlo
- Bloque de órdenes alcista (por defecto, verde/blanco): la última vela con cierre a la baja antes de un cierre impulsivo por encima de un máximo de oscilación reciente. Oferta no probada convertida en demanda; a menudo se considera un soporte potencial en un retroceso.
- Bloque de órdenes bajista (por defecto, rojo): la última vela con cierre al alza antes de un cierre impulsivo por debajo de un mínimo oscilatorio reciente. Oferta no probada que se ha convertido en demanda; a menudo se considera como una posible resistencia en un rebote.
- Una zona en expansión (de color): aún sin mitigar; su borde derecho sigue avanzando en tiempo real con la opción InpExtendUntilMitigated activada (por defecto), o se detiene tras un número fijo de barras ( InpExtendBars) si está desactivada.
- Una zona congelada, en gris: el precio ha vuelto a cotizar dentro de ella; el bloque se ha mitigado y su recuadro se detuvo exactamente en esa barra. Configura InpHideMitigatedOBs para eliminar las zonas mitigadas en lugar de mostrarlas en gris.
- Vela de «ruptura» frente al propio bloque de órdenes: el bloque de órdenes es la vela opuesta, no la impulsiva; la vela impulsiva solo se utiliza para confirmar la ruptura de la estructura y nunca se dibuja como una zona en sí misma.
Variables externas (entradas)
| Entrada | Por defecto | Finalidad |
|---|---|---|
| InpSwingLookback | 5 | Barras necesarias a cada lado de una barra candidata para que se confirme como un máximo o mínimo de oscilación. |
| InpMinBreakPoints | 30 | Distancia mínima, en puntos, que debe superar un cierre respecto a un nivel de oscilación para que se considere una ruptura genuina de la estructura. |
| InpMinImpulseBodyPercent | 50,0 | Porcentaje mínimo de cuerpo respecto al rango que debe tener la vela de ruptura; filtra las «rupturas» débiles con mechas largas. |
| InpMaxSearchBarsForOB | 10 | Número de barras hacia atrás, contando desde la vela de ruptura, en las que se busca la vela de bloqueo de órdenes opuesta. |
| InpUseBodyOnly | false | Utiliza únicamente el cuerpo de la vela de bloque de órdenes, en lugar de todo su rango de mechas (máximo-mínimo), para la zona. |
| InpMinZoneSizePoints | 30 | Tamaño mínimo de la zona, en puntos, para que se dibuje un bloque de órdenes detectado. |
| InpMaxOBsToTrack | 30 | Número máximo de bloques de órdenes que se mantienen en el gráfico a la vez; el bloque más antiguo del que se tiene constancia se elimina cada vez que uno nuevo supera este límite. |
| InpExtendUntilMitigated | true | Si es «true», la zona de un bloque no mitigado se sigue extendiendo en tiempo real hasta la barra actual; si es «false», se detiene tras un número fijo de barras. |
| InpExtendBars | 40 | Longitud fija de la extensión (en barras), que solo se utiliza cuando InpExtendUntilMitigated es «false». |
| InpRequireFullCloseForMitigation | false | Si es «true», una vela debe cerrar dentro de la zona para mitigarla; si es «false», basta con que cualquier mecha toque la zona. |
| InpHideMitigatedOBs | false | Si es «true», la zona de un bloque se elimina en el momento en que se mitiga, en lugar de aparecer en gris y mantenerse. |
| InpBullishOBColor / InpBearishOBColor | Verde lima / Rojo | Colores para las zonas de bloques de órdenes alcistas y bajistas no mitigadas. |
| InpMitigatedColor | Gris oscuro | Color al que cambia una zona una vez mitigada (cuando no está oculta). |
| InpFillBox | true | Indica si las zonas de bloqueo de órdenes se rellenan o se dibujan solo como contornos. |
| InpBoxStyle / InpBoxWidth | Sólido / 1 | Estilo y ancho del borde de cada zona. |
| InpShowLabels | true | Muestra una etiqueta de texto con el precio de la zona junto a cada bloque de pedido. |
Uso recomendado
Funciona con cualquier símbolo y cualquier marco temporal; sin embargo, los conceptos de «ruptura de estructura» y «bloque de órdenes» se basan exclusivamente en la acción del precio, sin supuestos específicos para cada símbolo; no obstante, al igual que cualquier método de pivote fractal, InpSwingLookback equilibra la importancia de los niveles con la frecuencia de detección, del mismo modo que lo hace el «Detector de barrido de liquidez» de esta serie. Tanto las rupturas de estructura como su mitigación se evalúan, por diseño, únicamente en barras completamente cerradas, por lo que un bloque no aparecerá ni desaparecerá a mitad de una vela mientras el máximo, mínimo y cierre de la barra actual sigan variando.
InpMinImpulseBodyPercent existe específicamente para evitar etiquetar un cierre apenas perceptible como una «ruptura»: se excluye una vela que apenas supera un nivel de oscilación con una mecha grande y un cuerpo pequeño, ya que eso se acerca más al ruido que a un desplazamiento genuino. En historiales de gráficos muy largos, InpMaxOBsToTrack mantiene limitado el recuento de objetos en lugar de permitir que cada bloque de órdenes históricas se acumule indefinidamente. Este indicador solo lee datos de precios y nunca coloca, modifica ni cierra ninguna orden, por lo que es seguro ejecutarlo en cualquier tipo de cuenta.
Todos los objetos del gráfico se crean bajo un único prefijo de nombre interno y se eliminan por completo mediante ObjectsDeleteAll() en OnDeinit() cuando se desvincula el indicador, por lo que no deja ningún rastro en el gráfico.

Fig. 1. Un bloque de órdenes alcista confirmado por la vela de ruptura impulsiva, posteriormente atenuado, en el XAUUSD M15. Representado en blanco y negro según las directrices de imágenes de Code Base (750×500 px).
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/76878
Perfil de corredores
Muestra las propiedades que hacen que un mismo EA se comporte de forma diferente en otro bróker: horario de negociación, tamaño del contrato, valor del tick, estadísticas de spread, coste del swap y cobertura de la sesión real. Es de solo lectura, no realiza operaciones.
Market Structure Swing Map MT5
Un indicador de estructura de mercado para MT5 que marca claramente los picos máximos (HH), máximos de onda (HL), mínimos de onda (LH) y mínimos absolutos (LL) confirmados directamente en el gráfico.
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.