Mira cómo descargar robots gratis
¡Búscanos en Twitter!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Visualizaciones:
18
Publicado:
Actualizado:
SpreadCalculo.mq5 (19.57 KB) ver
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

1. INTRODUCCIÓN Y UTILIDAD

--------------------------------------------------------------------------------

En el trading cuantitativo y algorítmico (Expert Advisors), uno de los mayores factores de discrepancia entre los resultados teóricos de un backtest y los 

resultados reales en cuenta viva (live/forward testing) es el SPREAD FLOTANTE y el DESLIZAMIENTO (slippage) durante las fases de alta volatilidad.


Eventos como la campana de apertura de Wall Street (09:30 NY), la apertura de Londres (08:00 Londres) o la publicación de noticias macroeconómicas provocan frecuentemente ensanchamientos extremos del spread (spread widening) que duran desde unas pocas décimas de segundo hasta varios minutos.


Si un EA entra a mercado o coloca órdenes Stop/Limit durante estos picos con un filtro de spread mal calibrado, ocurren dos problemas graves:

  a) Filtro demasiado permisivo: El broker ejecuta la orden con un coste de spread desorbitado o un deslizamiento severo, devorando gran parte del 

     beneficio esperado de la operación.

  b) Filtro demasiado restrictivo: El EA rechaza sistemáticamente operaciones legítimas y rentables por colocar un umbral inferior a la media real de 

     mercado del broker.

SpreadCalculo.mq5 fue diseñado específicamente para resolver este dilema: audita el historial real de ticks milisegundo a milisegundo en la cuenta y 

servidor del broker, permitiendo determinar con precisión científica y estadística el umbral óptimo de spread (InpMaxSpreadPoints) para cualquier activo y estrategia.


Informe


2. CARACTERÍSTICAS Y ESPECIFICACIONES TÉCNICAS

--------------------------------------------------------------------------------

A) Auditoría Basada en Ticks Reales (Milisegundos)

   - Utiliza la función nativa de alta fidelidad CopyTicksRange (COPY_TICKS_ALL con fallback a COPY_TICKS_INFO).

   - Analiza el diferencial exacto (Ask - Bid) / SYMBOL_POINT tick a tick en cada día hábil del periodo seleccionado.

   - Ignora fines de semana y ticks con cotizaciones anómalas (Ask <= 0 o Bid <= 0).


B) Sincronización Horaria y Auto-DST 100% Automática

   - Elimina la necesidad de calcular desfases manuales entre brokers (+/- horas).

   - Sincroniza automáticamente la hora local del evento con la hora del servidor del broker mediante TimeCurrent(), TimeGMT() y detección de horario de verano:

       • Wall Street Open (09:30 AM NY): Calcula automáticamente el horario EDT (UTC-4) o EST (UTC-5) y lo proyecta al reloj del servidor del broker (típicamente 16:30 en brokers EET/EEST como AMP Global, IC Markets, Tickmill, etc.).

       • London Open (08:00 AM Londres): Aplica el cambio de horario BST (UTC+1) o GMT (UTC+0) británico y lo convierte al reloj del broker (típicamente 10:00 Servidor).

       • Días de Desfase Estacional: Resuelve de forma autónoma las semanas de desfase (finales de marzo y finales de octubre/noviembre) cuando EE.UU. y Europa cambian de hora en fechas distintas.

       • Modos Adicionales: Permite configurar cualquier hora/minuto personalizado del servidor o auditar el día completo (24 horas).


C) Desglose de la Curva de Normalización Temporal

   - Durante la apertura, el spread no se comporta de forma estática; sigue una curva de relajación a medida que entra liquidez al libro de órdenes.

   - El script desglosa los ticks en 8 ventanas temporales independientes:

       1) 00s a 10s (Impacto de la campana / primer shock)

       2) 10s a 30s (Fase de absorción inicial)

       3) 30s a 60s (Transición de la primera vela M1)

       4) 01m a 02m

       5) 02m a 03m

       6) 03m a 05m (Estabilización para velas M5)

       7) 05m a 10m

       8) 10m a 15m (Régimen de spread normal)


D) Métricas Estadísticas Robustas

   - Evita el sesgo de la simple media aritmética calculando percentiles reales:

       • Mínimo Absoluto

       • Media Aritmética

       • Mediana (Percentil 50 / P50): Spread típico del 50% del tiempo.

       • Percentil 90 (P90): El spread se mantuvo por debajo de este valor el 90% del tiempo.

       • Percentil 95 (P95): Filtro de seguridad estándar institucional para descartar picos atípicos.

       • Máximo Absoluto: El peor spread registrado en el histórico analizado.


E) Formateo Limpio de Datos

   - Valores enteros sin decimales superfluos (ej: 18 puntos en lugar de 18.0 pts).

   - Medias aritméticas con 1 decimal de precisión (ej: 15.8 puntos).

   - Uso de la unidad formal "puntos" en todos los informes y alertas.



3. PARÁMETROS DE ENTRADA (INPUTS)

--------------------------------------------------------------------------------

Los parámetros están organizados en grupos visuales estructurados:


─── ■■■■■■■ [ 1 Activo y Periodo de Análisis ] ───

• InpTargetSymbol (string)

  Símbolo del instrumento a auditar (ej: "NQ", "USTECHCash", "EURUSD", "XAUUSD").

  Si se deja vacío (""), utiliza automáticamente el símbolo del gráfico activo.


• InpDaysBack (int)

  Cantidad de días hábiles históricos a analizar (por defecto: 14).

  El script retrocede en el calendario saltando fines de semana hasta recopilar los días hábiles requeridos.


─── ■■■■■■■ [ 2 Horario a Evaluar ] ───

