Spread Profile by Hour

  • Utilidades
  • Quoc Dat Quach
    Quoc Dat Quach
    Software engineer with 8 years in fintech and mobile, writing MQL4/MQL5 since 2017. I build Expert Advisors, indicators, trade and risk-management panels and utilities for MT4/MT5, and I trade forex and gold on MT5 myself.
  • Versión: 1.0

El «Perfil del spread por hora» genera la distribución del spread de un símbolo para cada hora del día del servidor a partir del historial de ticks de tu bróker, y lo representa en 24 barras. La parte sólida de una barra corresponde al spread mediano de esa hora, mientras que la parte superior más clara alcanza el percentil 90. Introduce el tamaño del stop que sueles utilizar y cada barra se etiquetará con su spread medio como porcentaje de ese stop, de modo que el coste se exprese en la misma unidad que tu riesgo.

Es una herramienta de medición. No realiza órdenes, no utiliza DLL ni WebRequest, y no guarda ningún archivo salvo la exportación a CSV que actives.

Por qué existe: en las estrategias intradía y de scalping, el spread —y no la señal de entrada— suele decidir si una ventaja se mantiene. La terminal muestra el spread en ese momento, y el historial de barras guarda un único valor de spread por barra, lo que oculta lo que ocurrió dentro de la hora. Las mismas reglas pueden funcionar en horas tranquilas y generar pérdidas en el cierre diario o en la apertura de una sesión, simplemente porque el spread en esos momentos es varias veces más amplio. Este indicador lee las propias cotizaciones —cada tick de compra y venta de los últimos N días naturales a través de CopyTicksRange— y las agrupa por hora del día según la hora del servidor.

Lo que calcula para cada hora del servidor, durante los últimos N días naturales (excluyendo el día de hoy), de modo que la imagen no cambie mientras operas:

  • El spread mediano y del percentil 90 en puntos para cada hora en el panel; la media, el máximo y el número de cotizaciones correspondientes a cada hora en la exportación a CSV.
  • Dos modos de muestreo. Recuento de ticks: cada cotización cuenta una vez. Ponderación temporal: cada cotización cuenta por el tiempo que permaneció válida, hasta un máximo de 60 segundos. El recuento de ticks sobrerrepresenta los mercados rápidos, y estos suelen presentar spreads amplios; la ponderación temporal indica qué spread habrías encontrado en un momento aleatorio de esa hora.
  • Un filtro de días laborables, de lunes a viernes, para reglas que operan solo un día de la semana; aumenta con él la profundidad del historial, ya que 20 días naturales solo contienen dos o tres de un mismo día laborable.
  • La vista de costes: al introducir un tamaño de stop en puntos, cada barra se etiqueta con el spread mediano como porcentaje de ese stop, y el encabezado muestra la mediana y el percentil 90 de la hora actual en la misma unidad. Cuando la ventana es demasiado estrecha para mostrar una etiqueta en cada barra, solo la barra con la mediana más alta conserva su etiqueta.
  • El spread mediano de la hora actual en la divisa de la cuenta por cada lote de 1,00, calculado a partir del valor del tick y el tamaño del tick del símbolo.
  • Las horas situadas en ambos extremos de la clasificación de la mediana, hasta tres de cada extremo, en el encabezado. Las horas que comparten una 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 así lo indica.
  • La hora actual del servidor resaltada y el spread en tiempo real representado como una línea discontinua que atraviesa las barras.
  • Exportación opcional en formato CSV de la tabla por horas a MQL5\Files\SpreadProfile_<símbolo>_<aaaaammdd>.csv en UTF-8, que se guarda tras cada cálculo.

Cómo se gestiona el historial de ticks, que es la parte que determina si los datos son fiables: se carga un día por paso del temporizador y se libera inmediatamente, de modo que el gráfico sigue respondiendo con rapidez en el oro o las criptomonedas, que registran más de 100 000 ticks al día. Un día que la terminal aún esté descargando se vuelve a intentar durante unos segundos, y un día cuyos ticks no cubran sus propias barras M1 se vuelve a intentar antes de utilizarlo. Los días se leen desde el más reciente hacia atrás. Cuando tres días de negociación consecutivos no devuelven ningún tick (con un filtro de días laborables, tres días consecutivos de ese día laborable), o diez días seguidos no tienen ni ticks ni barras M1, esos días se leen por segunda vez tras una pausa, y si siguen vacíos, la carga se detiene y el encabezado muestra la fecha del día más antiguo realmente utilizado; una laguna de esa duración en el almacenamiento de ticks del bróker interrumpe la carga de la misma manera. El encabezado también contabiliza los días utilizados como parciales —es decir, ticks que no llegaron a la última barra M1— y los días no disponibles —es decir, barras M1 pero sin ticks—. Un símbolo sin historial de ticks alguno lo indica en unos veinte segundos, en lugar de mostrar un panel vacío. El diario obtiene una línea de resumen por cada cálculo —días utilizados, ticks leídos, horas completadas— más una línea que indica el nombre del archivo CSV cuando la exportación está activa.

Cómo interpretar el panel. Cada barra representa una hora del día en hora del servidor. La parte sólida es la mediana: la mitad de las cotizaciones, o la mitad del tiempo en el modo ponderado por el tiempo, tenían un spread igual o inferior a ese valor. La parte más clara es el percentil 90: una de cada diez cotizaciones tenía un spread mayor que ese. Medidas extraídas de las capturas de pantalla, tomadas en una cuenta de demostración a lo largo de 20 días naturales, de los cuales 17 tuvieron 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, el rollover diario, es de 34 puntos con un percentil 90 de 58. Eso supone el 12 % del stop durante la mayor parte del día y el 68 % en esa hora concreta.
  • GBPUSD, ponderado por tiempo, sin stop introducido: 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 las cotizaciones se agrupan en torno al cambio de día, donde el spread es amplio.
  • XAUUSD, recuento de ticks, stop de 1.500 puntos: la mediana es de 182 puntos en cada hora para la que hay datos, lo que supone el 12 % del stop y 18,20 USD por lote de 1,00; por eso, el encabezado indica esto en lugar de clasificar valores iguales. La ruptura diaria a las 21:00 tiene menos ticks que el mínimo y se muestra como un guion.

