Aklamavo ICT KillZones
- Indicadores
- Sylvester Aklamavo
- Versión: 1.0
- Activaciones: 5
Este indicador de MetaTrader 5 traza los marcadores de sesión ICT Killzone en el gráfico mediante líneas verticales. Traza las horas de inicio y fin de tres sesiones de negociación institucionales -Asia, Londres y Nueva York- para un número definido por el usuario de días históricos recientes.
No se utilizan buffers ni trazados; en su lugar, el indicador se basa totalmente en objetos del gráfico (OBJ_VLINE).
El indicador permite una personalización completa de cada segmento de la zona muerta:
General
-
DaysToDisplay : número de días pasados para los que se dibujarán las killzones.
Parámetros de zonas de muerte asiáticas
-
AsianHoraInicio , AsianHoraFin
-
ColorAsiático , AnchoAsiático
Parámetros de London Killzone
-
LondresHoraInicio , LondresHoraFin
-
LondresColor , LondresAncho
Parámetros de Nueva York Killzone
-
NYShoraInicio , NYHoraFin
-
NYColor , NYAncho
Estas entradas determinan:
-
La posición de las líneas verticales.
-
Su color.
-
Su grosor en el gráfico.
2.1 ObtenerHoraSesión()
Esta función convierte una fecha a medianoche en una marca de tiempo precisa para una hora de sesión determinada.
Pasos:
-
Convertir la fecha-hora del día a una estructura MqlDateTime.
-
Sustituir hora/minuto/segundos por los parámetros de sesión.
-
Convertir de nuevo a datetime.
Así es como se calculan de forma fiable las marcas de tiempo de inicio y fin de sesión.
2.2 DibujarLínea()
Crea o actualiza un objeto de línea vertical en el gráfico.
-
Utiliza ObjectCreate() sólo si el objeto no existe todavía.
-
Establece
-
Color ( OBJPROP_COLOR )
-
Estilo ( STYLE_SOLID )
-
Anchura ( OBJPROP_WIDTH )
-
Propiedades de Fondo y Rayo (desactivadas).
-
La línea siempre se redibuja en la marca de tiempo dada.
3. Dibujar Killzones3.1 DibujarZonasMuertasPorDía()
Esta función dibuja seis líneas verticales por día:
| Killzone | Línea 1 | Línea 2 |
|---|---|---|
| Asiático | Inicio | Fin |
| Londres | Inicio | Fin |
| Nueva York | Inicio | Fin |
Utiliza:
-
GetSessionTime() → calcula las marcas de tiempo.
-
DrawLine() → dibuja cada línea vertical
-
Nombres de objeto únicos → incluyen el índice de día i
Ejemplo:
-
KZ_Asian_Start_0
-
KZ_Londres_Fin_2
-
KZ_NY_Inicio_4
Esto asegura que no haya colisiones de nombres.
4. Inicialización del indicador (OnInit)Acciones realizadas:
-
Borra todos los objetos de línea vertical existentes para evitar duplicados.
-
Determina la hora de la medianoche de hoy.
-
Realiza un bucle de veces DaysToDisplay:
-
Para cada día anterior, calcula day_start = today_start - i*86400 .
-
Llama a DrawKillzonesForDay(day_start, i) .
-
Finalmente, se llama a ChartRedraw() para refrescar el dibujo inmediatamente.
5. Cálculo en tiempo de ejecución ( OnCalculate )El indicador no necesita calcular nada por tick o por vela, porque todo el trabajo se realiza en OnInit() . Por lo tanto:
Esto hace que el indicador muy ligero y eficiente de la CPU.