• InpTimeMode (ENUM_TIME_MODE)

  Selector del régimen horario:

    - TIME_MODE_NY_OPEN: Apertura Wall Street (09:30 AM NY con Auto-DST).

    - TIME_MODE_LONDON_OPEN: Apertura Londres (08:00 AM Londres con Auto-DST).

    - TIME_MODE_CUSTOM_SERVER: Horario Personalizado (según inputs siguientes).

    - TIME_MODE_FULL_DAY: Analiza las 24 horas continuas de cada día.


• InpCustomStartHour (int)

  Hora del servidor para inicio si se seleccionó TIME_MODE_CUSTOM_SERVER (ej: 16).


• InpCustomStartMin (int)

  Minuto del servidor para inicio si se seleccionó TIME_MODE_CUSTOM_SERVER (ej: 30).


• InpWindowMinutes (int)

  Duración en minutos de la ventana de auditoría a partir de la hora de inicio (por defecto: 15 minutos).


─── ■■■■■■■ [ 3 Salida y Exportación ] ───

• InpExportCSV (bool)

  Si es true, genera y guarda un archivo estructurado .CSV en la carpeta MQL5/Files.


• InpShowAlertSummary (bool)

  Si es true, despliega una ventana emergente (Alert) de MT5 con el resumen y la recomendación clave al terminar.



4. CÓMO INTERPRETAR LOS RESULTADOS PARA CONFIGURAR UN EA

--------------------------------------------------------------------------------

Al finalizar la ejecución, el script emite tres recomendaciones directas en el registro (pestaña 'Expertos') y en la alerta en pantalla:


1) Si operas INTRA-VELA en los primeros 30 segundos (ej: Scalping de ruptura de campana):

   - Se debe configurar InpMaxSpreadPoints en el Percentil 90 del tramo 0-30s.

   - Permite operar durante la campana sin sufrir el 10% de picos extremos artificiales.


2) Si operas AL CIERRE DE VELA (ej: Velas M1 a M5, como NY_Open_EA):

   - Se debe configurar InpMaxSpreadPoints con el Percentil 95 obtenido a partir del minuto 1 o minuto 5.

   - En este punto el spread ya se ha normalizado, permitiendo un umbral mucho más estricto y seguro.


3) Límite de Seguridad General (P95 Global):

   - Es el valor por debajo del cual cotizó el 95% de todos los ticks de la ventana.

   - Todo spread superior a este umbral se considera anomalía de liquidez y debe ser rechazado por el EA para proteger la cuenta.



5. FORMATO DE SALIDA (CSV)

--------------------------------------------------------------------------------

Cuando InpExportCSV = true, el archivo se almacena en la ruta estándar de MT5:

  <Directorio_Datos_MT5>/MQL5/Files/SpreadCalculo_<SIMBOLO>_<FECHA_HORA>.csv


Contenido del archivo CSV:

- Cabecera con datos del símbolo, días procesados, total de ticks y ventana analizada.

- Resumen global de métricas (Mínimo, Medio, Mediana, P90, P95, Máximo).

- Tabla separada por punto y coma (;) compatible con Excel/Python con el desglose por tramos temporales (Ticks, Media, P95, Máximo).



6. GUÍA DE INSTALACIÓN Y USO EN METATRADER 5

--------------------------------------------------------------------------------

Paso 1: Copiar el script

  Copiar los archivos SpreadCalculo.mq5 y/o SpreadCalculo.ex5 en la carpeta de scripts de tu terminal:

  MQL5/Scripts/SPREAD CALCULO/


Paso 2: Compilación (si se copia el código fuente .mq5)

  Abrir MetaEditor, presionar F7 para compilar. Debe arrojar:

  "Result: 0 errors, 0 warnings".


Paso 3: Descarga de ticks históricos en el broker (Muy importante)

  Para que el análisis sea riguroso, el terminal debe tener en caché los ticks del periodo solicitado:

  1. En MT5, presionar 'Ctrl + U' (Ventana de Símbolos).

  2. Seleccionar el activo deseado y hacer clic en la pestaña 'Ticks'.

  3. Seleccionar una fecha de hace 14 o 30 días y pulsar 'Solicitar' (Request).

  4. Una vez descargada la barra de progreso de ticks, cerrar la ventana.


Paso 4: Ejecución

  1. Arrastrar el script SpreadCalculo desde el panel 'Navegador' -> 'Scripts' hacia el gráfico del activo deseado.

  2. En la ventana de parámetros, elegir el modo (por ejemplo: TIME_MODE_NY_OPEN).

  3. Hacer clic en 'Aceptar'.

  4. En 1-3 segundos aparecerá la alerta en pantalla con las recomendaciones y el informe completo en la pestaña 'Expertos'.


iFVG Indicator With Signals iFVG Indicator With Signals

Indicador iFVG con señales

ZoneUS30 — Reversión y swap positivo a tu favor en el US30 ZoneUS30 — Reversión y swap positivo a tu favor en el US30

ZoneUS30 es un sencillo asesor experto para el US30 centrado en oportunidades de VENTA tras subidas prolongadas de los precios. La estrategia combina el concepto de reversión a la media con la idea del carry trade: cuando las posiciones cortas obtienen un swap nocturno positivo, el EA puede beneficiarse tanto de una corrección del precio como de mantener la posición a lo largo del tiempo. Diseñado para el US30 y destinado a un uso experimental y educativo. Operar en contra de la tendencia conlleva un riesgo significativo, especialmente con lotes de gran tamaño.

Accumulation/Distribution Accumulation/Distribution

El indicador Accumulation/Distribution (Acumulación/Distribución) queda determinado por los cambios que se producen en el precio y en el volumen.

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

El indicador Acceleration/Deceleration (AC, Aceleración/Desaceleración) mide la aceleración y la desaceleración de la fuerza impulsora del mercado.