La aplicación práctica consiste en tomar una decisión sobre las horas: si tu sistema opera en una hora en la que el spread medio representa una gran parte de tu stop, o bien omites esa hora, o amplías el stop, o compruebas que el movimiento esperado lo compense. El percentil 90 muestra cómo es una ejecución desfavorable, aunque no infrecuente.

Verificación independiente. Las estadísticas por hora se han recalculado a partir de los mismos ticks sin procesar mediante una implementación independiente en Python. La mediana, el percentil 90, la media, el máximo y el recuento de ticks coincidieron para cada hora en ambos modos de muestreo; por ejemplo, el EURUSD a las 20:00 con 10 692 ticks y a las 21:00 con 8 097 ticks, y el GBPUSD a las 21:00 en ambos modos. Pruebas de carga en la misma máquina: 20 días de XAUUSD, 4,29 millones de ticks, en 1 a 3 segundos; 60 días filtrados a los lunes, 2,60 millones de ticks, en 1,3 segundos; 365 días de EURUSD, 9,37 millones de ticks a lo largo de 232 días con ticks, en unos 30 segundos, incluida la segunda lectura de los días anteriores al inicio del historial de ticks. Los tiempos dependen de la densidad de ticks de tu bróker y de si los ticks ya se encuentran en el disco.

Parámetros de entrada: profundidad del historial en días naturales (de 1 a 365, por defecto 20), modo de muestreo, filtro de días de la semana, rango del histograma en puntos con un intervalo de desbordamiento, número mínimo de ticks por hora que se mostrarán, tamaño del stop en puntos (0 desactiva las etiquetas de porcentaje), altura de la ventana, siete colores, de los cuales cuatro se derivan automáticamente si se deja en «Ninguno» (fondo del gráfico, texto y cuadrícula a partir de ese fondo, el límite del percentil 90 a partir del color de la barra), tamaño de la fuente y el indicador CSV. Cada parámetro de entrada está documentado con su propio comentario en la terminal.

Notas y limitaciones. La profundidad del historial de ticks depende de tu bróker y de lo que la terminal ya haya descargado. En la primera ejecución con una profundidad elevada, es posible que la terminal siga descargando ticks; un día que aún se está descargando se vuelve a intentar durante unos segundos y, a continuación, se utiliza como parcial o se omite, por lo que, si la carga se detiene antes de tiempo, vuelve a conectar el indicador una vez que haya finalizado la descarga: la segunda ejecución lee desde el disco. Todas las horas son horas del servidor, por lo que un evento como el rollover puede variar en una hora del servidor entre el horario de verano y el de invierno, y una ventana que abarque el cambio mostrará que se divide entre dos horas contiguas. Las cuentas de demostración y reales, así como los tipos de cuenta estándar, «raw» y «zero», pueden presentar spreads muy diferentes para un mismo símbolo; compruébalo en la cuenta con la que operas. El historial de spreads no predice los spreads futuros: las noticias, los días festivos y la escasa 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. El indicador se abre en una ventana independiente y pueden ejecutarse varias copias en un mismo gráfico, cada una en su propia ventana.

Otros productos de este autor
Un copiador de operaciones local para MetaTrader 5. Copia posiciones entre terminales de MT5 instaladas en el mismo ordenador con Windows o VPS y ajusta el tamaño de cada copia según las especificaciones de los contratos de ambos brókers (tamaño del contrato, valor del tick, divisa de la cuenta), de modo que una copia tiene la misma exposición incluso cuando los dos brókers definen un lote de forma diferente. Nunca abre una segunda copia de la misma posición maestra. Qué hace Se aplica el mismo
Symbol Spec Auditor reúne en un único panel del gráfico la parte de la especificación del contrato de un símbolo que determina el tamaño de la posición y el coste de la operación: valor por punto, coste del spread, margen, swap, reglas de ejecución y sesiones de negociación. Los valores brutos de las especificaciones se convierten en importe por cada lote de 1,00 en la divisa de la cuenta, y los ajustes del bróker que incumplen de forma encubierta las normas sobre el tamaño de los lotes se muest
FREE
Repaint Inspector comprueba si un indicador se actualiza, en lugar de dar por buena la afirmación sin más. Se aplica a un gráfico, se le asigna un nombre a cualquier indicador personalizado y a su lista de parámetros, y vuelve a leer los búferes de ese indicador en las barras que ya se han cerrado, contando cada valor que se mueve, cada valor que aparece y cada valor que desaparece, junto con hasta qué punto en el historial sigue ocurriendo esto. Es una herramienta de medición. En un gráfico nun
FREE
Un libro mayor de MetaTrader 5 que desglosa tus resultados por número mágico, símbolo, día de la semana y hora; muestra las ganancias y pérdidas (P/L) por precio, las comisiones, los swaps y las tasas en columnas separadas; y calcula el spread pagado en cada ejecución y el deslizamiento respecto al precio solicitado. Los totales se comparan con el saldo de la cuenta en cada actualización. Nunca opera en un gráfico. Qué hace Adjúntalo a un gráfico. Lee el historial de operaciones de la cuenta, re
Filtro:
No hay comentarios
Respuesta al comentario