TriZone Semafor MT4
- Indicateurs
-
Ahmed Hamed Hamed Eadwan
FRENCH TRANSLATION — FRANÇAIS
===============================
TITLE:
Développeur MQL5 & Trader | Fondateur de R protocols
ABOUT:
Bonjour, je suis Ahmed — un trader et développeur MQL5 basé aux
Émirats Arabes Unis, et fondateur de R protocols. - Version: 1.0
TriZone Semafor — ZigZag à signaux exclusifs sur 3 niveaux (Autonome — ZigZag intégré, sans indicateurs externes)
Si vous avez déjà fixé un graphique couvert de fl&egrè;ches ZigZag en vous demandant lesquelles comptent vraiment — cet indicateur a été créé pour cette frustration.
TriZone Semafor exécute trois algorithmes ZigZag indépendants simultanément : Rapide (Période 5), Moyen (Période 13) et Lent (Période 34). Lorsqu'ils détectent des pivots sur la même bougie, seul le signal le plus significatif survit. Le Niveau 3 prime toujours sur le Niveau 2. Le Niveau 2 prime toujours sur le Niveau 1. Une fl&egrè;che propre par bougie par direction — pas de superposition, pas de double comptage.
Pourquoi trois niveaux au lieu d'un
Un seul ZigZag traite tous les mouvements de la même façon. Le même indicateur marque un retracement de deux bougies et un renversement de tendance majeur avec des fl&egrè;ches identiques. TriZone classe chaque pivot par importance afin que vous lisiez la hiérarchie du graphique d'un seul coup d'œil.
- Niveau 1 — Rapide : Petits retracements et pivots mineurs. La structure sous la structure.
- Niveau 2 — Moyen : Swings intraday et réactions significatives. Les pivotes auxquels votre journal de trading fait référence.
- Niveau 3 — Lent : Tournants structurels majeurs. Les points où la continuation de la tendance est réellement en question.
Chaque niveau a sa propre forme et couleur de fl&egrè;che afin que vous voyiez la hiérarchie instantanément, sans consulter de légende.
Système de signaux exclusifs
Chaque bougie passe par une règle : si un niveau supérieur revendique un pivot sur cette bougie, toutes les revendications de niveaux inférieurs sont supprimées — non masquées, supprimées. Cela se produit dans le buffer de l'indicateur avant que quoi que ce soit n'atteigne le graphique. Le graphique reflète l'état réel, pas une superposition en couches.
Mode anti-repaint
Avec AntiRepaint = ON, un signal n'est dessiné qu'après que le nombre configuré de barres de confirmation soit passé. La fl&egrè;che que vous voyez a déjà passé sa fenêtre de stabilité et ne bougera plus. L'indicateur affiche le mode actuel et la profondeur de confirmation dans la barre de titre du graphique — transparence totale sur ce que vous lisez.
Avec AntiRepaint = OFF, les signaux apparaissent immédiatement sur la bougie en formation. Utile pour référence visuelle. Non recommandé pour logique automatisée.
Système d'alertes
Les alertes sont mises en file d'attente pendant le calcul et livrées uniquement après que le passage d'exclusivité confirme que le signal a survécu. Vous ne recevrez jamais de popup pour un signal de Niveau 1 annulé par le Niveau 3 un instant plus tard. Un pivot confirmé — une alerte. Configurable par niveau indépendamment.
Ce qui est inclus
- Trois niveaux de détection ZigZag avec paramètres totalement indépendants
- Priorité de signal exclusive au niveau du buffer — le niveau le plus élevé gagne par bougie
- Alertes popup sur pivots confirmés uniquement — pas d'alertes fantômes
- Mode anti-repaint avec barres de confirmation configurables par niveau
- Tout symbole, toute unité de temps — MetaTrader 4
- Fichier unique — zéro dépendance externe, pas de DLL, pas d'includes personnalisés
Point de départ recommandé
Ouvrez H1 ou H4 avec les paramètres par défaut. Les profondeurs par défaut 5 / 13 / 34 suivent la séquence Fibonacci standard — un ajustement naturel pour la plupart des instruments et unités de temps.
Les pivots de Niveau 3 sont votre référence structurelle. Ceux du Niveau 2 sont vos points de référence intraday. Le Niveau 1 montre la structure mineure intermédiaire. Ajustez la profondeur (Period) et les barres de confirmation (ConfirmBars) selon votre style.
Compatibilité
MetaTrader 4 — tout broker, tout symbole, toute unité de temps. Pas de librairies externes. Pas d'imports DLL. Fichier .ex4 unique, totalement autonome.
Référence iCustom — TriZone_Semafor
Buffers de sortie
L'exclusivité est déjà appliquée par l'indicateur.
Seul le niveau actif le plus élevé est non vide par bougie.
EMPTY_VALUE = pas de pivot à cette barre/niveau.
Avec AntiRepaint ON, lire à shift >= max(ConfirmBars1, ConfirmBars2, ConfirmBars3) — par défaut : shift >= 4.
| Buffer | Index | Signal | Contenu |
|---|---|---|---|
| BufLow1 | 0 | BUY | Prix pivot Bas Niveau 1 — ZigZag Rapide |
| BufHigh1 | 1 | SELL | Prix pivot Haut Niveau 1 — ZigZag Rapide |
| BufLow2 | 2 | BUY | Prix pivot Bas Niveau 2 — ZigZag Moyen |
| BufHigh2 | 3 | SELL | Prix pivot Haut Niveau 2 — ZigZag Moyen |
| BufLow3 | 4 | BUY | Prix pivot Bas Niveau 3 — ZigZag Lent |
| BufHigh3 | 5 | SELL | Prix pivot Haut Niveau 3 — ZigZag Lent |
Paramètres d'entrée
# = position dans l'appel iCustom() (basé sur 0, après Symbol / Period / FileName)
En MT4, TOUS les paramètres doivent être passés dans l'ordre. Vous ne pouvez pas omettre de paramètres intermédiaires.
Les paramètres finaux peuvent être omis (valeurs par défaut utilisées).
| # | Nom | Type | Défaut | Plage | Description |
|---|---|---|---|---|---|
| NIVEAU 1 — ZigZag Rapide | |||||
| 0 | ColorL1Low | color | clrAqua | color | Couleur flèche Bas Niveau 1 |
| 1 | ColorL1High | color | clrMagenta | color | Couleur flèche Haut Niveau 1 |
| 2 | Period1 | int | 5 | 2-500 | Profondeur de pivot (barres) |
| 3 | Deviation1 | int | 1 | 1-100000 | Déviation minimum en points |
| 4 | Backstep1 | int | 3 | 1-(P-1) | Barres min entre pivots consécutifs |
| 5 | HighSymbol1 | int | 159 | Wingdings | Flèche Hauts (159=point, 108=cercle, 116=diamant) |
| 6 | LowSymbol1 | int | 159 | Wingdings | Flèche Bas |
| 7 | ConfirmBars1 | int | 2 | 1-50 | Barres de confirmation |
| NIVEAU 2 — ZigZag Moyen | |||||
| 8 | ColorL2Low | color | clrDodgerBlue | color | Couleur flèche Bas Niveau 2 |
| 9 | ColorL2High | color | clrOrchid | color | Couleur flèche Haut Niveau 2 |
| 10 | Period2 | int | 13 | 2-500 | Profondeur de pivot |
| 11 | Deviation2 | int | 8 | 1-100000 | Déviation minimum en points |
| 12 | Backstep2 | int | 5 | 1-(P-1) | Barres min entre pivots consécutifs |
| 13 | HighSymbol2 | int | 108 | Wingdings | Flèche Hauts |
| 14 | LowSymbol2 | int | 108 | Wingdings | Flèche Bas |
| 15 | ConfirmBars2 | int | 3 | 1-50 | Barres de confirmation |
| NIVEAU 3 — ZigZag Lent | |||||
| 16 | ColorL3Low | color | clrGold | color | Couleur flèche Bas Niveau 3 |
| 17 | ColorL3High | color | clrOrangeRed | color | Couleur flèche Haut Niveau 3 |
| 18 | Period3 | int | 34 | 2-500 | Profondeur de pivot |
| 19 | Deviation3 | int | 21 | 1-100000 | Déviation minimum en points |
| 20 | Backstep3 | int | 12 | 1-(P-1) | Barres min entre pivots consécutifs |
| 21 | HighSymbol3 | int | 116 | Wingdings | Flèche Hauts (116=diamant) |
| 22 | LowSymbol3 | int | 116 | Wingdings | Flèche Bas |
| 23 | ConfirmBars3 | int | 4 | 1-50 | Barres de confirmation |
| GESTION D'INSTANCE | |||||
| 24 | InstanceID | string | "A" | quelconque | Tag unique — doit différer de toute copie sur graphique |
| 25 | DebugMode | ENUM_ONOFF | OFF (0) | 0 / 1 | Imprimer diagnostics dans le Journal |
| 26 | HeadlessMode | ENUM_ONOFF | OFF (0) | 0 / 1 | Mettre ON via iCustom — supprime UI et alertes |
| ANTI-REPAINT | |||||
| 27 | AntiRepaint | ENUM_ONOFF | ON (1) | 0 / 1 | ON = signaux confirmés uniquement — requis pour EA stable |
| 28 | SafeArrows | ENUM_ONOFF | OFF (0) | 0 / 1 | ON = flèches utilisent shift rétroactif sûr (plus strict) |
| SYSTÈME D'ALERTES | |||||
| 29 | AlertMode | ENUM_ALERT_MODE | 1 (Popup) | 0-3 | 0=Aucune 1=Popup 2=Push 3=Toutes — mettre 0 dans EA |
| 30 | AlertLevel1 | ENUM_ONOFF | OFF (0) | 0 / 1 | Alerte sur pivots Niveau 1 |
| 31 | AlertLevel2 | ENUM_ONOFF | ON (1) | 0 / 1 | Alerte sur pivots Niveau 2 |
| 32 | AlertLevel3 | ENUM_ONOFF | ON (1) | 0 / 1 | Alerte sur pivots Niveau 3 |
Total : 33 paramètres (indices 0-32)
Exemple de code iCustom
Nom du fichier : "TriZone_Semafor" (sans .ex4) — Toujours mettre HeadlessMode = true dans tout EA.
En MT4, iCustom retourne un double directement pour un index de buffer et shift spécifiques.
Pas de gestion de handle, pas de CopyBuffer, pas de IndicatorRelease.
// Signature iCustom MT4 :
// double iCustom(symbol, timeframe, "name", params..., bufferIndex, shift)
// Nous l'enveloppons dans une fonction helper pour un code EA plus propre.
double TZS_GetBuffer(int bufferIndex, int shift)
{
return iCustom(
Symbol(), // symbole
Period(), // unité de temps
"TriZone_Semafor", // nom exact, sans .ex4
// ---- Niveau 1 : Rapide ----
clrAqua, // #0 ColorL1Low
clrMagenta, // #1 ColorL1High
5, // #2 Period1
1, // #3 Deviation1
3, // #4 Backstep1
159, // #5 HighSymbol1 (point)
159, // #6 LowSymbol1 (point)
2, // #7 ConfirmBars1
// ---- Niveau 2 : Moyen ----
clrDodgerBlue, // #8 ColorL2Low
clrOrchid, // #9 ColorL2High
13, // #10 Period2
8, // #11 Deviation2
5, // #12 Backstep2
108, // #13 HighSymbol2 (cercle)
108, // #14 LowSymbol2 (cercle)
3, // #15 ConfirmBars2
// ---- Niveau 3 : Lent ----
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
// ---- Instance ----
"EA1", // #24 InstanceID — doit différer de copie sur graphique
false, // #25 DebugMode = OFF
true, // #26 HeadlessMode = ON <- requis pour EA
// ---- Anti-Repaint ----
true, // #27 AntiRepaint = ON (signaux EA stables)
false, // #28 SafeArrows = OFF
// ---- Alertes : toutes OFF dans EA ----
0, // #29 AlertMode = ALERT_NONE
false, // #30 AlertLevel1
false, // #31 AlertLevel2
false, // #32 AlertLevel3
// ---- Buffer + Shift ----
bufferIndex, // index de buffer (0-5)
shift // shift de barre
);
}
// Lecture des buffers à shift confirmé
void OnTick()
{
int safeShift = 4;
double lo1 = TZS_GetBuffer(0, safeShift); // BufLow1 — Niveau 1 BUY
double hi1 = TZS_GetBuffer(1, safeShift); // BufHigh1 — Niveau 1 SELL
double lo2 = TZS_GetBuffer(2, safeShift); // BufLow2 — Niveau 2 BUY
double hi2 = TZS_GetBuffer(3, safeShift); // BufHigh2 — Niveau 2 SELL
double lo3 = TZS_GetBuffer(4, safeShift); // BufLow3 — Niveau 3 BUY
double hi3 = TZS_GetBuffer(5, safeShift); // BufHigh3 — Niveau 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 — Pas de nettoyage de handle en MT4
void OnDeinit(const int reason)
{
// MT4 n'utilise pas de handles d'indicateur — rien à libérer.
// Les appels iCustom sont stateless par invocation.
}
Erreurs courantes
Cause la plus courante de INIT_PARAMETERS_INCORRECT : InstanceID est déjà utilisé par une copie sur graphique du même indicateur. Utilisez une chaîne unique comme "EA1", "EA2" ...
| Erreur | Symptôme | Solution |
|---|---|---|
| Même InstanceID que copie sur graphique | INIT_PARAMETERS_INCORRECT | ID unique : "EA1", "EA2" ... |
| HeadlessMode = false dans EA | Indicateur dessine objets + alertes | Mettre paramètre #26 à true |
| Lire shift = 0 avec AntiRepaint | EMPTY_VALUE toujours — barre non confirmée | Lire à shift >= 4 |
| AlertMode != 0 dans EA | Alert() bloque le Tester | Mettre paramètre #29 à 0 |
| Nom de fichier incorrect | Retourne 0 / EMPTY_VALUE | Utiliser nom exact : "TriZone_Semafor" |
| Paramètres couleur manquants | Valeurs buffer incorrectes ou 0 | Passer TOUS les 33 paramètres dans l'ordre |
| Ordre des paramètres incorrect | Signaux incorrects ou aucun | Suivre le tableau exactement (0-32) |
