Guarda come scaricare robot di trading gratuitamente
Ci trovi su Telegram!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Visualizzazioni:
272
Valutazioni:
(48)
Pubblicato:
Aggiornato:
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

Attenzione! Questo indicatore è stato creato sulla base di una delle versioni del codice “Prosto ZZ” (zig-zag) ed è pubblicato qui con il permesso dell’autore PPC (ho partecipato direttamente al collaudo e alla segnalazione degli errori nell’algoritmo). Il presente codice è una versione riscritta alla lettera dell’indicatore per la piattaforma MetaTrader 4.

Attenzione! La libreria "AlexSTAL_OutsideBar.mqh" deve essere inserita nella cartella del terminale ..\MQL5\Include\

Che cos’è lo ZigZag?

Dal mio punto di vista, lo ZigZag è una sorta di compressione del grafico dei prezzi. La costruzione dello ZigZag può basarsi sia su un unico prezzo della barra (ad esempio, solo il Close), sia su High/Low (il tipo di costruzione più diffuso).

Durante lo studio e l’utilizzo dell’indicatore standard ZigZag sono emersi alcuni errori e difetti nella soluzione predefinita di MetaQuotes. Il problema principale consiste nel fatto che lo ZigZag predefinito non gestisce la situazione dell’outside bar.

Nel 2007 Rosh ha pubblicato una versione dell’indicatore Zigzag2 R, che avrebbe dovuto utilizzare un algoritmo per la gestione delle barre esterne (utilizzando lo stile di disegno DRAW_ZIGZAG al posto di DRAW_SECTION, il che permette di posizionare gli estremi dello ZigZag su una singola barra), ma per ragioni sconosciute persino a lui stesso, la versione presente sul sito non contiene il codice necessario.

Per proseguire la discussione, vorrei formulare la mia definizione di correttezza nella costruzione di uno ZigZag tipico:

  • Gli estremi High e Low devono alternarsi rigorosamente;
  • L’estremo High deve avere il valore massimo (o uguale) tra tutte le barre situate a destra, fino al successivo (opposto) estremo Low;
  • L’estremo Low deve avere il valore minimo (o uguale) tra tutte le barre situate a destra, fino al successivo (opposto) estremo High.

Analizziamo un esempio molto chiaro (EURUSD H1, 8-13 dicembre 2006), in cui si verificano contemporaneamente due situazioni con una barra esterna che non vengono elaborate correttamente dagli indicatori standard.

Figura 1. ZigZag tipico con parametri [12;5;3] e [12;0;0]

Figura 1. ZigZag standard con parametri [12;5;3] e [12;0;0]


Figura 2. Zigzag2 R con parametri [12;5;3]

Figura 2. Zigzag2 R con parametri [12;5;3]



Figura 3. Zigzag2 R con parametri [12;0;0]

Figura 3. Zigzag2 R con parametri [12;0;0]

A prima vista sembrerebbe che nella Figura 3 tutto sia corretto, ma:

  1. I parametri sono stati scelti ad hoc, mentre la correttezza della rappresentazione dovrebbe essere garantita con qualsiasi parametro.
  2. La barra esterna a sinistra non viene elaborata correttamente, poiché l’ordine di formazione delle barre High/Low è importante:


e, di conseguenza, l’ordine di successione dei segmenti dello ZigZag.

Nel corso della ricerca sono stati testati i seguenti ZigZag (non solo sul periodo pubblicato): ZigZag MT3, ZigZag, Zigzag R, Zigzag2 R, ZigZag_NK, ZigZag_ZUP89_nen, ZigZag_new_nen4, CZigZag, Swing_ZZ_1, DT_ZZ_nen, ZigZag_Talex, Reverse_ZZ, Points_ZZ_1, i_MF_Fractal_ZZ_3in1, ang_Amp_ZZ, ZigzagFr_v1, NonLagZigZag_v2, ZZ_FF_v3, ZigZag Ensign, ZigZag tauber, SQZZ Tovaroved, ZZ_2L_nen wellx, Channel ZZ, Azzx_larryzz_3_0, RPoint, RPoint-m v2, ZigZagTF. Nessuno di essi è riuscito a svolgere appieno il compito assegnato.


Grafici di questo indicatore sul segmento in esame:

