EKF Portfolio Trader es un sistema de trading automatizado de nivel institucional para MetaTrader 5 que aplica el Filtro de Kalman Extendido (EKF) un algoritmo de estimación Bayesiano recursivo, para rastrear y predecir dinámicamente las trayectorias del estado de los precios a través de toda una cartera de instrumentos simultáneamente.
A diferencia de los EAs convencionales basados en indicadores, este sistema trata el precio como una variable de estado oculta, corrompida por el ruido de medición. El EKF refina continuamente su estimación de la verdadera tendencia subyacente mediante pasos de predicción y actualización, produciendo señales estadísticamente óptimas, filtradas por ruido y con incertidumbre cuantificada (covarianza). Las operaciones sólo se introducen cuando la confianza del filtro alcanza un umbral definido, eliminando las entradas impulsivas sobre el ruido aleatorio del mercado.
Incorpora gestión de carteras multisímbolo, dimensionamiento dinámico de posiciones, controles de riesgo en tiempo real y compatibilidad total con MT5, listo para desplegarse en divisas, metales, índices o cualquier instrumento CFD compatible.
📡
Motor de señales EKF
Estimación de estado recursiva con un modelo de 3 componentes (precio, velocidad, aceleración). Rastrea la tendencia real con confianza limitada por la covarianza, adaptándose en tiempo real a los cambios de volatilidad.
🗂️
Modo Cartera
Gestiona múltiples símbolos desde una única instancia de EA. Estados de filtro independientes por instrumento con asignación de riesgo unificada y filtrado de correlación en toda la cartera.
📐
Puerta de entrada Z-Score
Las señales de operación se limitan por el z-score de innovación normalizado del filtro. Sólo las desviaciones estadísticamente significativas del estado previsto desencadenan una entrada.
🛡️
Controles de riesgo por niveles
Dimensionamiento dinámico de lotes, interruptor automático de pérdidas diarias, posiciones concurrentes máximas, verificación de márgenes previa a la orden mediante OrderCalcMargin y comprobaciones de márgenes gratuitas antes de cada orden.
🔄
Ajuste adaptativo del ruido
Las matrices de ruido de proceso (Q) y ruido de medición (R) están totalmente expuestas como entradas, lo que le permite ajustar el filtro entre un rápido seguimiento de tendencias y un comportamiento suave de reversión de medias.
📊
Compatibilidad total con MT5
Probador de estrategias listo con criterio OnTester() personalizado. Auto-detecta los modos de llenado de símbolos y soporta ambos tipos de cuentas de cobertura y compensación.
1
Predecir En cada nueva barra, el EKF proyecta la estimación de estado anterior (precio, velocidad, aceleración) hacia adelante a través del modelo de proceso, inflando la matriz de covarianza de acuerdo con Q.
2
Actualización La nueva observación del precio se compara con la predicción. La ganancia de Kalman equilibra la confianza entre el modelo y la observación en función de sus incertidumbres relativas y, a continuación, corrige la estimación de estado.
3
Generación de señales Se calcula la puntuación z de innovación normalizada. Si supera el umbral configurado y pasa los filtros de tendencia, volumen y correlación, se confirma una señal direccional.
4
Ejecución segura Antes de enviar cualquier orden, el EA verifica el saldo de la cuenta, el margen libre y utiliza OrderCalcMargin para confirmar que hay fondos suficientes. Sólo entonces se envía la orden con niveles SL/TP basados en ATR.
📁 Configuración de la cartera
| Parámetro | Por defecto | Descripción |
| Símbolos de entrada | EURUSD,GBPUSD, XAUUSD,USDCHF, AUDUSD | Lista de símbolos separados por comas para operar simultáneamente. Se admiten hasta 10 símbolos. |
| InpTimeframe | M30 | Marco temporal de análisis utilizado para el procesamiento de barras y todos los cálculos de indicadores. |
| InpMaxSymbols | 10 | Límite máximo del número de símbolos que el EA gestionará simultáneamente. |
Parámetros del modelo EKF
| Parámetro | Por defecto | Descripción |
| InpPhi | 0.85 | Factor de decaimiento de transición de estado aplicado a los componentes de velocidad y aceleración. Rango 0.7-0.95. Los valores más bajos significan un decaimiento más rápido a cero. |
| InpProcessNoise1 | 0.0001 | Varianza del ruido del proceso para el estado del precio (Q₁₁). Más alto = el filtro rastrea los cambios de precios más rápido pero es más ruidoso. |
| InpProcessNoise2 | 0.00001 | Varianza del ruido del proceso para el estado de velocidad (Q₂₂). |
| InpProcessNoise3 | 0.000001 | Varianza del ruido del proceso para el estado de aceleración (Q₃₃). |
| InpMeasurementNoise | 0.001 | Varianza del ruido de observación (R). Mayor = salida del filtro más suave, respuesta más lenta a los cambios de precio. |
📶 Configuración de la señal de entrada
| Parámetro | Por defecto | Descripción |
| InpEntryZThreshold | 1.5 | Puntuación z de innovación normalizada mínima necesaria para activar una operación. Rango 1.0-3.0. Más alto = menos entradas pero de mayor convicción. |
| InpMinBarsBetweenTrades | 10 | Número mínimo de barras que deben pasar después de una operación antes de que el EA entre de nuevo en el mismo símbolo. |
| InpUseVolumeFilter | true | Habilita la confirmación de volumen. Las señales se rechazan a menos que el volumen de la barra actual supere la media móvil en el multiplicador indicado a continuación. |
| InpMinVolumeMultiplier | 1.2 | El volumen de la barra actual debe ser al menos este múltiplo de la media de 19 barras para pasar el filtro de volumen. |
🛡️ Gestión de riesgos
| Parámetro | Por defecto | Descripción |
| InpRiskPercent | 1.5% | Capital de la cuenta arriesgado por operación como porcentaje del saldo. El tamaño del lote se calcula dinámicamente a partir de este valor. |
| InpMaxDailyRisk | 5.0% | Máxima pérdida diaria acumulada como porcentaje del saldo. Las operaciones se detienen durante el resto del día cuando se alcanza este valor. |
| InpMaxDailyTrades | 20 | Número máximo de nuevas operaciones permitidas por día natural en todos los símbolos. |
| InpMaxOpenPositions | 5 | Número máximo de posiciones abiertas concurrentes gestionadas por este EA en un momento dado. |
| InpMaxCorrelation | 0.7 | Evita la apertura de posiciones en pares de símbolos altamente correlacionados en la misma dirección, limitando el riesgo de concentración de la cartera. |
📏 Stop Loss & Take Profit
| Parámetro | Por defecto | Descripción |
| InpATRPeriod | 14 | Periodo ATR utilizado para calcular los niveles objetivo y stop adaptables a la volatilidad. |
| InpSLMultiplier | 2.5× | Distancia stop-loss = ATR × este multiplicador. |
| InpTP1Multiplicador | 2.0× | Primer nivel de toma de beneficios = ATR × este multiplicador. |
| InpTP2Multiplicador | 3.5× | Segundo nivel de beneficios = ATR × este multiplicador (utilizado como TP principal en la ejecución). |
| InpTP3Multiplicador | 5.0× | Tercer nivel de toma de beneficios (ampliado) = ATR × este multiplicador. |
| InpUseTrailingStop | true | Habilita el trailing stop basado en ATR para bloquear los beneficios a medida que la operación se mueve a favor. |
| InpTrailingMultiplier | 1.5× | Distancia del trailing stop = ATR × este multiplicador. |
🔍 Filtros adicionales
| Parámetro | Por defecto | Descripción |
| InpUseTrendFilter | true | Activa el filtro de alineación de tendencia EMA. Las señales sólo se toman en la dirección de la tendencia EMA predominante. |
| InpEMAFast | 20 | Periodo EMA rápido para la detección de la dirección de la tendencia. |
| InpEMASlow | 50 | Periodo EMA lento para la detección de la dirección de la tendencia. |
| InpMinADX | 20.0 | Valor mínimo de ADX necesario para considerar válida una tendencia. Las señales se omiten en mercados oscilantes por debajo de este nivel. |
| InpADXPeriod | 14 | Periodo para el cálculo de la fuerza de la tendencia ADX. |
🕐 Horario de negociación
| Parámetro | Por defecto | Descripción |
| InpUseTimeFilter | true | Restringe la negociación a una ventana de sesión definida utilizando la hora del servidor del broker. |
| InpStartHour | 8 | Hora a la que el EA comienza a aceptar señales de operación (hora del broker, 0-23). |
| InpEndHour | 20 | Hora a la que el EA deja de aceptar nuevas señales comerciales (hora del broker, 0-23). |
⚙️ Configuración del sistema
| Parámetro | Por defecto | Descripción |
| InpMagicNumber | 987654 | Identificador único estampado en todos los pedidos. Cámbielo si ejecuta varias instancias en la misma cuenta. |
| InpTradeComment | EKF_Cartera | Cadena de comentarios adjunta a todas las órdenes comerciales para su identificación en el historial del terminal. |
| InpDebugMode | false | Habilita el registro detallado en el registro de expertos de MT5. Útil para el diagnóstico; desactivar en el comercio en vivo.
|