Aklamavo ICT KillZones
- Indikatoren
- Sylvester Aklamavo
- Version: 1.0
Dieser MetaTrader 5-Indikator zeichnet ICT Killzone-Sitzungsmarker mit vertikalen Linien in das Diagramm ein. Er zeichnet die Anfangs- und Endzeiten für drei institutionelle Handelssitzungen - Asien, London und New York - für eine benutzerdefinierte Anzahl von historischen Tagen.
Es werden keine Puffer oder Plots verwendet; stattdessen stützt sich der Indikator vollständig auf Chart-Objekte (OBJ_VLINE).
Der Indikator ermöglicht die vollständige Anpassung jedes Killzone-Segments:
Allgemein
-
DaysToDisplay : Anzahl der vergangenen Tage, für die Killzones gezeichnet werden sollen.
Asiatische Killzone-Parameter
-
AsianStartHour , AsianEndHour
-
AsianColor , AsianWidth
Londoner Killzone-Parameter
-
LondonStartStunde , LondonEndStunde
-
LondonFarbe , LondonBreite
New York Killzone-Parameter
-
NYStartStunde , NYEndStunde
-
NYColor , NYWidth
Diese Eingaben bestimmen:
-
Wo die vertikalen Linien positioniert werden.
-
Ihre Farbkodierung.
-
Ihre Dicke im Diagramm.
2.1 HoleSitzungszeit()
Diese Funktion wandelt ein Datum um Mitternacht in einen genauen Zeitstempel für eine bestimmte Sitzungsstunde um.
Schritte:
-
Konvertieren Sie die Tageszeit in eine MqlDateTime-Struktur.
-
Ersetzen Sie Stunde/Minute/Sekunden durch die Sitzungsparameter.
-
Konvertieren Sie zurück in eine Datetime.
Auf diese Weise werden die Zeitstempel für Sitzungsbeginn und -ende zuverlässig berechnet.
2.2 DrawLine()
Erzeugt oder aktualisiert ein vertikales Linienobjekt im Diagramm.
-
Verwendet ObjectCreate() nur, wenn das Objekt nicht bereits existiert.
-
Setzt:
-
Farbe ( OBJPROP_COLOR )
-
Stil ( STYLE_SOLID )
-
Breite ( OBJPROP_WIDTH )
-
Hintergrund- und Strahleneigenschaften (deaktiviert).
-
Die Linie wird immer zum angegebenen Zeitstempel neu gezeichnet.
3. Zeichnen von Killzones3.1 DrawKillzonesForDay()
Diese Funktion zeichnet sechs vertikale Linien pro Tag:
| Killzone | Zeile 1 | Linie 2 |
|---|---|---|
| Asiatisch | Anfang | Ende |
| London | Anfang | Ende |
| New York | Anfang | Ende |
Es verwendet:
-
GetSessionTime() → berechnet den Zeitstempel
-
DrawLine() → zeichnet jede vertikale Linie
-
Eindeutige Objektnamen → enthalten den Tagesindex i
Beispiel:
-
KZ_Asien_Beginn_0
-
KZ_London_Ende_2
-
KZ_NY_Start_4
Dadurch wird sichergestellt, dass es keine Namenskollisionen gibt.
4. Indikator-Initialisierung (OnInit)Durchgeführte Aktionen:
-
Löscht alle vorhandenen vertikalen Linienobjekte, um Duplikate zu vermeiden.
-
Bestimmt den heutigen Mitternachtszeitstempel.
-
Schleift die DaysToDisplay-Zeiten:
-
Berechnet für jeden vorherigen Tag day_start = today_start - i*86400 .
-
Ruft DrawKillzonesForDay(day_start, i) auf.
-
Schließlich wird ChartRedraw() aufgerufen, um die Zeichnung sofort zu aktualisieren.
5. Laufzeit-Berechnung ( OnCalculate )Der Indikator muss keine Berechnungen pro Tick oder pro Kerze durchführen, da die gesamte Arbeit in OnInit() erledigt wird. Deshalb:
Dies macht den Indikator sehr leicht und CPU-effizient.