Figura 4. Parametri [12;0]

Figura 4. Parametri [12;0]


Figura 5. Parametri [23;0]

Figura 5. Parametri [23;0]


Caratteristiche e peculiarità dello ZigZag pubblicato:

  • A passaggio singolo;
  • Viene ricalcolato e ridisegnato solo l'ultimo segmento (un segmento non può essere annullato, tranne nel caso di un aggiornamento dello storico);
  • È presente un meccanismo di ottimizzazione dei calcoli all'interno della barra (non viene ricalcolato ad ogni tick se il prezzo è variato all'interno di una barra nulla o se le variazioni non hanno superato la soglia minima impostata nella variabile MinMotion);
  • Due algoritmi per determinare l’ordine di formazione delle massime e minime della barra: in base al tipo di barra (veloce, ma non affidabile) e in base ai dati di un periodo più breve (richiede la cronologia: è necessario verificare autonomamente la sua disponibilità e adeguatezza oppure modificare la libreria OutsideBar).

La versione ProExtra non viene pubblicata, poiché la questione della correttezza delle quotazioni in MetaTrader 5 non è ancora stata approfondita.


Ulteriori esempi di funzionamento non corretto di altri ZigZag

Figura 6. EURUSD H1, 29 novembre - 7 dicembre 2010. Linea rossa ZigZag con parametri [7;0;0]. Linea blu Zigzag2 R con parametri [7;0;0].

Figura 6. EURUSD H1, dal 29 novembre al 7 dicembre 2010. Linea rossa ZigZag con parametri [7;0;0]. Linea blu Zigzag2 R con parametri [7;0;0]


Figura 7. EURUSD H1, 29 novembre - 7 dicembre 2010. Grafico corretto

Figura 7. EURUSD H1, dal 29 novembre al 7 dicembre 2010. Tracciamento corretto


Conclusione

Purtroppo, questa versione non è esente da difetti. Ma ci sto lavorando.

E poiché questo indicatore funziona secondo lo stesso principio dei canali iHighest/iLowest (proprio come il classico ZigZag), a volte possono verificarsi omissioni dei picchi.

Vi prego vivamente di segnalarmi tutti i bug e le caratteristiche che notate in questo indicatore.

Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/263

Show Positions on Custom Chart (or standard chart) for MT5 Show Positions on Custom Chart (or standard chart) for MT5

Questo indicatore è un'utilità che mostra i livelli di negoziazione etichettati su qualsiasi grafico. Se si desidera sostituire i livelli di negoziazione nativi su un grafico nativo, disattivare "Mostra livelli di negoziazione" nelle proprietà del grafico F8 e collegare questo indicatore. Se si desidera mostrare i livelli di negoziazione su un grafico personalizzato (dove i livelli di negoziazione nativi non possono essere mostrati), è sufficiente allegare questo indicatore. BaseSymbol - specificare il simbolo da cui verranno estratti i dati dei livelli di negoziazione, utile per i simboli personalizzati unici. TextBarsBack - specificare il numero di barre indietro nella storia rispetto alla barra corrente in cui verranno disegnate le etichette dei livelli. Nota: sebbene il numero magico sia menzionato nel codice, non è attualmente incluso nelle linee di negoziazione. Se si eseguono più EA sullo stesso simbolo, è possibile modificare il codice per mostrare i numeri magici ed eseguire più istanze dell'indicatore su un grafico. È inoltre possibile modificare le dimensioni dei caratteri e la spaziatura del testo nelle proprietà dell'oggetto in base alle diverse risoluzioni di visualizzazione.

Baseline: iMA + ATR Bands Baseline: iMA + ATR Bands

Combina una media mobile con bande superiori e inferiori basate sull'ATR per agire come filtro di tendenza e canale di volatilità.

Export Indicator's Values Export Indicator's Values

Questo script esporta i valori dell'indicatore in un file CSV.

Libreria di funzioni hash e conversioni in altri sistemi di numerazione Libreria di funzioni hash e conversioni in altri sistemi di numerazione

La libreria contiene algoritmi di funzioni hash per uso generico: adler32, CRC-32, MaHash8v64. Inoltre, include funzioni di conversione dal sistema di numerazione decimale alla rappresentazione stringa nel sistema di numerazione Base e viceversa.