Qué es esta página
PD Array Matrix — Teoría ya cubre el concepto ICT completo (qué es un PD array, jerarquía, Premium/Discount, catálogo). Esta página documenta la implementación real en Innova Trading: qué está efectivamente calculado, con qué parámetros, y — el punto más importante — cómo se consulta.Cómo se consulta — 4 tools de trading-bridge
Todos fetchean el snapshot completo del motor ISS (POST /api/iss/query) y extraen la porción relevante:
La clasificación Premium/Discount de cada array (
_classify_zone) es simple: precio medio del array por encima del punto medio del rango actual → PREMIUM; por debajo → DISCOUNT.
Order Blocks
ElOrderBlockConfig real usado por el motor ISS (backend/schemas/iss_engine.py, ~línea 777) es el que gobierna la detección en producción — no confundir con el dataclass OBConfig del módulo standalone backend/indicators/order_blocks/, que tiene menos campos.
Algoritmo de detección (
backend/indicators/order_blocks/detector.py): busca impulsos donde el movimiento desde el low/high más extremo del segmento hasta el cierre final supera min_impulse_atr × ATR(14), con al menos 60% de las velas del segmento en la dirección del impulso durante min_impulse_bars consecutivas. Luego retrocede hasta encontrar la última vela de color opuesto — esa es la vela candidata a OB.
Ciclo de vida: PENDING → VALIDATED → TESTED → (INVALIDATED | EXPIRED). Invalidación: cierre que sobrepasa el lado equivocado de la zona (close < ob.low para bullish, close > ob.high para bearish). Expiración: solo por edad en estado PENDING (age > max_bars).
Niveles calculados: midpoint (Mean Threshold, 50%), premium_level (75%), discount_level (25%) — ver también PD Array Matrix — Teoría para la relación con la zona Premium/Discount del rango general.
Breaker Blocks
Un Bullish CHoCH/BOS que rompe un swing HIGH crea un breaker bullish (soporte); un Bearish CHoCH/BOS que rompe un swing LOW crea un breaker bearish (resistencia). Ciclo de vida:ACTIVE → TESTED → (MITIGATED | INVALIDATED | EXPIRED) — mitigación cuando el precio cierra a través del CE (punto medio de la zona), invalidación cuando cierra completamente a través, expiración por age > max_age (default 100 barras).
Rejection Blocks
Zona formada por una mecha larga: desde el precio de apertura de la vela hasta la punta de la mecha (no el cuerpo).
Bullish = mecha inferior larga; Bearish = mecha superior larga. Mismo ciclo de vida que los otros arrays:
ACTIVE → TESTED → (MITIGATED | INVALIDATED | EXPIRED).
Volume Imbalances y Mitigation Blocks
Ninguno de los dos es un módulo independiente — no existe
backend/indicators/volume_imbalance/ ni backend/indicators/mitigation_block/. Ambos viven inline dentro de otros archivos.- Volume Imbalance: método
detect_volume_imbalances()del propio detector de FVG (backend/indicators/fvg/detector.py) — un micro-gap entre los cuerpos (no las mechas) de dos velas consecutivas. El razonamiento ICT: “el algoritmo no entregó precio eficientemente entre estos 2 puntos”. - Mitigation Block: método
_detect_mitigation_blocks()dentro debackend/services/iss/core.py— patrón estructural de 3 puntos (Low → High → Higher Lowpara bullish,High → Low → Lower Highpara bearish) sin barrido de liquidez (a diferencia de un breaker, que sí requiere una ruptura CHoCH/BOS).
CISD — Change In State of Delivery
Regla ICT literal en el código: “When 3 PD arrays fail, your idea is flawed.” El detector (MarketIntentionScorer.detect_cisd en backend/indicators/cisd/detector.py) trackea fallos consecutivos (state == INVALIDATED) del mismo lado (bullish o bearish). Cuando se acumulan 3 o más fallos consecutivos del mismo lado (cisd_threshold=3), emite un CISDEvent. Cualquier array no-fallido resetea el contador de esa racha.
confidence = min(1.0, suma_de_pesos_fallados / 6.0)- El evento registra
score_before/score_after(el score corriendo antes y después de la racha de fallos) y la lista de IDs de arrays fallados.
Market Intention Score (MIS)
Motor de scoring puro — no detecta nada, solo pondera lo que ya detectaron los detectores individuales. Vive enbackend/indicators/cisd/detector.py (MarketIntentionScorer.calculate_score), invocado desde backend/services/iss/core.py.
Pesos por tipo de array (PD_ARRAY_WEIGHTS):
Lógica de puntos por estado (signo según dirección: bullish
+1, bearish -1):
score = suma de todos los puntos bullish + suma de todos los puntos bearish.
Clasificación:
Recetas
1. Leer el sesgo agregado antes de una entrada manual
1. Leer el sesgo agregado antes de una entrada manual
2. Confirmar una idea con confluencia de arrays
2. Confirmar una idea con confluencia de arrays
get_pd_array_matrix(symbol, timeframe) lista todos los arrays activos clasificados por zona — buscá confluencia (ej. un Order Block y un FVG bullish ambos en Discount) antes de tomar una entrada, siguiendo la jerarquía de PD Array Matrix — Teoría.3. Detectar cambios de sesgo con CISD
3. Detectar cambios de sesgo con CISD
get_cisd_events(symbol, timeframe, limit=10) — si ves 3+ fallos consecutivos del mismo lado con confianza alta, es la señal ICT de “tu idea está mal” — considerá invertir el sesgo en vez de insistir con la dirección original.PD Array Matrix — Teoría
El catálogo ICT completo: jerarquía, Premium/Discount, criterios de calidad.
Innova Smart Structure (ISS)
El motor que produce los swings, rangos y eventos CHoCH/BOS que alimentan estos arrays.