TriZone Semafor MT4
- Indikatoren
-
Ahmed Hamed Hamed Eadwan
GERMAN TRANSLATION — DEUTSCH
==============================
TITLE:
MQL5 Entwickler & Trader | Gründer von R protocols
ABOUT:
Hallo, ich bin Ahmed — ein Trader und MQL5-Entwickler aus
den Vereinigten Arabischen Emiraten und Gründer von R protocols. - Version: 1.0
TriZone Semafor — 3-Stufen exklusives Signal-ZigZag (Eigenständig — Eingebauter ZigZag, keine externen Indikatoren)
Wenn Sie schon einmal auf einen mit ZigZag-Pfeilen übersäten Chart gestarrt haben und sich gefragt haben, welche wirklich wichtig sind — dieser Indikator wurde für genau diese Frustration entwickelt.
TriZone Semafor führt drei unabhängige ZigZag-Algorithmen gleichzeitig aus: Schnell (Periode 5), Mittel (Periode 13) und Langsam (Periode 34). Wenn sie Pivots auf derselben Kerze erkennen, überlebt nur das bedeutendste Signal. Stufe 3 hat immer Vorrang vor Stufe 2. Stufe 2 hat immer Vorrang vor Stufe 1. Ein sauberer Pfeil pro Kerze pro Richtung — keine Überlagerung, keine Doppelzählung.
Warum drei Stufen statt einer
Ein einzelner ZigZag behandelt alle Schwungen gleich. Derselbe Indikator markiert einen zwei-Kerzen-Rückzug und eine große Trendwende mit identischen Pfeilen. TriZone klassifiziert jeden Pivot nach Bedeutung, damit Sie die Hierarchie des Charts auf einen Blick lesen.
- Stufe 1 — Schnell: Kleine Rückzüge und nebensächliche Pivots. Die Struktur unter der Struktur.
- Stufe 2 — Mittel: Intraday-Schwünge und bedeutsame Reaktionen. Die Pivots, auf die Ihr Trading-Tagebuch verweist.
- Stufe 3 — Langsam: Große strukturelle Wendepunkte. Die Punkte, an denen die Trendfortsetzung ernsthaft infrage steht.
Jede Stufe hat ihre eigene Pfeilform und Farbe, sodass Sie die Hierarchie sofort sehen, ohne eine Legende zu konsultieren.
Exklusives Signalsystem
Jede Kerze durchläuft eine Regel: wenn eine höhere Stufe einen Pivot auf dieser Kerze beansprucht, werden alle Ansprüche niedrigerer Stufen entfernt — nicht ausgeblendet, entfernt. Dies geschieht im Indikator-Buffer, bevor etwas den Chart erreicht. Der Chart spiegelt den realen Zustand wider, keine geschichtete Überlagerung.
Anti-Repaint-Modus
Mit AntiRepaint = ON wird ein Signal erst gezeichnet, nachdem die konfigurierte Anzahl an Bestätigungs-Balken vergangen ist. Der Pfeil, den Sie sehen, hat sein Stabilitätsfenster bereits überstanden und wird sich nicht bewegen. Der Indikator zeigt den aktuellen Modus und die Bestätigungstiefe in der Chart-Titelleiste — volle Transparenz darüber, was Sie lesen.
Mit AntiRepaint = OFF erscheinen Signale sofort auf der sich bildenden Kerze. Nützlich als visuelle Referenz. Nicht empfohlen für automatisierte Logik.
Alert-System
Alerts werden während der Berechnung in eine Warteschlange gestellt und erst geliefert, nachdem der Exklusivitäts-Durchlauf bestätigt, dass das Signal überlebt hat. Sie erhalten nie ein Popup für ein Stufe-1-Signal, das kurz darauf von Stufe 3 überschrieben wird. Ein bestätigter Pivot — ein Alert. Pro Stufe unabhängig konfigurierbar.
Was enthalten ist
- Drei ZigZag-Erkennungsstufen mit vollständig unabhängigen Parametern
- Exklusive Signalpriorität auf Buffer-Ebene — höchste Stufe gewinnt pro Kerze
- Popup-Alerts nur bei bestätigten Pivots — keine Phantom-Alerts
- Anti-Repaint-Modus mit konfigurierbaren Bestätigungs-Balken pro Stufe
- Jedes Symbol, jeder Zeitrahmen — MetaTrader 4
- Eine Datei — null externe Abhängigkeiten, keine DLL, keine Custom Includes
Empfohlener Ausgangspunkt
Öffnen Sie H1 oder H4 mit Standardparametern. Die Standardtiefen 5 / 13 / 34 folgen der Standard-Fibonacci-Sequenz — eine natürliche Passung für die meisten Instrumente und Zeitrahmen.
Stufe-3-Pivots sind Ihre strukturelle Referenz. Stufe-2 sind Ihre Intraday-Referenzpunkte. Stufe 1 zeigt die kleinere Struktur dazwischen. Passen Sie Tiefe (Period) und Bestätigungs-Balken (ConfirmBars) an Ihren Stil an.
Kompatibilität
MetaTrader 4 — jeder Broker, jedes Symbol, jeder Zeitrahmen. Keine externen Bibliotheken. Keine DLL-Importe. Einzelne .ex4-Datei, vollständig eigenständig.
iCustom-Referenz — TriZone_Semafor
Ausgabe-Buffer
Exklusivität wird bereits vom Indikator angewendet.
Nur die höchste aktive Stufe ist pro Kerze nicht leer.
EMPTY_VALUE = kein Pivot an dieser Balken/Stufe.
Mit AntiRepaint ON, Lesen bei Shift >= max(ConfirmBars1, ConfirmBars2, ConfirmBars3) — Standard: Shift >= 4.
| Buffer | Index | Signal | Inhalt |
|---|---|---|---|
| BufLow1 | 0 | BUY | Stufe 1 Tief-Pivot-Preis — Schnelles ZigZag |
| BufHigh1 | 1 | SELL | Stufe 1 Hoch-Pivot-Preis — Schnelles ZigZag |
| BufLow2 | 2 | BUY | Stufe 2 Tief-Pivot-Preis — Mittleres ZigZag |
| BufHigh2 | 3 | SELL | Stufe 2 Hoch-Pivot-Preis — Mittleres ZigZag |
| BufLow3 | 4 | BUY | Stufe 3 Tief-Pivot-Preis — Langsames ZigZag |
| BufHigh3 | 5 | SELL | Stufe 3 Hoch-Pivot-Preis — Langsames ZigZag |
Eingabeparameter
# = Position im iCustom()-Aufruf (0-basiert, nach Symbol / Period / FileName)
In MT4 müssen ALLE Parameter in Reihenfolge übergeben werden. Mittlere Parameter können nicht übersprungen werden.
Nachfolgende Parameter können weggelassen werden (Standardwerte werden verwendet).
| # | Name | Typ | Standard | Bereich | Beschreibung |
|---|---|---|---|---|---|
| STUFE 1 — Schnelles ZigZag | |||||
| 0 | ColorL1Low | color | clrAqua | color | Pfeilfarbe für Stufe 1 Tiefs |
| 1 | ColorL1High | color | clrMagenta | color | Pfeilfarbe für Stufe 1 Hochs |
| 2 | Period1 | int | 5 | 2-500 | Pivot-Rückblicktiefe (Balken) |
| 3 | Deviation1 | int | 1 | 1-100000 | Mindestabweichung in Punkten |
| 4 | Backstep1 | int | 3 | 1-(P-1) | Mindest-Balken zwischen aufeinanderfolgenden Pivots |
| 5 | HighSymbol1 | int | 159 | Wingdings | Pfeil für Hochs (159=Punkt, 108=Kreis, 116=Diamant) |
| 6 | LowSymbol1 | int | 159 | Wingdings | Pfeil für Tiefs |
| 7 | ConfirmBars1 | int | 2 | 1-50 | Bestätigungs-Balken |
| STUFE 2 — Mittleres ZigZag | |||||
| 8 | ColorL2Low | color | clrDodgerBlue | color | Pfeilfarbe für Stufe 2 Tiefs |
| 9 | ColorL2High | color | clrOrchid | color | Pfeilfarbe für Stufe 2 Hochs |
| 10 | Period2 | int | 13 | 2-500 | Pivot-Rückblicktiefe |
| 11 | Deviation2 | int | 8 | 1-100000 | Mindestabweichung in Punkten |
| 12 | Backstep2 | int | 5 | 1-(P-1) | Mindest-Balken zwischen Pivots |
| 13 | HighSymbol2 | int | 108 | Wingdings | Pfeil für Hochs |
| 14 | LowSymbol2 | int | 108 | Wingdings | Pfeil für Tiefs |
| 15 | ConfirmBars2 | int | 3 | 1-50 | Bestätigungs-Balken |
| STUFE 3 — Langsames ZigZag | |||||
| 16 | ColorL3Low | color | clrGold | color | Pfeilfarbe für Stufe 3 Tiefs |
| 17 | ColorL3High | color | clrOrangeRed | color | Pfeilfarbe für Stufe 3 Hochs |
| 18 | Period3 | int | 34 | 2-500 | Pivot-Rückblicktiefe |
| 19 | Deviation3 | int | 21 | 1-100000 | Mindestabweichung in Punkten |
| 20 | Backstep3 | int | 12 | 1-(P-1) | Mindest-Balken zwischen Pivots |
| 21 | HighSymbol3 | int | 116 | Wingdings | Pfeil für Hochs (116=Diamant) |
| 22 | LowSymbol3 | int | 116 | Wingdings | Pfeil für Tiefs |
| 23 | ConfirmBars3 | int | 4 | 1-50 | Bestätigungs-Balken |
| INSTANZ-VERWALTUNG | |||||
| 24 | InstanceID | string | "A" | beliebig | Eindeutiger Tag — muss sich von sichtbarer Chart-Kopie unterscheiden |
| 25 | DebugMode | ENUM_ONOFF | OFF (0) | 0 / 1 | Diagnosen im Journal ausgeben |
| 26 | HeadlessMode | ENUM_ONOFF | OFF (0) | 0 / 1 | Bei iCustom-Nutzung ON setzen — unterdrückt UI und Alerts |
| ANTI-REPAINT | |||||
| 27 | AntiRepaint | ENUM_ONOFF | ON (1) | 0 / 1 | ON = nur bestätigte Signale — erforderlich für stabile EA-Logik |
| 28 | SafeArrows | ENUM_ONOFF | OFF (0) | 0 / 1 | ON = Pfeile verwenden vollständigen retrosicheren Shift |
| ALERT-SYSTEM | |||||
| 29 | AlertMode | ENUM_ALERT_MODE | 1 (Popup) | 0-3 | 0=Keine 1=Popup 2=Push 3=Alle — in EA auf 0 setzen |
| 30 | AlertLevel1 | ENUM_ONOFF | OFF (0) | 0 / 1 | Alert bei Stufe-1-Pivots |
| 31 | AlertLevel2 | ENUM_ONOFF | ON (1) | 0 / 1 | Alert bei Stufe-2-Pivots |
| 32 | AlertLevel3 | ENUM_ONOFF | ON (1) | 0 / 1 | Alert bei Stufe-3-Pivots |
Gesamt: 33 Parameter (Indizes 0-32)
iCustom-Codebeispiel
Dateiname: "TriZone_Semafor" (ohne .ex4) — HeadlessMode immer = true in jedem EA setzen.
In MT4 gibt iCustom direkt einen double für einen bestimmten Buffer-Index und Shift zurück.
Keine Handle-Verwaltung, kein CopyBuffer, kein IndicatorRelease.
// MT4 iCustom-Signatur:
// double iCustom(symbol, timeframe, "name", params..., bufferIndex, shift)
// Wir wrappen in eine Hilfsfunktion für saubereren EA-Code.
double TZS_GetBuffer(int bufferIndex, int shift)
{
return iCustom(
Symbol(), // Symbol
Period(), // Zeitrahmen
"TriZone_Semafor", // genauer Dateiname, ohne .ex4
// ---- Stufe 1: Schnell ----
clrAqua, // #0 ColorL1Low
clrMagenta, // #1 ColorL1High
5, // #2 Period1
1, // #3 Deviation1
3, // #4 Backstep1
159, // #5 HighSymbol1 (Punkt)
159, // #6 LowSymbol1 (Punkt)
2, // #7 ConfirmBars1
// ---- Stufe 2: Mittel ----
clrDodgerBlue, // #8 ColorL2Low
clrOrchid, // #9 ColorL2High
13, // #10 Period2
8, // #11 Deviation2
5, // #12 Backstep2
108, // #13 HighSymbol2 (Kreis)
108, // #14 LowSymbol2 (Kreis)
3, // #15 ConfirmBars2
// ---- Stufe 3: Langsam ----
clrGold, // #16 ColorL3Low
clrOrangeRed, // #17 ColorL3High
34, // #18 Period3
21, // #19 Deviation3
12, // #20 Backstep3
116, // #21 HighSymbol3 (Diamant)
116, // #22 LowSymbol3 (Diamant)
4, // #23 ConfirmBars3
// ---- Instanz ----
"EA1", // #24 InstanceID — muss sich von Chart-Kopie unterscheiden
false, // #25 DebugMode = OFF
true, // #26 HeadlessMode = ON <- erforderlich für EA
// ---- Anti-Repaint ----
true, // #27 AntiRepaint = ON (stabile EA-Signale)
false, // #28 SafeArrows = OFF
// ---- Alerts: alle OFF in EA ----
0, // #29 AlertMode = ALERT_NONE
false, // #30 AlertLevel1
false, // #31 AlertLevel2
false, // #32 AlertLevel3
// ---- Buffer + Shift ----
bufferIndex, // Buffer-Index (0-5)
shift // Balken-Shift
);
}
// Buffer-Lesung bei bestätigtem Shift
void OnTick()
{
int safeShift = 4;
double lo1 = TZS_GetBuffer(0, safeShift); // BufLow1 — Stufe 1 BUY
double hi1 = TZS_GetBuffer(1, safeShift); // BufHigh1 — Stufe 1 SELL
double lo2 = TZS_GetBuffer(2, safeShift); // BufLow2 — Stufe 2 BUY
double hi2 = TZS_GetBuffer(3, safeShift); // BufHigh2 — Stufe 2 SELL
double lo3 = TZS_GetBuffer(4, safeShift); // BufLow3 — Stufe 3 BUY
double hi3 = TZS_GetBuffer(5, safeShift); // BufHigh3 — Stufe 3 SELL
double ev = EMPTY_VALUE;
int buyLevel = (lo3 != ev) ? 3 : (lo2 != ev) ? 2 : (lo1 != ev) ? 1 : 0;
int sellLevel = (hi3 != ev) ? 3 : (hi2 != ev) ? 2 : (hi1 != ev) ? 1 : 0;
if(buyLevel > 0 && sellLevel == 0)
PrintFormat("BUY signal | Level %d | shift %d", buyLevel, safeShift);
else if(sellLevel > 0 && buyLevel == 0)
PrintFormat("SELL signal | Level %d | shift %d", sellLevel, safeShift);
}
// OnDeinit — Keine Handle-Bereinigung in MT4
void OnDeinit(const int reason)
{
// MT4 verwendet keine Indikator-Handles — nichts freizugeben.
// iCustom-Aufrufe sind zustandslos pro Aufruf.
}
Häufige Fehler
Häufigste Ursache für INIT_PARAMETERS_INCORRECT: InstanceID wird bereits von einer Chart-Kopie desselben Indikators verwendet. Verwenden Sie eine eindeutige Zeichenfolge wie "EA1", "EA2" ...
| Fehler | Symptom | Behebung |
|---|---|---|
| Gleiche InstanceID wie Chart-Kopie | INIT_PARAMETERS_INCORRECT | Eindeutige ID: "EA1", "EA2" ... |
| HeadlessMode = false in EA | Indikator zeichnet Objekte + Alerts | Parameter #26 auf true setzen |
| Shift = 0 mit AntiRepaint | EMPTY_VALUE immer — Balken nicht bestätigt | Bei Shift >= 4 lesen |
| AlertMode != 0 in EA | Alert() blockiert Tester | Parameter #29 auf 0 setzen |
| Falscher Dateiname | Gibt 0 / EMPTY_VALUE zurück | Genauen Namen verwenden: "TriZone_Semafor" |
| Farbparameter fehlen | Falsche Buffer-Werte oder 0 | ALLE 33 Parameter in Reihenfolge übergeben |
| Falsche Parameterreihenfolge | Falsche oder keine Signale | Tabelle genau folgen (0-32) |
