Heiken Ashi No Wick Signal Filter Arrows NoRepaint
- Indicadores
- Versión: 3.17
HA Signal MultiFilter MT5 - Manual técnico de funcionamiento y guía de arquitectura
1. DESCRIPCIÓN GENERAL DEL SISTEMA Y FUNDAMENTOS ARQUITECTONICOS
HA Signal MultiFilter MT5 es un indicador analítico especializado desarrollado para la plataforma MetaTrader 5 con el fin de identificar expansiones del impulso direccional y continuaciones de tendencias estructurales [cita: 2]. Mediante la síntesis del descubrimiento de precios de las velas Heiken Ashi suavizadas con un conjunto modular de filtros de confirmación secundaria de 15 capas, el sistema extrae los cambios de mercado de alta probabilidad al tiempo que filtra el ruido de consolidación de bajo volumen [cita: 1, 2]. El programa funciona dentro de la ventana principal del gráfico a través de 7 búferes de indicadores nativos: los búferes del 0 al 3 calculan las coordenadas geométricas de Heiken Ashi (HA Open, HA High, HA Low, HA Close), el búfer 4 se encarga de la indexación direccional del color de las velas, y los búferes 5 y 6 trazan valores numéricos discretos para las señales confirmadas de flechas de compra y venta, lo que permite una integración completa con los Expert Advisors automatizados a través de la función iCustom de MQL5 [cita: 2].
2. CÁLCULO MATEMÁTICO Y LÓGICA SIN REPINTADO
El indicador funciona según un modelo de ejecución de barras cerradas que evita el repintado de señales[cite: 1, 2]. La geometría de la vela se calcula de la siguiente manera:
- HAClose = (Open + High + Low + Close) / 4,0, lo que representa el precio de cierre sintético del período[cite: 2].
- HAOpen = (HAOpen[anterior] + HAClose[anterior]) / 2,0, lo que forma un punto medio recursivo anclado al impulso anterior[cita: 2].
- HAHigh = MathMax(Máximo, MathMax(HAOpen, HAClose)), que establece el límite superior del precio[cita: 2].
- HALow = MathMin(Mínimo, MathMin(HAOpen, HAClose)), que establece el límite inferior extremo del precio[cita: 2].
Una vela se clasifica como alcista (color 0) cuando HAClose > HAOpen, y como bajista (color 1) cuando HAClose <= HAOpen[cita: 2]. El algoritmo analiza secuencialmente las barras históricas hasta el índice (rates_total - 2)[cita: 2]. El índice de la barra (rates_total - 1), que representa la vela que se está formando en tiempo real, se calcula estrictamente con fines de geometría visual, sin generar señales de flecha ni enviar alertas[cita: 1, 2]. Una vez que la vela (rates_total - 2) se completa y su precio de cierre queda registrado por el feed del bróker, los valores de cálculo se fijan de forma permanente [cita: 1, 2]. Las señales nunca se desplazan, alteran su ubicación ni desaparecen en los datos históricos [cita: 1, 2].
3. VALIDACIÓN DE LA SEÑAL DE ENTRADA Y MECÁNICA DE LA MECHA PLANA
La ejecución requiere que se cumplan simultáneamente tanto los criterios estructurales de las velas como las condiciones del filtro técnico activo [cita: 1, 2]:
- Transición direccional de color: se produce una transición alcista cuando la vela anterior cerró a la baja y la vela actual cerrada pasa a ser alcista, lo que establece waitingBull en «true» [cita: 2]. Se produce una transición bajista cuando la vela anterior cerró al alza y la vela actual cerrada pasa a ser bajista, lo que establece waitingBear en «true» [cita: 2].
- Geometría de mecha plana (velas sin cuerpo): Las señales exigen una expansión direccional estricta de la vela[cite: 2]. Las señales de compra requieren que NormalizeDouble(HALow[i], _Digits) == NormalizeDouble(HAOpen[i], _Digits), lo que confirma la ausencia de mecha inferior (los compradores mantuvieron una presión alcista continua desde la apertura)[cite: 2]. Las señales de venta requieren que NormalizeDouble(HAHigh[i], _Digits) == NormalizeDouble(HAOpen[i], _Digits), lo que confirma la ausencia de mecha superior (los vendedores mantuvieron una presión bajista continua desde la apertura)[cite: 2].
- Coordenadas de ejecución: una vez confirmadas, las señales de compra registran el nivel de precio en HALow[i] - (SignalDistance * _Point) en el búfer 5[cita: 2]. Las señales de venta registran el nivel de precio en HAHigh[i] + (SignalDistance * _Point) en el búfer 6 [cita: 2].
4. LÓGICA DE FILTRO MODULAR Y REGLAS MATEMÁTICAS DE DECISIÓN
El indicador proporciona 15 capas de confirmación independientes que se evalúan simultáneamente [cita: 2]. Cualquier filtro activado que devuelva «falso» anula instantáneamente la señal de operación [cita: 2]:
- Filtro de cruce del RSI: evalúa el índice de fuerza relativa (RSI) a lo largo de RSI_Length con RSI_Price_Source[cite: 2]. La condición de compra requiere una ruptura al alza desde niveles de sobreventa: (rsi[idx] > sobreventa && rsi[idx + 1] <= sobreventa)[cite: 2]. La condición de venta requiere una ruptura a la baja desde niveles de sobrecompra: (rsi[idx] < sobrecompra && rsi[idx + 1] >= sobrecompra)[cite: 2].
- Filtro ADX: evalúa el índice de movimiento direccional medio (ADX) a lo largo de ADX_Period[cite: 2]. Tanto la condición de compra como la de venta exigen que adx[idx] >= ADX_Min_Level, lo que suprime las entradas durante los movimientos laterales del mercado[cite: 2].
- Filtro de media móvil simple: compara el cierre real de la barra con una media móvil calculada con MA_Period, MA_Method y MA_Shift[cite: 2]. La condición de compra requiere que close[i] > ma[idx]; la condición de venta requiere que close[i] < ma[idx][cite: 2].
- Filtro Ichimoku Senkou Span B: evalúa el punto medio de equilibrio de los extremos históricos de los precios a lo largo de las barras Ichimoku_SenkouB, desplazadas por las barras Ichimoku_Kijun mediante la función interna CalcSenkouSpanB: SenkouSpanB = (máximo más alto + mínimo más bajo) / 2,0 [cita: 2]. La compra requiere que close[i] > senkouB; la venta requiere que close[i] < senkouB [cita: 2].
- Filtro RSI 75: evalúa el sesgo del régimen macroeconómico utilizando un período RSI ampliado (RSI_Filter_Period)[cite: 2]. Para comprar se requiere que rsi75[idx] > 50,0; para vender se requiere que rsi75[idx] < 50,0[cite: 2].
- Filtro de doble media móvil: evalúa la alineación de dos curvas de media móvil comparando la media móvil rápida (MA_A_Period, MA_A_Method, MA_A_Applied, MA_A_Shift) con la media móvil lenta (MA_B_Period, MA_B_Method, MA_B_Applied, MA_B_Shift)[cite: 2]. Para comprar se requiere que ma_a[idx] > ma_b[idx]; para vender se requiere que ma_a[idx] < ma_b[idx][cite: 2].
- Módulo «Awesome Oscillator»: evalúa el impulso del mercado mediante tres subfiltros seleccionables: el filtro de volumen AO exige que ao_now >= AO_Buy_Min para comprar y que ao_now <= AO_Sell_Max para vender [cita: 2]; El filtro de color AO impone una aceleración de barra a barra que requiere que ao_now > ao_prev para la compra y que ao_now < ao_prev para la venta [cita: 2]; El filtro de cero del AO exige una alineación direccional con la línea cero, lo que requiere (ao_now > ao_prev && ao_now > 0) para la compra y (ao_now < ao_prev && ao_now < 0) para la venta [cita: 2].
- Filtro SAR parabólico: evalúa la posición del precio en relación con el SAR parabólico calculado mediante SAR_Step y SAR_Maximum [cita: 2]. La compra requiere que close[i] > sar[idx]; la venta requiere que close[i] < sar[idx] [cita: 2].
- Filtro Heiken Ashi: Impone la alineación de la polaridad de las velas, requiriendo que currBull == true para la compra y que currBull == false para la venta [cite: 2].
- Filtro de tendencia CCI: utiliza el índice de canal de materias primas (CCI) sobre CCI_Period con CCI_Applied [cita: 2]. Para comprar se requiere que cci[idx] > 0,0; para vender, se requiere que cci[idx] < 0,0 [cita: 2].
- Filtro CCI de sobrecompra/sobreventa: utiliza el Índice de Canal de Materias Primas (CCI) sobre el periodo CCI_OBOS_Period con CCI_OBOS_Applied [cita: 2]. Para comprar se requiere que cci_obos[idx] > CCI_Sobrecomprado (+100); para vender se requiere que cci_obos[idx] < CCI_Sobrevendido (-100)[cite: 2].
- Filtro de tendencia RVI: evalúa el índice de vigor relativo (RVI) durante el periodo RVI_Period[cite: 2]. Para comprar se requiere que rvi[idx] > 0,0; para vender se requiere que rvi[idx] < 0,0[cite: 2].
- Filtro de señal RVI: evalúa el Índice de Vigor Relativo a lo largo de RVI_Signal_Period comparando la línea principal con la línea de señal[cite: 2]. Para comprar se requiere que rvi_main[idx] > rvi_sig[idx]; para vender se requiere que rvi_main[idx] < rvi_sig[idx][cite: 2].
- Filtro de señal MACD: evalúa la diferencia del histograma del MACD (línea principal menos línea de señal) configurada mediante MACD_FastEMA, MACD_SlowEMA, MACD_SignalSMA y MACD_Applied[cite: 2]. Para comprar se requiere que hist > 0,0; para vender se requiere que hist < 0,0 [ref.: 2].
- Filtro de cero del MACD: evalúa la polaridad absoluta de la línea principal del MACD [cite: 2]. Para comprar se requiere que macd_main[idx] > 0,0; para vender se requiere que macd_main[idx] < 0,0 [cite: 2].
- Filtro de soporte y resistencia: calcula los límites dinámicos del canal a lo largo de las barras del SR_Period identificando el mínimo más bajo y el máximo más alto [cite: 2]. Se define un buffer de zona mediante SR_Zone_Points * _Point [cite: 2]. Para comprar, es necesario que la acción del precio de la vela interactúe con la zona de soporte calculada[cite: 2]. Para vender, es necesario que la acción del precio de la vela interactúe con la zona de resistencia calculada[cite: 2].
- Filtro de retroceso de Fibonacci: utiliza un algoritmo ZigZag integrado (ZigZag_Depth, ZigZag_Deviation, ZigZag_Backstep) para localizar los extremos recientes de las oscilaciones[cite: 2]. Calcula los ratios de retroceso entre Fib_Level_1 (0,382) y Fib_Level_2 (0,618)[cite: 2]. Las señales requieren que el rango de precios de la barra se pruebe dentro de este canal de retroceso[cite: 2].
5. DOCUMENTACIÓN COMPLETA DE LOS PARÁMETROS DE ENTRADA
Configuración del desplazamiento de la señal:
- SignalDistance (por defecto: 30,0) -> Espaciado vertical en puntos entre el marcador de flecha y el extremo de la vela [cita: 2].
Parámetros de cruce del RSI:
- Use_RSI_Cross_Filter (por defecto: false) -> Conmutador principal para el filtro de ruptura del umbral del RSI [cita: 2].
- RSI_Length (por defecto: 14) -> Período de cálculo del oscilador RSI[cite: 2].
- RSI_Price_Source (por defecto: PRICE_CLOSE) -> Enumeración de precios aplicada para el cálculo del RSI[cite: 2].
- Oversold (Por defecto: 30,0) -> Umbral límite inferior para la confirmación de la señal de compra [cita: 2].
- Sobrecompra (Por defecto: 70,0) -> Umbral límite superior para la confirmación de la señal de venta [cite: 2].
Parámetros direccionales del ADX:
- Use_ADX_Filter (por defecto: false) -> Conmutador principal para el filtro de fuerza de la tendencia del ADX [ref.: 2].
- ADX_Period (por defecto: 10) -> Período de suavizado para el indicador ADX [cite: 2].
- ADX_Min_Level (por defecto: 20,0) -> Umbral mínimo de fuerza de la tendencia requerido para una ejecución válida [cite: 2].
Parámetros de la media móvil simple:
- Use_MA_Filter (por defecto: false) -> Conmutador principal para el filtro de tendencia de la media móvil simple [ref.: 2].
- MA_Period (por defecto: 50) -> Período de cálculo de la media móvil [ref.: 2].
- MA_Method (por defecto: MODE_SMA) -> Método de suavizado (SMA, EMA, SMMA, LWMA)[cite: 2].
- MA_Shift (por defecto: 0) -> Desplazamiento horizontal de la barra para el cálculo de la media móvil[cite: 2].
Parámetros de Ichimoku Senkou Span B:
- Use_Ichimoku_Filter (por defecto: false) -> Conmutador principal para el filtro de equilibrio del Senkou Span B [cite: 2].
- Ichimoku_SenkouB (Por defecto: 52) -> Período de retrospectiva utilizado para calcular la media de los máximos y mínimos extremos [cita: 2].
- Ichimoku_Kijun (por defecto: 26) -> Desplazamiento de la barra aplicado al Senkou Span B [cita: 2].
Parámetros del RSI 75 de línea de base larga:
- Use_RSI75_Filter (Por defecto: false) -> Conmutador principal para el filtro de sesgo del RSI a largo plazo [cite: 2].
- RSI_Filter_Period (por defecto: 75) -> Período de suavizado ampliado para el cálculo del RSI de referencia[cite: 2].
Parámetros de la media móvil doble:
- Use_DoubleMA_Filter (por defecto: false) -> Conmutador principal para el filtro de alineación de tendencia de doble media móvil [cite: 2].
- MA_A_Period (por defecto: 30) -> Período de promedio retrospectivo para la media móvil rápida [ref.: 2].
- MA_A_Method (por defecto: MODE_EMA) -> Método de suavizado aplicado a la media móvil rápida [ref.: 2].
- MA_A_Applied (por defecto: PRICE_CLOSE) -> Enumeración de precios aplicada a la media móvil rápida [cite: 2].
- MA_A_Shift (por defecto: 0) -> Desplazamiento horizontal de la barra para la media móvil rápida [cite: 2].
- MA_B_Period (por defecto: 140) -> Período de promediado retrospectivo para la media móvil lenta [cite: 2].
- MA_B_Method (Por defecto: MODE_EMA) -> Método de suavizado aplicado a la media móvil lenta [ref.: 2].
- MA_B_Applied (por defecto: PRICE_CLOSE) -> Enumeración de precios aplicada a la media móvil lenta [cite: 2].
- MA_B_Shift (por defecto: 0) -> Desplazamiento horizontal de la barra para la media móvil lenta [cite: 2].
Parámetros del oscilador Awesome:
- Use_AO_Filter (por defecto: false) -> Conmutador principal para el análisis del oscilador Awesome [cita: 2].
- Use_AO_Volume_Filter (por defecto: false) -> Activa las comprobaciones de umbrales de valor absoluto[cite: 2].
- AO_Buy_Min (por defecto: 4,0) -> Valor positivo mínimo requerido para las operaciones de compra [ref.: 2].
- AO_Sell_Max (por defecto: -4,0) -> Valor negativo máximo requerido para las operaciones de venta[cite: 2].
- Use_AO_Color_Filter (por defecto: false) -> Impone la alineación direccional de la pendiente de las barras del histograma [cite: 2].
- Use_AO_Zero_Filter (Por defecto: false) -> Impone la polaridad del histograma en relación con la línea cero[cite: 2].
Parámetros del SAR parabólico:
- Use_SAR_Filter (por defecto: false) -> Conmutador principal para el seguimiento de precios del SAR parabólico [cita: 2].
- SAR_Step (Por defecto: 0,02) -> Incremento del factor de aceleración [cita: 2].
- SAR_Maximum (Por defecto: 0,2) -> Límite superior del factor de aceleración[cite: 2].
Parámetros del filtro Heiken Ashi:
- Use_HeikenAshi_Filter (por defecto: false) -> Impone una coincidencia estricta en el color de la vela actual[cite: 2].
Parámetros de tendencia del CCI:
- Use_CCI_Filter (Por defecto: false) -> Conmutador principal para el filtro de la línea cero del CCI de 50 períodos[cite: 2].
- CCI_Period (Por defecto: 50) -> Ventana de cálculo para la evaluación de la tendencia del CCI[cite: 2].
- CCI_Applied (por defecto: PRICE_CLOSE) -> Serie de precios aplicada para el cálculo del CCI[cite: 2].
Parámetros de sobrecompra y sobreventa del CCI:
- Use_CCI_OBOS_Filter (por defecto: false) -> Conmutador principal para la penetración de los límites del CCI[cite: 2].
- CCI_OBOS_Period (por defecto: 14) -> Ventana de cálculo para la evaluación del CCI rápido[cite: 2].
- CCI_OBOS_Applied (Por defecto: PRICE_CLOSE) -> Serie de precios aplicada para el CCI rápido [cite: 2].
- CCI_Overbought (por defecto: 100,0) -> Nivel umbral del límite superior [ref.: 2].
- CCI_Oversold (Por defecto: -100,0) -> Nivel umbral del límite inferior [cite: 2].
Parámetros del Índice de Vigor Relativo:
- Use_RVI_Filter (Por defecto: false) -> Conmutador principal para la dirección de la tendencia del RVI de referencia[cite: 2].
- RVI_Period (por defecto: 75) -> Período de retrospectiva para el cálculo de la tendencia del RVI[cite: 2].
- Use_RVI_Signal_Filter (por defecto: false) -> Conmutador principal para el cruce de la línea de señal del RVI[cite: 2].
- RVI_Signal_Period (por defecto: 20) -> Período de retrospectiva para el cálculo del cruce rápido del RVI[cite: 2].
Parámetros del MACD:
- Use_MACD_Filter (por defecto: false) -> Conmutador principal para la validación de la polaridad del histograma del MACD [cite: 2].
- MACD_FastEMA (Por defecto: 12) -> Período de la media móvil exponencial rápida [cita: 2].
- MACD_SlowEMA (por defecto: 26) -> Período de la media móvil exponencial lenta [cite: 2].
- MACD_SignalSMA (por defecto: 9) -> Período de la media móvil simple de la línea de señal [ref.: 2].
- MACD_Applied (Por defecto: PRICE_CLOSE) -> Serie de precios aplicada para los cálculos del MACD[cite: 2].
- Use_MACD_Zero_Filter (por defecto: false) -> Conmutador principal para la validación del nivel cero de la línea principal del MACD[cite: 2].
Parámetros de soporte y resistencia:
- Use_SR_Filter (por defecto: false) -> Conmutador principal para la verificación de la zona del canal dinámico[cite: 2].
- SR_Period (Por defecto: 50) -> Número de barras históricas analizadas en busca de extremos locales de precio[cite: 2].
- SR_Zone_Points (por defecto: 80,0) -> Ancho del margen de los límites del canal expresado en puntos [cite: 2].
Parámetros de retroceso de Fibonacci:
- Use_Fib_Filter (por defecto: false) -> Conmutador principal para el retroceso de Fibonacci basado en oscilaciones [cita: 2].
- Fib_Level_1 (por defecto: 0,382) -> Ratio de retroceso del límite superficial [cita: 2].
- Fib_Level_2 (por defecto: 0,618) -> Proporción áurea del límite profundo [ref.: 2].
- ZigZag_Depth (por defecto: 12) -> Intervalo mínimo entre barras para la identificación de extremos de oscilación [cita: 2].
- ZigZag_Deviation (por defecto: 5) -> Desviación mínima del precio en puntos requerida para los puntos de oscilación [cite: 2].
- ZigZag_Backstep (por defecto: 3) -> Desplazamiento mínimo entre barras en giros consecutivos de oscilación [cita: 2].
Parámetros de alertas y notificaciones:
- Use_Alert_Popup (por defecto: true) -> Activa el cuadro de diálogo de alerta nativo de la plataforma[cite: 2].
- Use_Alert_Sound (por defecto: true) -> Activa la notificación de alerta sonora [cite: 2].
- Use_Push_Notification (Por defecto: true) -> Envía mensajes push a dispositivos móviles a través del ID de MetaQuotes[cite: 2].
- Use_Email_Alert (por defecto: false) -> Envía notificaciones por correo electrónico a través de la configuración SMTP de la terminal[cite: 2].
- Buy_Sound_File (Por defecto: «alert.wav») -> Archivo de sonido que se reproduce para las señales de compra confirmadas [cite: 2].
- Sell_Sound_File (por defecto: «alert2.wav») -> Archivo de sonido que se reproduce para las señales de venta confirmadas[cite: 2].
6. PROTOCOLO DE ALERTAS Y RECOMENDACIONES OPERATIVAS
El indicador cuenta con un mecanismo optimizado de gestión de eventos que se activa una vez por barra cerrada mediante la verificación interna de la marca de tiempo (last_alert_bar), lo que evita bucles de audio repetidos o el exceso de notificaciones en velas idénticas[cite: 2]. Al aplicarlo por primera vez al gráfico, las barras históricas se trazan sin activar alertas antiguas, lo que garantiza un comportamiento de inicio limpio[cite: 2]. El indicador es totalmente compatible con pares de divisas, materias primas, índices bursátiles y CFD sobre criptomonedas en todos los marcos temporales de MetaTrader 5 (se recomiendan M15 a H1 para garantizar la estabilidad del impulso)[cite: 1, 2]. Los identificadores del indicador se crean en la inicialización y se liberan de forma limpia al desinicializarse (IndicatorRelease) para garantizar la eficiencia de los recursos de la terminal[cite: 2].
7. AVISO SOBRE RIESGOS REGULATORIOS
La negociación de divisas, materias primas, criptomonedas y productos financieros derivados conlleva un alto riesgo de pérdida de capital y puede no ser adecuada para todas las categorías de inversores[cite: 1]. El rendimiento pasado, las pruebas retrospectivas simuladas y la modelización de indicadores no garantizan el rendimiento operativo futuro[cite: 1]. Este software es una herramienta analítica visual diseñada exclusivamente para facilitar la lectura manual de gráficos y no constituye un asesoramiento de inversión ni un mecanismo de rentabilidad garantizada [cita: 1]. Evalúa siempre el comportamiento del indicador en una cuenta de demostración antes de plantearte su uso en condiciones reales [cita: 1].
