TriZone Semafor Pro MT4
- Indicatori
-
Ahmed Hamed Hamed Eadwan
ITALIAN TRANSLATION — ITALIANO
================================
TITLE:
Sviluppatore MQL5 e Trader | Fondatore di R protocols
ABOUT:
Ciao, sono Ahmed — un trader e sviluppatore MQL5 basato negli
Emirati Arabi Uniti, e fondatore di R protocols. - Versione: 1.0
- Attivazioni: 5
TriZone Semafor — ZigZag a segnali esclusivi a 3 livelli (Autonomo — ZigZag integrato, nessun indicatore esterno)
Se hai mai fissato un grafico coperto di frecce ZigZag chiedendoti quali contano davvero — questo indicatore è stato creato per quella frustrazione.
TriZone Semafor esegue tre algoritmi ZigZag indipendenti simultaneamente: Veloce (Periodo 5), Medio (Periodo 13) e Lento (Periodo 34). Quando rilevano pivot sulla stessa candela, solo il segnale più significativo sopravvive. Il Livello 3 ha sempre priorità sul Livello 2. Il Livello 2 ha sempre priorità sul Livello 1. Una freccia pulita per candela per direzione — nessuna sovrapposizione, nessun doppio conteggio.
Perché tre livelli invece di uno
Un singolo ZigZag tratta tutti gli swing allo stesso modo. Lo stesso indicatore marca un pullback di due candele e un'inversione di trend maggiore con frecce identiche. TriZone classifica ogni pivot per importanza così leggi la gerarchia del grafico a colpo d'occhio.
- Livello 1 — Veloce: Piccoli pullback e pivot minori. La struttura sotto la struttura.
- Livello 2 — Medio: Swing intraday e reazioni significative. I pivot a cui fa riferimento il tuo diario di trading.
- Livello 3 — Lento: Inversioni strutturali maggiori. I punti in cui la continuazione del trend è genuinamente in dubbio.
Ogni livello ha la propria forma e colore di freccia così vedi la gerarchia istantaneamente, senza consultare una legenda.
Sistema di segnali esclusivi
Ogni candela passa attraverso una regola: se un livello superiore rivendica un pivot su quella candela, tutte le rivendicazioni dei livelli inferiori vengono rimosse — non nascoste, rimosse. Questo avviene nel buffer dell'indicatore prima che qualcosa raggiunga il grafico. Il grafico riflette lo stato reale, non una sovrapposizione a strati.
Modalità anti-repaint
Con AntiRepaint = ON, un segnale viene disegnato solo dopo che il numero configurato di barre di conferma è trascorso. La freccia che vedi ha già superato la sua finestra di stabilità e non si muoverà. L'indicatore mostra la modalità attuale e la profondità di conferma nella barra del titolo del grafico — piena trasparenza su ciò che stai leggendo.
Con AntiRepaint = OFF, i segnali appaiono immediatamente sulla candela in formazione. Utile per riferimento visivo. Non raccomandato per logica automatizzata.
Sistema di avvisi
Gli avvisi vengono accodati durante il calcolo e consegnati solo dopo che il passaggio di esclusività conferma che il segnale è sopravvissuto. Non riceverai mai un popup per un segnale di Livello 1 annullato dal Livello 3 un momento dopo. Un pivot confermato — un avviso. Configurabile per livello indipendentemente.
Cosa è incluso
- Tre livelli di rilevamento ZigZag con parametri completamente indipendenti
- Priorità di segnale esclusiva a livello di buffer — il livello più alto vince per candela
- Avvisi popup solo su pivot confermati — nessun avviso fantasma
- Modalità anti-repaint con barre di conferma configurabili per livello
- Qualsiasi simbolo, qualsiasi timeframe — MetaTrader 4
- File singolo — zero dipendenze esterne, nessuna DLL, nessun include personalizzato
Punto di partenza consigliato
Apri H1 o H4 con i parametri predefiniti. Le profondità predefinite 5 / 13 / 34 seguono la sequenza Fibonacci standard — una vestibilità naturale per la maggior parte degli strumenti e timeframe.
I pivot di Livello 3 sono il tuo riferimento strutturale. Quelli di Livello 2 sono i tuoi punti di riferimento intraday. Il Livello 1 mostra la struttura minore intermedia. Regola profondità (Period) e barre di conferma (ConfirmBars) per adattarle al tuo stile.
Compatibilità
MetaTrader 4 — qualsiasi broker, qualsiasi simbolo, qualsiasi timeframe. Nessuna libreria esterna. Nessun import DLL. File .ex4 singolo, completamente autonomo.
Guida iCustom — TriZone_Semafor
Buffer di output
L'esclusività è già applicata dall'indicatore.
Solo il livello attivo più alto è non vuoto per candela.
EMPTY_VALUE = nessun pivot a quella barra/livello.
Con AntiRepaint ON, leggi a shift >= max(ConfirmBars1, ConfirmBars2, ConfirmBars3) — predefinito: shift >= 4.
| Buffer | Indice | Segnale | Contenuto |
|---|---|---|---|
| BufLow1 | 0 | BUY | Prezzo pivot Basso Livello 1 — ZigZag Veloce |
| BufHigh1 | 1 | SELL | Prezzo pivot Alto Livello 1 — ZigZag Veloce |
| BufLow2 | 2 | BUY | Prezzo pivot Basso Livello 2 — ZigZag Medio |
| BufHigh2 | 3 | SELL | Prezzo pivot Alto Livello 2 — ZigZag Medio |
| BufLow3 | 4 | BUY | Prezzo pivot Basso Livello 3 — ZigZag Lento |
| BufHigh3 | 5 | SELL | Prezzo pivot Alto Livello 3 — ZigZag Lento |
Parametri di input
# = posizione nella chiamata iCustom() (0-based, dopo Symbol / Period / FileName)
In MT4, TUTTI i parametri devono essere passati in ordine. Non puoi saltare parametri intermedi.
I parametri finali possono essere omessi (vengono usati i valori predefiniti).
| # | Nome | Tipo | Predef. | Range | Descrizione |
|---|---|---|---|---|---|
| LIVELLO 1 — ZigZag Veloce | |||||
| 0 | ColorL1Low | color | clrAqua | color | Colore freccia per Bassi Livello 1 |
| 1 | ColorL1High | color | clrMagenta | color | Colore freccia per Alti Livello 1 |
| 2 | Period1 | int | 5 | 2-500 | Profondità pivot (barre) |
| 3 | Deviation1 | int | 1 | 1-100000 | Deviazione minima in punti |
| 4 | Backstep1 | int | 3 | 1-(P-1) | Barre min tra pivot consecutivi |
| 5 | HighSymbol1 | int | 159 | Wingdings | Freccia per Alti (159=punto, 108=circonferenza, 116=diamante) |
| 6 | LowSymbol1 | int | 159 | Wingdings | Freccia per Bassi |
| 7 | ConfirmBars1 | int | 2 | 1-50 | Barre di conferma |
| LIVELLO 2 — ZigZag Medio | |||||
| 8 | ColorL2Low | color | clrDodgerBlue | color | Colore freccia per Bassi Livello 2 |
| 9 | ColorL2High | color | clrOrchid | color | Colore freccia per Alti Livello 2 |
| 10 | Period2 | int | 13 | 2-500 | Profondità pivot |
| 11 | Deviation2 | int | 8 | 1-100000 | Deviazione minima in punti |
| 12 | Backstep2 | int | 5 | 1-(P-1) | Barre min tra pivot consecutivi |
| 13 | HighSymbol2 | int | 108 | Wingdings | Freccia per Alti |
| 14 | LowSymbol2 | int | 108 | Wingdings | Freccia per Bassi |
| 15 | ConfirmBars2 | int | 3 | 1-50 | Barre di conferma |
| LIVELLO 3 — ZigZag Lento | |||||
| 16 | ColorL3Low | color | clrGold | color | Colore freccia per Bassi Livello 3 |
| 17 | ColorL3High | color | clrOrangeRed | color | Colore freccia per Alti Livello 3 |
| 18 | Period3 | int | 34 | 2-500 | Profondità pivot |
| 19 | Deviation3 | int | 21 | 1-100000 | Deviazione minima in punti |
| 20 | Backstep3 | int | 12 | 1-(P-1) | Barre min tra pivot consecutivi |
| 21 | HighSymbol3 | int | 116 | Wingdings | Freccia per Alti (116=diamante) |
| 22 | LowSymbol3 | int | 116 | Wingdings | Freccia per Bassi |
| 23 | ConfirmBars3 | int | 4 | 1-50 | Barre di conferma |
| GESTIONE ISTANZA | |||||
| 24 | InstanceID | string | "A" | qualsiasi | Tag univoco — deve differire da copia visibile sul grafico |
| 25 | DebugMode | ENUM_ONOFF | OFF (0) | 0 / 1 | Stampa diagnostica nel Journal |
| 26 | HeadlessMode | ENUM_ONOFF | OFF (0) | 0 / 1 | Imposta ON tramite iCustom — sopprime UI e avvisi |
| ANTI-REPAINT | |||||
| 27 | AntiRepaint | ENUM_ONOFF | ON (1) | 0 / 1 | ON = solo segnali confermati — richiesto per EA stabile |
| 28 | SafeArrows | ENUM_ONOFF | OFF (0) | 0 / 1 | ON = frecce usano shift retroattivo sicuro (più strict) |
| SISTEMA AVVISI | |||||
| 29 | AlertMode | ENUM_ALERT_MODE | 1 (Popup) | 0-3 | 0=Nessuno 1=Popup 2=Push 3=Tutti — impostare 0 in EA |
| 30 | AlertLevel1 | ENUM_ONOFF | OFF (0) | 0 / 1 | Avviso su pivot Livello 1 |
| 31 | AlertLevel2 | ENUM_ONOFF | ON (1) | 0 / 1 | Avviso su pivot Livello 2 |
| 32 | AlertLevel3 | ENUM_ONOFF | ON (1) | 0 / 1 | Avviso su pivot Livello 3 |
Totale: 33 parametri (indici 0-32)
Esempio codice iCustom
Nome file: "TriZone_Semafor" (senza .ex4) — Sempre impostare HeadlessMode = true dentro qualsiasi EA.
In MT4, iCustom restituisce un double direttamente per uno specifico indice buffer e shift.
Nessuna gestione handle, nessun CopyBuffer, nessun IndicatorRelease.
// Firma iCustom MT4:
// double iCustom(symbol, timeframe, "name", params..., bufferIndex, shift)
// Avvolgiamo in una funzione helper per codice EA più pulito.
double TZS_GetBuffer(int bufferIndex, int shift)
{
return iCustom(
Symbol(), // simbolo
Period(), // timeframe
"TriZone_Semafor", // nome esatto file, senza .ex4
// ---- Livello 1: Veloce ----
clrAqua, // #0 ColorL1Low
clrMagenta, // #1 ColorL1High
5, // #2 Period1
1, // #3 Deviation1
3, // #4 Backstep1
159, // #5 HighSymbol1 (punto)
159, // #6 LowSymbol1 (punto)
2, // #7 ConfirmBars1
// ---- Livello 2: Medio ----
clrDodgerBlue, // #8 ColorL2Low
clrOrchid, // #9 ColorL2High
13, // #10 Period2
8, // #11 Deviation2
5, // #12 Backstep2
108, // #13 HighSymbol2 (circonferenza)
108, // #14 LowSymbol2 (circonferenza)
3, // #15 ConfirmBars2
// ---- Livello 3: Lento ----
clrGold, // #16 ColorL3Low
clrOrangeRed, // #17 ColorL3High
34, // #18 Period3
21, // #19 Deviation3
12, // #20 Backstep3
116, // #21 HighSymbol3 (diamante)
116, // #22 LowSymbol3 (diamante)
4, // #23 ConfirmBars3
// ---- Istanza ----
"EA1", // #24 InstanceID — deve differire da copia sul grafico
false, // #25 DebugMode = OFF
true, // #26 HeadlessMode = ON <- richiesto per EA
// ---- Anti-Repaint ----
true, // #27 AntiRepaint = ON (segnali EA stabili)
false, // #28 SafeArrows = OFF
// ---- Avvisi: tutti OFF in EA ----
0, // #29 AlertMode = ALERT_NONE
false, // #30 AlertLevel1
false, // #31 AlertLevel2
false, // #32 AlertLevel3
// ---- Buffer + Shift ----
bufferIndex, // indice buffer (0-5)
shift // shift barra
);
}
// Lettura buffer a shift confermato
void OnTick()
{
int safeShift = 4;
double lo1 = TZS_GetBuffer(0, safeShift); // BufLow1 — Livello 1 BUY
double hi1 = TZS_GetBuffer(1, safeShift); // BufHigh1 — Livello 1 SELL
double lo2 = TZS_GetBuffer(2, safeShift); // BufLow2 — Livello 2 BUY
double hi2 = TZS_GetBuffer(3, safeShift); // BufHigh2 — Livello 2 SELL
double lo3 = TZS_GetBuffer(4, safeShift); // BufLow3 — Livello 3 BUY
double hi3 = TZS_GetBuffer(5, safeShift); // BufHigh3 — Livello 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 — Nessuna pulizia handle in MT4
void OnDeinit(const int reason)
{
// MT4 non usa handle indicatore — nulla da rilasciare.
// Le chiamate iCustom sono stateless per invocazione.
}
Errori comuni
Causa più comune di INIT_PARAMETERS_INCORRECT: InstanceID già in uso da una copia sul grafico dello stesso indicatore. Usa una stringa univoca come "EA1", "EA2" ...
| Errore | Sintomo | Soluzione |
|---|---|---|
| Stesso InstanceID di copia sul grafico | INIT_PARAMETERS_INCORRECT | ID univoco: "EA1", "EA2" ... |
| HeadlessMode = false in EA | Indicatore disegna oggetti + avvisi | Impostare parametro #26 a true |
| Lettura shift = 0 con AntiRepaint | EMPTY_VALUE sempre — barra non confermata | Leggere a shift >= 4 |
| AlertMode != 0 in EA | Alert() blocca il Tester | Impostare parametro #29 a 0 |
| Nome file errato | Restituisce 0 / EMPTY_VALUE | Usare nome esatto: "TriZone_Semafor" |
| Parametri colore mancanti | Valori buffer errati o 0 | Passare TUTTI i 33 parametri in ordine |
| Ordine parametri errato | Segnali errati o nessuno | Seguire la tabella esattamente (0-32) |
