Perhatian! Versi indikator ZigZag ini berdasarkan kode ZigZag dan dipublikasikan di sini dengan izin dari penulisnya, PPC. Saya telah menguji versi ini dan memperbaiki kesalahan dalam algoritmanya.
Kode ini adalah versi MQL5 dari indikator ZigZag untuk MetaTrader 4.
Perhatian! Perpustakaan AlexSTAL_OutsideBar.mqh harus berada di ..\MQL5\Include folder terminal klien MetaTrader 5.
Apakah itu saja?
Saya rasa ZigZag ini seperti kompresi dari grafik harga. ZigZag dapat dihitung menggunakan harga bar (misalnya, harga Close) atau harga High/Low dari bar (metode yang paling umum digunakan).
Saat bekerja dengan ZigZag standar yang diajukan oleh MetaQuotes, saya menemukan beberapa kesalahan. Masalah utama adalah bahwa ZigZag standar tidak memperhitungkan kasus outside bar.
Pada tahun 2007, Rashid Umarov (Rosh) telah menerbitkan kode Zigzag2 R dengan pemrosesan outside bar (gaya DRAW_ZIGZAG daripada DRAW_SECTION).
Mari kita tetapkan fitur dari implementasi ZigZag yang "benar":
- High dan Low harus saling bergantian dengan ketat;
- High harus lebih tinggi (atau sama) di antara semua bar di sisi kanan hingga Low (opposite) berikutnya;
- Low harus lebih rendah (atau sama) di antara semua bar di sisi kiri hingga High (opposite) berikutnya.
Mari kita lihat menggunakan contoh (EURUSD, H1, 2006, 8-13 Desember). Di sini kita memiliki dua kasus dengan outside bar. ZigZag yang tipikal tidak dapat membangun gambar yang "benar".
![Gambar 1. ZigZag tipikal dengan parameter input [12;5;3] dan [12;0;0] Gambar 1. ZigZag tipikal dengan parameter input [12;5;3] dan [12;0;0]](https://dailyforexmap.s3.ap-northeast-1.amazonaws.com/forum/202511/1763923773916-zz_011.webp)
Gambar 1. ZigZag tipikal dengan parameter input [12;5;3] dan [12;0;0]
![Gambar 2. Zigzag2 R dengan parameter input [12;5;3] Gambar 2. Zigzag2 R dengan parameter input [12;5;3]](https://dailyforexmap.s3.ap-northeast-1.amazonaws.com/forum/202511/1763923774923-zz_031.webp)
Gambar 2. Zigzag2 R dengan parameter input [12;5;3]
![Gambar 3. Zigzag2 R dengan parameter input [12;0;0] Gambar 3. Zigzag2 R dengan parameter input [12;0;0]](https://dailyforexmap.s3.ap-northeast-1.amazonaws.com/forum/202511/1763923775902-zz_021.webp)
Gambar 3. Zigzag2 R dengan parameter input [12;0;0]
Pada pandangan pertama, konstruksi yang benar ditampilkan di Gambar 3 tetapi ada beberapa fitur:
- Dalam kasus ini, konstruksi telah dilakukan dengan benar karena parameter input, tetapi secara umum algoritma harus bekerja dengan parameter apa pun.
- Outside bar di sisi kiri tidak benar, karena urutan pembentukan High/Low dari bar:

Segmen ZigZag harus dibangun seperti ini.
Saya telah menguji banyak kasus dari algoritma ZigZag berikut: 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 Товаровед, ZZ_2L_nen wellx, Channel ZZ, Azzx_larryzz_3_0, RPoint, RPoint-m v2, ZigZagTF. Tetapi tidak ada yang dapat menyelesaikan masalah dengan benar.
Berikut adalah gambar dengan indikator ini:
![Gambar 4. ZigZag Profesional dengan parameter input [12;0] Gambar 4. ZigZag Profesional dengan parameter input [12;0]](https://dailyforexmap.s3.ap-northeast-1.amazonaws.com/forum/202511/1763923777684-zz_051.webp)
Gambar 4. ZigZag Profesional dengan parameter input [12;0]
![Gambar 5. ZigZag Profesional dengan parameter input [23;0] Gambar 5. ZigZag Profesional dengan parameter input [23;0]](https://dailyforexmap.s3.ap-northeast-1.amazonaws.com/forum/202511/1763923778688-zz_061.webp)
Gambar 5. ZigZag Profesional dengan parameter input [23;0]
Beberapa fitur dari versi ini:
- algoritma satu kali proses
- hanya menghitung ulang dan menggambar kembali segmen terakhir (segmen tidak dapat dibatalkan kecuali pembaruan riwayat)
- memiliki algoritma optimasi untuk perhitungan di dalam bar (tidak menggunakan perhitungan ulang pada tick, jika harga telah berubah di dalam bar 0 (belum selesai) atau perubahan harga lebih rendah dari ambang batas, yang ditentukan oleh parameter input MinMotion)
- memiliki dua algoritma untuk urutan pembentukan High/Low: menggunakan tipe bar (cepat tetapi tidak tepat) menggunakan data dari timeframe yang lebih rendah (memerlukan riwayat, Anda perlu memeriksa keberadaannya dan kebenarannya atau Anda perlu memodifikasi perpustakaan OutsideBar)
Berikut adalah beberapa contoh tambahan konstruksi ZigZag yang tidak benar:
![Gambar 6. EURUSD, H1, 29 November - 7 Desember. (Garis merah: ZigZag dengan parameter input [7;0;0]. Garis biru: Zigzag2 R dengan parameter input [7;0;0].) Gambar 6. EURUSD, H1, 29 November - 7 Desember. (Garis merah: ZigZag dengan parameter input [7;0;0]. Garis biru: Zigzag2 R dengan parameter input [7;0;0].)](https://dailyforexmap.s3.ap-northeast-1.amazonaws.com/forum/202511/1763923779494-zz_071.webp)
Gambar 6. EURUSD, H1, 29 November - 7 Desember. (Garis merah: ZigZag dengan parameter input [7;0;0]. Garis biru: Zigzag2 R dengan parameter input [7;0;0].)

Gambar 7. EURUSD, H1, 2010, 29 November - 7 Desember. Konstruksi segmen ZigZag yang benar.
Kesimpulan
Sayangnya versi ini tidak sempurna, tetapi saya sedang mengerjakannya.
Karena algoritma saluran (iHighest/iLowest), kadang-kadang melewatkan highs.
Silakan beri tahu saya tentang bug dan fitur dari indikator ini.
Postingan terkait
- Menggunakan Buffer Jam dalam MetaTrader 5 untuk Pengumpulan Data Trading
- Indikator Open Range Breakout untuk MetaTrader 5: Strategi Trading yang Efektif
- Volume Profile + Range v6.0: Indikator Penting untuk MetaTrader 5
- Harmonic Pattern Finder V3: Indikator Terbaik untuk MetaTrader 5
- Panduan Menggunakan Kalender Ekonomi untuk Backtesting di MetaTrader 5