Análisis de las brechas temporales de precios en MQL5 (Parte II): Creamos un mapa de calor de la distribución de liquidez a lo largo del tiempo
En la primera parte del artículo, examinamos el concepto de brechas temporales y su relación con la actividad institucional. Sin embargo, detectar estas brechas supone solo la mitad del trabajo. Para negociar con eficacia, los tráders necesitan tener una visión completa: dónde el precio permanece mucho tiempo, dónde permanece poco tiempo y cómo interactúan estas zonas entre sí.
Aquí es donde entra en juego nuestro indicador: una herramienta que convierte patrones temporales invisibles en un mapa de calor visual. Si en la primera parte buscábamos anomalías (brechas), ahora estamos construyendo un mapa completo del comportamiento normal de los precios.
La idea básica es sencilla: representar todo el rango de precios como un conjunto de microzonas y, para cada zona, calcular cuánto tiempo ha permanecido el precio dentro de ella. Cuanto más tiempo transcurra, más "caliente" será la zona y más importante resultará para el mercado. El resultado se visualizará mediante una gama de colores que va del rojo frío al azul cálido.
Fundamentos matemáticos: del caos al orden
Cualquier mercado puede concebirse como una lucha continua entre la oferta y la demanda. En los lugares donde esta competencia resulta más intensa, el precio permanece allí durante más tiempo. Matemáticamente, esto se expresa mediante la función de densidad temporal:
T(p) = Σt_i, где цена находится в диапазоне [p-δ, p+δ]
Aquí, p es el nivel de precios estudiado, δ es el tamaño de la zona de análisis y t_i es la duración de cada periodo en que el precio se encuentra en esta zona.
Pero los datos brutos no aportan mucha información: es necesaria una normalización que convierta los valores de tiempo absolutos en porcentajes relativos. Por ello, utilizamos la fórmula:
P(p) = ((T(p) - T_min) / (T_max - T_min)) × 99% + 1%
Esta fórmula garantiza que las zonas "más frías" reciban un 1% de presencia (rojo) y las zonas "más cálidas" reciban un 100% (azul). Todas las demás zonas se distribuirán entre estos extremos en proporción a su importancia.
Arquitectura de la solución: la modularidad como base de la fiabilidad
La creación de un indicador de este tipo requiere una arquitectura bien planificada. Se basa en la estructura PriceLevel, que encapsula toda la información sobre cada nivel de precio:
struct PriceLevel { double price; // Центральная цена уровня double price_high; // Верхняя граница зоны double price_low; // Нижняя граница зоны long time_spent; // Накопленное время в барах double presence_percent; // Процент присутствия color level_color; // Динамический цвет string object_name; // Уникальный идентификатор };
Cada nivel tiene su propia vida: acumula tiempo, recalcula porcentajes y cambia de color. No se trata solo de una estructura de datos, es la esencia viva del mercado.
La innovación clave ha sido el uso de una ventana de análisis deslizante. En lugar de procesar toda la historia disponible (lo que podría llevar segundos), analizamos solo las últimas barras de MaxHistory a través de una ventana de tamaño AnalysisPeriod. Esto garantiza que los resultados sean relevantes y que el desempeño sea aceptable.
El algoritmo: las matemáticas se encuentran con la realidad
El proceso comienza con la determinación del rango de precios para el análisis. El algoritmo encuentra automáticamente el máximo y el mínimo para el periodo estudiado, lo cual le permite adaptarse a la volatilidad de cualquier instrumento.
Este rango se divide luego en zonas iguales. El número de zonas se calcula de forma dinámica: si se especifica el tamaño del tick, se utiliza; de lo contrario, se toma el Point mínimo del instrumento. Al mismo tiempo, el sistema busca un equilibrio entre el nivel de detalle (al menos 50 niveles) y el rendimiento (no más de 1000 niveles).
La parte que requiere más recursos es el conteo del tiempo en cada nivel. Un enfoque ingenuo requeriría comprobar cada barra respecto a cada nivel (complejidad O(n²)). Optimizamos esto a O(n×k), donde k supone el número promedio de niveles afectados por una barra.
// Оптимизация: находим только релевантные уровни для каждого бара int startLevel = MathMax(0, (int)((lowPrice - minPrice) / realTickSize)); int endLevel = MathMin(totalPriceLevels - 1, (int)((highPrice - minPrice) / realTickSize) + 1); for(int levelIdx = startLevel; levelIdx <= endLevel; levelIdx++) { if(DoesBarTouchLevel(highPrice, lowPrice, levels[levelIdx])) { levels[levelIdx].time_spent++; } }
La función DoesBarTouchLevel comprueba si el rango máximo-mínimo de la barra cruza los límites del nivel de precio. La lógica es simple: si el máximo de la barra está por encima del límite inferior del nivel y el mínimo de la barra está por debajo del límite superior, se produce un cruce.
La alquimia del color: transformando los números en imágenes
Una vez calculado el tiempo, comienza la parte más creativa: convertir los datos brutos en una paleta de colores. Nosotros usamos un sistema de cinco pasos: rojo (1%), naranja (25%), amarillo (50%), celeste (75%), azul (100%).
Se produce una interpolación suave entre los puntos clave. Por ejemplo, un nivel con un 37% de presencia recibirá un color entre naranja y amarillo. La interpolación funciona en el espacio RGB:
color InterpolateColor(color color1, color color2, double factor) { // Разложение на RGB компоненты int r1 = (color1 >> 16) & 0xFF; int g1 = (color1 >> 8) & 0xFF; int b1 = color1 & 0xFF; // Линейная интерполяция каждого канала int r = (int)(r1 + (r2 - r1) * factor); int g = (int)(g1 + (g2 - g1) * factor); int b = (int)(b1 + (b2 - b1) * factor); return (r << 16) | (g << 8) | b; }
El resultado son transiciones de color suaves que crean un mapa de calor natural del mercado.
La visualización: del algoritmo al gráfico
Cada nivel de precio se muestra como un rectángulo en el gráfico. La creación de miles de objetos gráficos es una tarea técnicamente compleja que requiere optimización.
Los rectángulos se colocan desde el momento de inicio del análisis hasta el momento actual, abarcando toda el área de interés. Cada objeto está configurado para funcionar en segundo plano: no interfiere con el análisis de gráficos, no se resalta al hacer clic y se vuelve a dibujar automáticamente cuando cambia el nivel de zoom.
El sistema de gestión de objetos incluye un mecanismo para borrar los resultados anteriores antes de renderizar los nuevos. Esto evita la acumulación de "basura" en el gráfico y garantiza la correcta actualización de la visualización.
En tiempo real, el rendimiento resulta fundamental. El indicador usa varios niveles de optimización:
- El primer nivel es la evaluación perezosa. El recálculo solo se produce cuando aparece una nueva barra. El sistema registra la hora de la última actualización e inicia los cálculos solo cuando se produce un cambio.
- El segundo nivel es la optimización de la memoria. Los conjuntos de datos se asignan una sola vez y se reutilizan. Las estructuras de datos están diseñadas para un consumo mínimo de memoria: se usan números largos en lugar de números de doble precisión para los contadores, y se evitan las variables de cadena innecesarias.
- El tercer nivel es la optimización algorítmica. La ventana de análisis deslizante limita la cantidad de datos procesados. La cuadrícula de niveles adaptativa previene la creación de un número excesivo de zonas.
La interpretación de los resultados: qué significan los colores
Las zonas rojas (con una presencia del 1 al 25 %) indican áreas por las que el precio pasa rápidamente. Estas son las posibles zonas de brechas temporales del anterior artículo. Las zonas rojas suelen experimentar rebotes y falsas rupturas, por lo que requieren un enfoque cauteloso.
Las zonas naranjas y amarillas (25-75%) representan áreas de actividad moderada. Aquí el precio se mantiene de forma periódica, pero sin mostrar un dominio evidente. Se trata de zonas de transición que, dependiendo del contexto del mercado, pueden convertirse en niveles de soporte o resistencia. Es precisamente en estas zonas donde mejor funciona la operativa tendencial.
Las zonas azul y celeste (75-100%) son las principales características de nuestro análisis. Es en este punto donde el precio permanece la mayor parte del tiempo, lo cual indica una alta actividad comercial. Estos niveles poseen una fuerte fuerza magnética: el precio regresa a ellos con regularidad, usándolos como soporte para el movimiento o como barrera que superar.
La estrategia más efectiva consiste en negociar con rebotes desde las zonas azules. Cuando el precio se acerca a la zona de máxima presencia, la probabilidad de un cambio de tendencia es sustancialmente mayor que la media. Esto funciona especialmente bien en mercados laterales, donde las zonas azules definen claramente los límites del canal.
Las rupturas que atraviesan las zonas amarillas suelen indicar que el movimiento continúa. Si el precio atraviesa fácilmente la zona de presencia media con un buen volumen, indica que no hay una resistencia importante por delante.
Pues bien, las estrategias de rebote funcionan mejor en las zonas rojas.
La combinación con el análisis de volumen mejora mucho las señales. Cuando la zona azul coincide temporalmente con un volumen elevado en el perfil de volumen, se crea una zona de máxima importancia.
Personalización para diferentes mercados: versatilidad a través de la adaptación.
El mercado Forex, con su alta liquidez, requiere valores elevados de AnalysisPeriod (300-500 barras) y MaxHistory (5 000-8 000 barras). Los movimientos en esta zona son más suaves, por lo que necesitamos un análisis más profundo para identificar las áreas significativas.
El mercado de valores funciona bien con ajustes moderados: AnalysisPeriod 200-300 barras, MaxHistory 3 000-5 000 barras. La estructura de la sesión crea pausas naturales que se reflejan claramente en el mapa de calor.
El tamaño del tick (TickSize) resulta fundamental para un funcionamiento correcto. Si establecemos este valor demasiado bajo, obtendremos un nivel de detalle excesivo sin ningún beneficio práctico. Un valor demasiado alto provocará que se pasen por alto matices importantes. El valor 0 (modo automático) suele ser el óptimo: el sistema seleccionará automáticamente el tamaño en función de las características del instrumento.
La transparencia (Transparency) afecta no solo a la percepción visual, sino también al rendimiento. Los valores altos (70-90%) crean un mapa semitransparente que no interfiere con el análisis de velas japonesas, pero requiere más recursos para su renderizado.
El límite de 1 000 niveles se ha introducido por una razón. MetaTrader 5 tiene limitaciones en cuanto al número de objetos gráficos, y superar los límites razonables provoca una ralentización de la interfaz sin mejorar significativamente la calidad del análisis.
Integración con otras herramientas: sinergia de métodos
El indicador de mapa de calor complementa a la perfección el perfil volumétrico. La coincidencia de las zonas de tiempo azules con los picos de volumen crea áreas de excepcional importancia. Dichas zonas suelen ser clave para el movimiento del precio a largo plazo.
La combinación con los niveles de Fibonacci ofrece resultados interesantes. Cuando los niveles importantes de Fibonacci caen en las zonas azules del mapa de calor, su importancia aumenta sustancialmente. Esto es natural: los niveles matemáticos están respaldados por el comportamiento real de los precios.
Los indicadores de volatilidad (como las bandas de Bollinger) funcionan bien en combinación con un mapa de calor. El ensanchamiento de las bandas en las zonas rojas suele preceder a movimientos fuertes, mientras que el estrechamiento en las zonas azules indica una acumulación de energía para un próximo salto.
Está previsto que la próxima versión del indicador incluya aprendizaje automático para optimizar automáticamente los parámetros de un instrumento específico. El algoritmo analizará las estadísticas de rendimiento del nivel y ajustará la configuración para lograr la máxima eficiencia.
La integración con sistemas de alerta permitirá recibir notificaciones cuando los precios se acerquen a zonas clave. Esto resulta especialmente útil para los tráders de swing trading que no pueden supervisar constantemente los gráficos.
La exportación de datos a sistemas externos abrirá posibilidades para la creación de robots de negociación basados en mapas de calor. Los robots podrán usar la fuerza de los niveles como un filtro adicional para entrar en una posición.
La filosofía del método: el tiempo como moneda de mercado
Este indicador se basa en una idea profunda: el tiempo es la moneda del mercado. Los participantes del mercado emplean el tiempo con la misma consciencia con la que emplean el dinero. Cuanto más tiempo se pasa en un nivel determinado, más emociones, decisiones y capital se asocian a él.

Este vínculo emocional crea la memoria de mercado. Incluso cuando el precio se aleja de un nivel significativo, el recuerdo de este permanece en el subconsciente de los participantes. Al regresar a este nivel, afloran viejos recuerdos: para algunos, son ganancias; para otros, pérdidas. Estos recuerdos influyen en las nuevas decisiones de inversión.
El mapa de calor del tiempo hace visible este recuerdo invisible. Convierte la psicología del mercado en matemáticas, las emociones en algoritmos y la intuición en datos.
Conclusión: una nueva perspectiva sobre viejas verdades
Este indicador no revela principios nuevos; simplemente aclara los ya existentes. Los niveles de soporte y resistencia siempre han existido, pero ahora se pueden medir y clasificar según su importancia. El mapa de calor muestra dónde pasa el tiempo el mercado y, por lo tanto, dónde reside su verdadera fortaleza.En combinación con el indicador de brechas temporales, esto proporciona una visión completa del comportamiento de los principales participantes: dónde actúan con rapidez y dónde se retienen. En conjunto, estas herramientas permiten comprender mejor la estructura del mercado y tomar decisiones basadas en la lógica en lugar de la intuición.
En la siguiente parte, hablaremos sobre cómo combinar todo esto en un único sistema de trading.
Traducción del ruso hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/ru/articles/18661
Advertencia: todos los derechos de estos materiales pertenecen a MetaQuotes Ltd. Queda totalmente prohibido el copiado total o parcial.
Este artículo ha sido escrito por un usuario del sitio web y refleja su punto de vista personal. MetaQuotes Ltd. no se responsabiliza de la exactitud de la información ofrecida, ni de las posibles consecuencias del uso de las soluciones, estrategias o recomendaciones descritas.
Utilizando redes neuronales en MetaTrader
Indicador de estacionalidad por horas, días de la semana y meses
Particularidades del trabajo con números del tipo double en MQL4
Redes neuronales en el trading: Segmentación periódica adaptativa (Generación de tokens)
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Me recuerda: yo solía hacer esto hace mucho tiempo,
En mi opinión, usted tiene sólo un poco incompleta - que queda por revelar la estructura regular (o mostrar que no existe).
Esto no es un mapa de calor, por supuesto - sólo los extremos de la parte regular de un mapa de temperatura similar.
Por cierto, el mapa se calcula utilizando el método más laborioso y propenso a errores.
Todo es más simple - para cada vela 2 pares {precio,peso} : { precio=alto, peso=-1; } { precio=bajo,peso=+1;} La colección se ordena por precio, la suma con acumulación por peso es el mapa de calor. Luego se cuantifica como se quiera.