Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 11
- Ranking:
- Publicado:
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
El «Perfil del spread por hora» reconstruye la distribución real del spread para cada hora de servidor a partir del historial de ticks de tu bróker y muestra la mediana y el percentil 90 en forma de 24 barras. Introduce el tamaño habitual de tu stop y cada barra te indicará qué parte de 1R ocupa el spread en esa hora, de modo que las horas más caras del día se ven de un solo vistazo.

EURUSD, recuento de ticks, stop de 50 puntos: 6 puntos (el 12 % del stop) durante la mayor parte del día, 34 puntos (el 68 %) en el rollover de las 21:00
El problema
En los sistemas intradía y de scalping, es el spread —y no la señal de entrada— el que a menudo decide si una ventaja se mantiene. La plataforma muestra el spread actual, pero no cómo se comporta a lo largo del día. Una estrategia probada en horas de poca actividad puede fallar con las mismas reglas en el cambio de sesión, al inicio de la sesión o en torno a las noticias, simplemente porque el spread es varias veces mayor en esos momentos.
El historial de barras solo almacena un valor de spread por barra, lo que oculta la distribución. Este indicador lee los propios ticks: cada cotización de compra/venta de los últimos N días, agrupada por hora del día según la hora del servidor. El resultado es una mediana por hora y un percentil 90 que puedes comparar directamente con tu stop y tu movimiento esperado.
Características
- Mediana por hora, percentil 90, media y spread máximo en puntos, calculados a partir de CopyTicksRange durante los últimos N días naturales. Se excluye el día de hoy, para que la imagen no varíe durante la sesión.
- Dos modos de muestreo:
- Recuento de ticks: cada cotización cuenta una vez.
- Ponderado por tiempo: cada cotización cuenta por el tiempo que permaneció válida (hasta la siguiente cotización, como máximo 60 segundos). El recuento de ticks sobrerrepresenta los mercados rápidos, y los mercados rápidos suelen tener los spreads más amplios. La ponderación por tiempo responde a la pregunta «¿qué spread habría pagado en un momento aleatorio de esta hora?».
- Filtro de días laborables: todos los días, o de lunes a viernes por separado.
- Vista de costes: introduce el tamaño de tu stop en puntos y cada barra se etiqueta con el spread mediano como porcentaje de ese stop. El encabezado muestra la mediana y el percentil 90 de la hora actual como porcentaje del stop.
- Coste del spread mediano en la divisa de la cuenta por 1,00 lote para la hora actual, calculado a partir del valor del tick y el tamaño del tick del símbolo.
- Las horas más baratas y más caras según la mediana, hasta tres de cada tipo. Las horas con la misma mediana se enumeran juntas o se resumen, por ejemplo, «Más baratas: 23 horas a 6 pt», de modo que los valores iguales nunca se presentan como una clasificación. Si todas las horas tienen la misma mediana, el encabezado lo indica.
- La hora actual del servidor aparece resaltada, y el spread en tiempo real se representa con una línea discontinua. Cuando la ventana es demasiado estrecha para mostrar una etiqueta encima de cada barra, la barra más alta conserva su etiqueta.
- Exportación opcional en formato CSV de las estadísticas por hora a MQL5\Files (UTF-8, se abre directamente en Excel).
- Carga un día de ticks por paso del temporizador y libera la memoria inmediatamente, por lo que el gráfico sigue respondiendo con rapidez incluso con el oro o las criptomonedas (100 000 o más ticks al día). Los días en los que la terminal aún está descargando datos se vuelven a intentar durante unos segundos, y un día cuyos ticks no cubran sus barras M1 se vuelve a intentar antes de utilizarlo. En el caso de los días más antiguos que el historial M1 de la terminal (número máximo de barras en el gráfico), no se puede verificar la integridad con respecto a las barras; mientras la terminal está descargando, dicho día solo se utiliza una vez que el recuento de ticks deja de cambiar.
- Se leen primero los días más recientes. Cuando tres días de negociación consecutivos no devuelven ticks (o tres días consecutivos del día de la semana elegido), o diez días seguidos no tienen ni ticks ni barras M1 (un periodo más largo que cualquier festivo bursátil), esos días se leen por segunda vez tras una breve pausa, y si siguen sin tener ticks, la carga se detiene; una laguna en el almacenamiento de ticks del bróker tiene el mismo efecto. Un símbolo sin historial de ticks muestra un mensaje claro en unos 20 segundos, y un historial de ticks más corto que la profundidad elegida se utiliza hasta su inicio. En la primera ejecución con una profundidad larga, es posible que la terminal aún esté descargando; si la carga se detiene antes de tiempo, vuelve a conectarte una vez que haya finalizado la descarga (la segunda ejecución lee desde el disco). El diario de expertos recibe una línea de resumen por cada cálculo.
- A continuación, el gráfico: el fondo toma por defecto el color del gráfico; los colores del texto y de la cuadrícula se adaptan a fondos oscuros o claros, y el diseño se ajusta según los ppp de la pantalla. Se pueden ejecutar varias copias en un mismo gráfico.
- No se necesitan funciones de negociación, DLL ni archivos externos.
Entradas
| Entrada | Por defecto | Descripción |
|---|---|---|
| Profundidad del historial, en días naturales (excluyendo hoy) | 20 | Número de días naturales anteriores a hoy que se van a leer (de 1 a 365). Los fines de semana cuentan como días, por lo que 20 días naturales equivalen a entre 14 y 17 días hábiles. |
| Muestreo | Recuento de ticks | Recuento de ticks o ponderado por tiempo (véase «Características»). |
| Filtro de días laborables | Todos los días | Restringe el perfil a un día de la semana. Aumenta también la profundidad del historial, ya que 20 días naturales solo contienen 2 o 3 de un día concreto de la semana. |
| Rango del histograma, puntos (dispersiones más amplias = desbordamiento) | 5000 | Los rangos más amplios que este valor pasan a un compartimento de desbordamiento. Las estadísticas que caen en el compartimento de desbordamiento se muestran como «>5000». |
| Número mínimo de ticks por hora que se mostrarán | 100 | Las horas con menos ticks se muestran como «-», por ejemplo, el parón diario. |
| Tamaño del stop, puntos (0 = desactivado) | 0 | Tu stop habitual. El valor 0 desactiva las etiquetas de porcentaje y muestra la mediana en puntos en su lugar. |
| Altura de la ventana con escala al 100 %, px (0 = redimensionable) | 240 | Altura fija de la ventana del indicador, escalada según los DPI de la pantalla. El valor 0 permite cambiar el tamaño de la ventana libremente. |
| Fondo (Ninguno = fondo del gráfico) | Ninguno | «Ninguno» utiliza el fondo del gráfico. |
| Barra mediana | Azul | Color de la barra de la mediana. |
| Límite del percentil 90 (Ninguno = color de barra más claro) | Ninguno | La opción «Ninguno» utiliza una versión más clara del color de la barra. |
| Hora actual | Naranja | Color de resaltado de la hora actual del servidor. |
| Línea de spread en tiempo real | Rojo | Color de la línea de spread en tiempo real. |
| Texto (Ninguno = automático) | Ninguno | La opción «Ninguno» elige un color legible para fondos oscuros o claros. |
| Cuadrícula (Ninguna = automática) | Ninguna | La opción «Ninguno» elige un color de cuadrícula que combine con el fondo. |
| Tamaño de fuente, pt | 9 | Tamaño de fuente base. |
| Guardar estadísticas por hora en MQL5\Files (CSV) | false | Guarda el archivo MQL5\Files\SpreadProfile_<símbolo>_<aaaaammdd>.csv tras cada cálculo. |
Cómo interpretarlo
Cada barra corresponde a una hora del día en hora del servidor. La parte sólida representa el spread mediano: la mitad de las cotizaciones, o la mitad del tiempo en el modo ponderado por tiempo, tenían un spread igual o inferior a este valor. La línea más clara alcanza el percentil 90: una de cada diez cotizaciones tenía un spread mayor que ese. La línea discontinua representa el spread en tiempo real, y la columna resaltada indica la hora actual del servidor. Los ejemplos que se muestran a continuación proceden de capturas de pantalla realizadas en una cuenta demo a lo largo de 20 días naturales (17 de ellos con ticks).
- EURUSD, recuento de ticks, stop de 50 puntos: la mediana es de 6 puntos en 23 de las 24 horas. A las 21:00, hora del servidor, momento del rollover diario, es de 34 puntos, con un percentil 90 de 58. El spread mediano ocupa el 12 % de 1R durante la mayor parte del día y el 68 % en esa hora.
- GBPUSD, ponderado por tiempo: 7 puntos en 23 horas, mediana de 46 y percentil 90 de 94 a las 21:00. En el modo de recuento de ticks, esa misma hora registra 54 y 100, ya que los momentos de mayor actividad en la cotización en torno al cambio de día también presentan los diferenciales más amplios.
- XAUUSD, recuento de ticks, stop de 1.500 puntos: la mediana es de 182 puntos (el 12 % del stop, 18,20 USD por lote) en cada hora con datos, por lo que el encabezado lo indica así en lugar de clasificar los valores iguales. La interrupción diaria a las 21:00 no tiene ticks y se muestra como «-».

