Termos de Referência
Hola,
Busco un programador experimentado en MQL5 para desarrollar un Expert Advisor (EA) personalizado para MetaTrader 5, diseñado específicamente para operar Petróleo (WTI/Brent) bajo las estrictas reglas de gestión de riesgo de las empresas de fondeo (Prop Firms).
El nombre oficial del proyecto y del archivo debe ser: El Vasco OIL.
A continuación, detallo las especificaciones lógicas y las variables de entrada requeridas:
1. Variables de Entrada (input variables) Obligatorias:
El EA debe exponer el siguiente panel de control en MT5:
mql5
//+------------------------------------------------------------------+
//| El Vasco OIL.mq5 |
//| Copyright 2026, CARLOS GASTON LAVAYEN |
//| https://mql5.com |
//+------------------------------------------------------------------+
#property copyright "Carlos Gaston Lavayen"
#property version "1.00"
#property description "Expert Advisor Profesional para Cuentas de Fondeo"
#property description "Estrategia: Ruptura de Rango e Inyección de Liquidez"
//+------------------------------------------------------------------+
//| VARIABLES DE CONFIGURACIÓN GENERAL |
//+------------------------------------------------------------------+
input string Inp_MagicGroup = "--- CONFIGURACIÓN GENERAL ---"; // Identificador
input int Inp_MagicNumber = 88250; // Número Mágico (Identificador único del EA)
input string Inp_TradeComment = "Oil_Breakout_Prop"; // Comentario de la orden
//+------------------------------------------------------------------+
//| GESTIÓN DE RIESGO AVANZADA |
//+------------------------------------------------------------------+
input string Inp_RiskGroup = "--- GESTIÓN DE RIESGO (PROP FIRM) ---";
input double Inp_RiskPercent = 0.5; // % de Riesgo por Operación (Ej: 0.5% o 1.0%)
input double Inp_MaxDailyLoss = 4.0; // % de Pérdida Máxima Diaria (Cierre de emergencia total)
input int Inp_StopLossPoints = 300; // Stop Loss fijo en Puntos (Si no se usa el estructural)
input int Inp_TakeProfitPoints= 600; // Take Profit fijo en Puntos (Relación 1:2)
input bool Inp_UseBreakeven = true; // ¿Activar Breakeven automático?
input int Inp_BreakevenTrigger= 300; // Puntos en positivo para activar Breakeven
input int Inp_MaxSpreadAllowed= 40; // Spread máximo permitido para abrir órdenes (Puntos)
//+------------------------------------------------------------------+
//| FILTROS DE TIEMPO Y SESIONES |
//+------------------------------------------------------------------+
input string Inp_TimeGroup = "--- CONFIGURACIÓN DE HORARIOS ---";
input string Inp_AsiaStart = "01:00"; // Inicio de la Sesión Asiática (Hora Broker)
input string Inp_AsiaEnd = "07:00"; // Fin de la Sesión Asiática y cálculo de rango
input string Inp_ExecutionStart = "08:00"; // Hora para colocar las órdenes pendientes
input string Inp_ExecutionEnd = "16:00"; // Hora límite para activar órdenes (Cancelación OCO)
input bool Inp_FridayClose = true; // ¿Cierre forzado los viernes? (Evitar Gaps)
input string Inp_FridayCloseTime= "15:30"; // Hora de cierre los viernes (EST / Broker)
//+------------------------------------------------------------------+
//| FILTRO DE NOTICIAS DE ALTO IMPACTO |
//+------------------------------------------------------------------+
input string Inp_NewsGroup = "--- FILTRO DE NOTICIAS (EIA / USD) ---";
input bool Inp_AvoidNews = true; // ¿Evitar noticias de alto impacto?
input int Inp_MinutesBefore = 30; // Minutos antes de la noticia para pausar el EA
input int Inp_MinutesAfter = 30; // Minutos después de la noticia para reactivar el EA
2. Lógica Operativa (Estrategia Breakout):
- Cálculo de Rango: El EA debe identificar el precio Máximo y Mínimo del activo entre Inp_AsiaStart e Inp_AsiaEnd (Hora del Servidor).
- Órdenes Pendientes: A la hora indicada en Inp_ExecutionStart, el EA debe colocar una orden Buy Stop (unos puntos por encima del Máximo) y una orden Sell Stop (unos puntos por debajo del Mínimo).
- Cancelación OCO / Tiempo: Si una orden se activa, la opuesta debe cancelarse automáticamente. Si llega la hora de Inp_ExecutionEnd y ninguna orden se ha ejecutado, el EA debe borrar ambas órdenes pendientes del mercado.
3. Gestión de Riesgo Especial (Requisito Crítico):
- Cálculo Automatizado de Lotes: El tamaño del lote debe calcularse dinámicamente en base al balance actual de la cuenta, el porcentaje asignado en Inp_RiskPercent y la distancia del Stop Loss.
- Filtro de Equidad Diaria (Inp_MaxDailyLoss): El EA debe monitorear constantemente la equidad flotante del día. Si las pérdidas acumuladas (cerradas + flotantes) alcanzan el porcentaje configurado, el EA debe cerrar inmediatamente todas las posiciones abiertas, borrar órdenes pendientes y pausar su operativa hasta el día siguiente. Esto es vital para proteger el drawdown diario de la Prop Firm.
- Filtro de Spread: No permitir la apertura de ninguna orden si el spread actual es mayor que Inp_MaxSpreadAllowed.
- Cierre Forzado de Viernes: Si Inp_FridayClose está activo, el EA debe cerrar de manera obligatoria cualquier posición flotante a la hora exacta definida en Inp_FridayCloseTime para evitar Gaps de fin de semana.
Entregables requeridos:
- Código fuente abierto (.mq5) debidamente comentado.
- Archivo ejecutable (.ex5) compilado sin errores ni advertencias.
Por favor, indícame tu presupuesto, tiempo estimado de entrega y si tienes alguna duda técnica sobre el planteamiento.
Quedo atento. ¡Muchas gracias!