MQL5 permite anclar la lógica de un EA o indicador a ventanas temporales verificables, evitando ejecuciones en baja liquidez, spreads inestables o volumen reducido. El enfoque combina filtros por sesión, por rango horario y por eventos de calendario.
La implementación propuesta añade una capa modular TimeFilter integrada con SessionVisualizer. Se encapsula el estado en CTimeFilterContext, se soportan rangos que cruzan medianoche y se aplican márgenes antes y después de sesiones. El filtro de eventos queda como extensión opcional para mantener portabilidad.
La decisión final se reduce a IsTradingAllowed(), invocada en cada tick o señal. Un EA ejemplo compone CTrade, CSymbolInfo y un gestor de órdenes para normalización de volumen, validación de cuenta y cálculo consistente de SL/TP.
👉 Léelo | Señales | @mql5es
La implementación propuesta añade una capa modular TimeFilter integrada con SessionVisualizer. Se encapsula el estado en CTimeFilterContext, se soportan rangos que cruzan medianoche y se aplican márgenes antes y después de sesiones. El filtro de eventos queda como extensión opcional para mantener portabilidad.
La decisión final se reduce a IsTradingAllowed(), invocada en cada tick o señal. Un EA ejemplo compone CTrade, CSymbolInfo y un gestor de órdenes para normalización de volumen, validación de cuenta y cálculo consistente de SL/TP.
👉 Léelo | Señales | @mql5es
✍4👍2👌1
El artículo profundiza en la eliminación de nodos en un árbol binario en MQL5, mostrando por qué no basta con liberar memoria: antes hay que reajustar el enlace del nodo padre para evitar punteros colgantes y fallos en recorridos o búsquedas.
Para entender la estructura real del árbol, se apoya en los recorridos Pre_Order y Post_Order, explicando cómo su orden permite reconstruir mentalmente las ramas. También demuestra que cambios mínimos en el orden de recorrido producen salidas distintas, así que la interpretación exige revisar el código.
Se añade un método de búsqueda que devuelve la dirección del nodo según su valor, reutilizando el mismo criterio que la inserción. La primera eliminación abordada es la de hojas, implementada de forma iterativa para mantener rendimiento cuando el árbol se degrada.
👉 Léelo | Guía de algotrading | @mql5es
Para entender la estructura real del árbol, se apoya en los recorridos Pre_Order y Post_Order, explicando cómo su orden permite reconstruir mentalmente las ramas. También demuestra que cambios mínimos en el orden de recorrido producen salidas distintas, así que la interpretación exige revisar el código.
Se añade un método de búsqueda que devuelve la dirección del nodo según su valor, reutilizando el mismo criterio que la inserción. La primera eliminación abordada es la de hojas, implementada de forma iterativa para mantener rendimiento cuando el árbol se degrada.
👉 Léelo | Guía de algotrading | @mql5es
👍4❤2✍1👌1
El indicador de posición para un sistema de repetición en MetaTrader 5 se refuerza con dos mejoras clave: mostrar el volumen real de la posición y hacer el interfaz resistente a errores del usuario.
Para el volumen, se añade un OBJ_EDIT (más fácil de posicionar en coordenadas X/Y que OBJ_TEXT) y se reutiliza código ajustando funciones para evitar duplicación. El valor se formatea de forma inteligente: si el volumen no tiene fracción, se muestra como entero; si la tiene, conserva decimales. También se corrige el orden de actualización del viewport para que el objeto no quede desalineado.
Para evitar que el indicador “se rompa” si se borran objetos del gráfico, se captura el evento de eliminación y se recrean los elementos críticos con el orden correcto. Además, se bloquea el recreado de segmentos inexistentes (TP/SL ausentes) usando un marcador interno que distingue “sin segmento” de...
👉 Léelo | Cotizaciones | @mql5es
Para el volumen, se añade un OBJ_EDIT (más fácil de posicionar en coordenadas X/Y que OBJ_TEXT) y se reutiliza código ajustando funciones para evitar duplicación. El valor se formatea de forma inteligente: si el volumen no tiene fracción, se muestra como entero; si la tiene, conserva decimales. También se corrige el orden de actualización del viewport para que el objeto no quede desalineado.
Para evitar que el indicador “se rompa” si se borran objetos del gráfico, se captura el evento de eliminación y se recrean los elementos críticos con el orden correcto. Además, se bloquea el recreado de segmentos inexistentes (TP/SL ausentes) usando un marcador interno que distingue “sin segmento” de...
👉 Léelo | Cotizaciones | @mql5es
👍7✍2❤2👌1
Session Boxes es un indicador para MetaTrader 5 que dibuja rectángulos por sesión (Asia, Londres y Nueva York) marcando el rango máximo-mínimo diario. El cálculo usa datos H1 de forma interna, aunque se aplique sobre cualquier marco temporal.
La lógica se apoya en ventanas horarias configurables en GMT y en un desfase del servidor (InpBrokerGMTOffset) para normalizar tiempos. La función de validación horaria contempla sesiones que cruzan medianoche, evitando errores cuando la hora de inicio supera a la de fin.
Por cada día natural se genera un rectángulo por sesión, desde la primera hasta la última H1 incluida, cubriendo el máximo y mínimo del periodo. Los recuadros se dibujan en el fondo para no ocultar velas y el histórico se limita con InpBoxLookbackDays. Adecuado para XAUUSD, majors e índices; el ajuste clave es el offset GMT del bróker.
👉 Léelo | Señales | @mql5es
La lógica se apoya en ventanas horarias configurables en GMT y en un desfase del servidor (InpBrokerGMTOffset) para normalizar tiempos. La función de validación horaria contempla sesiones que cruzan medianoche, evitando errores cuando la hora de inicio supera a la de fin.
Por cada día natural se genera un rectángulo por sesión, desde la primera hasta la última H1 incluida, cubriendo el máximo y mínimo del periodo. Los recuadros se dibujan en el fondo para no ocultar velas y el histórico se limita con InpBoxLookbackDays. Adecuado para XAUUSD, majors e índices; el ajuste clave es el offset GMT del bróker.
👉 Léelo | Señales | @mql5es
✍4🔥2❤1👌1
El aprendizaje por refuerzo jerárquico en trading se está usando para separar decisiones en niveles: señales macro, selección de activo, entradas/salidas, gestión de riesgo y asignación de cartera. Este diseño mejora adaptabilidad, uso de información multiescala y estabilidad al transferir políticas entre mercados.
El entrenamiento suele combinar RL global con RL local y, en algunos casos, aprendizaje supervisado. Se aplican esquemas por etapas, actualización dinámica y regularización para responder a cambios de régimen.
SAC-X aporta un planificador de alto nivel y “intenciones” con recompensas externas y auxiliares. Entrena fuera de la política y comparte experiencia entre intenciones, útil en entornos con recompensas escasas.
En MQL5, una implementación típica separa recolección de trayectorias (estado-acción-recompensa) y entrenamiento, con estructuras para estado y trayectoria,...
👉 Léelo | Foro | @mql5es
El entrenamiento suele combinar RL global con RL local y, en algunos casos, aprendizaje supervisado. Se aplican esquemas por etapas, actualización dinámica y regularización para responder a cambios de régimen.
SAC-X aporta un planificador de alto nivel y “intenciones” con recompensas externas y auxiliares. Entrena fuera de la política y comparte experiencia entre intenciones, útil en entornos con recompensas escasas.
En MQL5, una implementación típica separa recolección de trayectorias (estado-acción-recompensa) y entrenamiento, con estructuras para estado y trayectoria,...
👉 Léelo | Foro | @mql5es
✍3❤2🔥2👌1
Asesor experto orientado a investigación para detectar patrones de mercado por día de la semana. La lógica compara la dirección de la sesión diaria anterior y permite operar al día siguiente en modo continuación o reversión, seleccionando cualquier combinación de días para medir efectos de calendario en FX, materias primas e índices.
Incluye dimensionamiento por lote fijo o por porcentaje de riesgo sobre el saldo inicial. Gestión opcional con Stop Loss y Take Profit basados en ATR diario, además de un filtro de volatilidad y cierre forzado por hora (CloseHour) para aislar el efecto intradía.
Opera con velas D1 independientemente del gráfico; las entradas se validan solo en la apertura de una nueva vela diaria. Se limita a una posición por símbolo y usa MagicNumber para identificación. Si no hay Stop Loss, no aplica cálculo por riesgo.
Backtest 2016-2026 en EURUSD, XAUUSD y SP500; e...
👉 Léelo | Freelance | @mql5es
Incluye dimensionamiento por lote fijo o por porcentaje de riesgo sobre el saldo inicial. Gestión opcional con Stop Loss y Take Profit basados en ATR diario, además de un filtro de volatilidad y cierre forzado por hora (CloseHour) para aislar el efecto intradía.
Opera con velas D1 independientemente del gráfico; las entradas se validan solo en la apertura de una nueva vela diaria. Se limita a una posición por símbolo y usa MagicNumber para identificación. Si no hay Stop Loss, no aplica cálculo por riesgo.
Backtest 2016-2026 en EURUSD, XAUUSD y SP500; e...
👉 Léelo | Freelance | @mql5es
✍3👍2👌1
La transformada de Fourier descompone una serie temporal en componentes de frecuencia, representadas como números complejos con amplitud y fase. En producción se trabaja con un conjunto discreto y finito de frecuencias, equilibrando precisión y coste computacional. La FFT automatiza estos cálculos; en MQL5 puede usarse CFastFourierTransform (Math\Alglib\fasttransforms.mqh).
En trading cuantitativo, el espectro puede apoyar análisis de ciclos en precios, indicadores macro y de mercado, procesamiento de señales, gestión de riesgo crediticio, modelos de opciones, sentimiento y vectorización para ML.
Como ejemplo de implementación, se plantea transformar el rango (high-low), correlacionar componentes concretos con cambios futuros del rango y ajustar trailing stop en una CExpertTrailing personalizada, combinada con SignalRSI.mqh y gestión de capital.
👉 Léelo | Guía de algotrading | @mql5es
En trading cuantitativo, el espectro puede apoyar análisis de ciclos en precios, indicadores macro y de mercado, procesamiento de señales, gestión de riesgo crediticio, modelos de opciones, sentimiento y vectorización para ML.
Como ejemplo de implementación, se plantea transformar el rango (high-low), correlacionar componentes concretos con cambios futuros del rango y ajustar trailing stop en una CExpertTrailing personalizada, combinada con SignalRSI.mqh y gestión de capital.
👉 Léelo | Guía de algotrading | @mql5es
❤6👍2✍1👌1
FoxWave Daily Range Tracker muestra en tiempo real el rango del día frente al rango medio diario (ADR), indicando qué porcentaje del movimiento habitual ya se ha consumido en la sesión.
Calcula automáticamente máximos y mínimos de hoy para el símbolo del gráfico y el rango en pips, con manejo correcto del tamaño de pip en brókers de 3/5 dígitos y pares con JPY.
El ADR se obtiene sobre un periodo configurable (14 días por defecto) usando solo velas diarias cerradas. Incluye un indicador visual de “% de rango usado” con barra por colores: verde <60%, amarillo 60–90%, rojo >90%.
Panel de un solo símbolo, sin configuración obligatoria. Colores, posición y frecuencia de actualización ajustables. Consumo bajo de CPU, apto para ejecutarse en múltiples gráficos. Útil en intradía, scalping y validación de rupturas en swing.
👉 Léelo | Guía de algotrading | @mql5es
Calcula automáticamente máximos y mínimos de hoy para el símbolo del gráfico y el rango en pips, con manejo correcto del tamaño de pip en brókers de 3/5 dígitos y pares con JPY.
El ADR se obtiene sobre un periodo configurable (14 días por defecto) usando solo velas diarias cerradas. Incluye un indicador visual de “% de rango usado” con barra por colores: verde <60%, amarillo 60–90%, rojo >90%.
Panel de un solo símbolo, sin configuración obligatoria. Colores, posición y frecuencia de actualización ajustables. Consumo bajo de CPU, apto para ejecutarse en múltiples gráficos. Útil en intradía, scalping y validación de rupturas en swing.
👉 Léelo | Guía de algotrading | @mql5es
👍2✍1🔥1👌1
Swap Meter ofrece monitorización en tiempo real de los swaps de COMPRA y VENTA del símbolo activo, mostrando los valores en un panel compacto y legible. La visualización usa codificación por color para diferenciar swap positivo, negativo o cero, facilitando la lectura rápida del coste o rendimiento por mantener posiciones overnight.
Incluye detección de cambios con alertas configurables: ventana emergente, registro en terminal y notificación push, activables de forma independiente. Un umbral de sensibilidad ajustable ayuda a filtrar variaciones por redondeo, y un resaltado intermitente marca cada actualización detectada.
El panel permite personalizar colores, ubicación y frecuencia de actualización. Está optimizado para ejecución continua con bajo consumo de CPU, orientado a carry trade, swing y seguimiento inmediato de ajustes de financiación del bróker sin revisión manual.
👉 Léelo | CodeBase | @mql5es
Incluye detección de cambios con alertas configurables: ventana emergente, registro en terminal y notificación push, activables de forma independiente. Un umbral de sensibilidad ajustable ayuda a filtrar variaciones por redondeo, y un resaltado intermitente marca cada actualización detectada.
El panel permite personalizar colores, ubicación y frecuencia de actualización. Está optimizado para ejecución continua con bajo consumo de CPU, orientado a carry trade, swing y seguimiento inmediato de ajustes de financiación del bróker sin revisión manual.
👉 Léelo | CodeBase | @mql5es
✍1👌1
El artículo explora cómo combinar MACD (tendencia/impulso) con OBV (presión de volumen) para construir patrones de señal en un EA para MetaTrader 5.
Se optimiza en GBP/JPY durante 2023 y se valida en 2024, ajustando pesos de señal, “gaps” de entrada y take profit, sin stop-loss: las salidas dependen de un umbral de cierre de una clase de señal personalizada, lo que eleva el riesgo de sobreajuste y exige cautela por la muestra corta.
La lógica de patrones se controla con un bitmask (10 patrones, valores 0–1023) para activar combinaciones. Entre los patrones probados: cruce MACD con tendencia OBV, cruce de línea cero con OBV en extremos, y divergencias precio–MACD confirmadas por OBV. Varios no superan el forward, destacando la necesidad de filtros (RSI, pendiente MA), marcos H1–H4 y control de señales repetidas.
👉 Léelo | Calendario | @mql5es
Se optimiza en GBP/JPY durante 2023 y se valida en 2024, ajustando pesos de señal, “gaps” de entrada y take profit, sin stop-loss: las salidas dependen de un umbral de cierre de una clase de señal personalizada, lo que eleva el riesgo de sobreajuste y exige cautela por la muestra corta.
La lógica de patrones se controla con un bitmask (10 patrones, valores 0–1023) para activar combinaciones. Entre los patrones probados: cruce MACD con tendencia OBV, cruce de línea cero con OBV en extremos, y divergencias precio–MACD confirmadas por OBV. Varios no superan el forward, destacando la necesidad de filtros (RSI, pendiente MA), marcos H1–H4 y control de señales repetidas.
👉 Léelo | Calendario | @mql5es
❤1👍1👌1
El artículo explica por qué evitar recursividad al borrar nodos en árboles: en estructuras profundas, apilar llamadas encarece el mantenimiento. En búsqueda ocurre algo similar, pero el reto real es controlar el equilibrio para no alargar rutas de acceso.
Se muestra cómo el valor de un árbol de búsqueda está en reducir comparaciones: un árbol binario equilibrado puede localizar 1.000.000 de registros recorriendo cerca de 20 nodos, gracias al crecimiento por niveles. Con más hijos por nodo, el número de niveles baja, a cambio de decidir mejor el camino en cada salto.
Se introduce el factor de equilibrio local como diferencia de alturas entre subárboles, con una función parametrizada para medir alturas. El reequilibrado se plantea mediante rotaciones, que corrigen relaciones padre-hijo sin romper el orden de claves, y se anticipa la optimización: almacenar alturas por nodo para evitar...
👉 Léelo | Calendario | @mql5es
Se muestra cómo el valor de un árbol de búsqueda está en reducir comparaciones: un árbol binario equilibrado puede localizar 1.000.000 de registros recorriendo cerca de 20 nodos, gracias al crecimiento por niveles. Con más hijos por nodo, el número de niveles baja, a cambio de decidir mejor el camino en cada salto.
Se introduce el factor de equilibrio local como diferencia de alturas entre subárboles, con una función parametrizada para medir alturas. El reequilibrado se plantea mediante rotaciones, que corrigen relaciones padre-hijo sin romper el orden de claves, y se anticipa la optimización: almacenar alturas por nodo para evitar...
👉 Léelo | Calendario | @mql5es
👌2❤1
El artículo refactoriza el indicador de posiciones para que funcione dentro de un sistema de repetición/simulación, donde no existen posiciones reales en el servidor. La clave es liberar la clase C_ElementsTrade de dependencias directas a la API de posiciones, moviendo las consultas (ticket, TP/SL, símbolo) al código principal y pasando datos por parámetros y variables internas.
Se simplifica la propagación de eventos: el cambio de modo de visualización se aplica a todos los indicadores del gráfico, y se dispara un evento adicional para forzar la actualización sin iterar PositionsTotal.
También se corrige la detección de instancias duplicadas usando ChartWindowFind, garantizando un único indicador por posición. Por último, se añade validación visual de coherencia entre stop loss y take profit, marcando configuraciones inválidas durante edición y actualización.
👉 Léelo | Señales | @mql5es
Se simplifica la propagación de eventos: el cambio de modo de visualización se aplica a todos los indicadores del gráfico, y se dispara un evento adicional para forzar la actualización sin iterar PositionsTotal.
También se corrige la detección de instancias duplicadas usando ChartWindowFind, garantizando un único indicador por posición. Por último, se añade validación visual de coherencia entre stop loss y take profit, marcando configuraciones inválidas durante edición y actualización.
👉 Léelo | Señales | @mql5es
❤1👌1