GBPUSD, ponderado por tiempo, sin stop introducido: 7 puntos en 23 horas, mediana de 46 y percentil 90 de 94 a las 21:00

XAUUSD, recuento de ticks, stop de 1.500 puntos: 182 puntos en cada hora con datos, sin ticks en la pausa diaria de las 21:00
Una interpretación práctica: si tu sistema opera en una hora en la que el spread mediano representa una gran parte de tu stop, o bien omite esa hora, amplía el stop o asegúrate de que el movimiento esperado lo compense. El percentil 90 te indica cómo es una ejecución desfavorable, aunque no infrecuente.
Notas y limitaciones
- La profundidad del historial de ticks depende de tu bróker y de lo que la terminal ya haya descargado. La primera ejecución sobre un periodo largo puede tardar un rato, ya que la terminal descarga los ticks del servidor. Si el historial de ticks termina antes de la profundidad elegida, el encabezado muestra «no hay ticks anteriores» junto con la fecha del día más antiguo utilizado. En el servidor de prueba, por ejemplo, el historial de ticks comenzó el 1 de enero de 2026, mientras que las barras M1 se remontaban a años atrás.
- Todas las horas corresponden a la hora del servidor. Dependiendo de la zona horaria del servidor del bróker y de las normas de horario de verano, un evento como el rollover diario puede variar en una hora del servidor entre verano e invierno. Una ventana de historial que abarque dicho cambio muestra el evento dividido entre dos horas contiguas.
- Las cuentas de demostración y las cuentas reales, así como los diferentes tipos de cuenta (estándar, raw, zero), pueden presentar spreads muy diferentes para un mismo símbolo. Evalúa los datos en la cuenta con la que operas.
- El historial de spreads no garantiza los spreads futuros. Las noticias, los días festivos y los periodos de baja liquidez pueden generar spreads muy por encima del percentil 90 que se muestra aquí.
- El coste por lote utiliza el valor actual del tick, que en el caso de los pares cruzados varía en función del tipo de cambio.
- El perfil se recalcula una vez por cada nuevo día del servidor y cada vez que cambian los datos de entrada, el símbolo o el marco temporal.
- En la máquina de pruebas, 20 días de XAUUSD (4,3 millones de ticks) se cargaron en unos 1 a 3 segundos, 90 días (19 millones de ticks) en unos 8 segundos y 365 días de EURUSD (9,4 millones de ticks en 232 días con ticks) en unos 30 segundos, incluida la segunda lectura de los días anteriores al inicio del historial de ticks, una vez que los ticks estaban en el disco. Los tiempos dependen de la densidad de ticks de tu bróker y de si los ticks ya se encuentran en el disco.
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/77815
SPREAD CALCULADORA (Script)
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.
iFVG Indicator With Signals
Indicador iFVG con señales
Symbol Spec Auditor
Un panel gráfico que muestra los detalles de las especificaciones del contrato que determinan el tamaño de la posición y los costes de negociación (valor por punto, coste del spread, margen, swap y normas de ejecución) en la divisa de la cuenta; avisa de los ajustes del bróker que incumplen de forma encubierta las reglas sobre el tamaño de los lotes; y exporta el informe de auditoría de cada símbolo de Market Watch a un archivo CSV.
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.