MultiZigZag adalah satu variasi dari indikator ZigZag yang berasaskan algoritma yang disertakan bersama MetaTrader 4 pada tahun 2005-2006.
Algoritma ini sangat mengagumkan dan telah digunakan dalam banyak indikator khusus. Asalnya, algoritma ini diterjemahkan ke dalam MQL4 oleh Rosh, dan kita berterima kasih kepada beliau atas sumbangannya. Jika ada yang tahu siapa pencipta asal algoritma ini, sila tinggalkan nama (atau nama samaran) dalam komen. Saya juga ingin tahu dalam bahasa apa algoritma ini ditulis sebelum ini dan di platform dagangan mana ia digunakan.
Berikut adalah beberapa kelemahan versi asal dari tahun 2005-2006:
- 1) Beban pemproses yang tinggi kerana pengiraan semula zigzag dilakukan pada setiap tick. Komputer yang kurang berkuasa hampir terhenti semasa pergerakan pasaran yang sengit.
- 2) Penggambaran yang tidak tepat. Patahan zigzag kadangkala tergantung “di udara” tanpa terikat pada maksimum (minimum) bar. Namun, secara konsep zigzag seharusnya menunjukkan posisi minimum (maksimum) yang tepat pada carta.
- 3) Zigzag mula melayang jika anda cuba menggulung kembali sejarah dan ia digambarkan tanpa pengikatan visual pada carta.
Versi zigzag ini telah diperbaiki dari semua kelemahan yang disebutkan di atas. Hanya tiga sinar terakhir zigzag yang akan dikira semula. Pengiraan hanya dilakukan apabila harga melangkaui bahagian yang dikira dari bar sifar. Iaitu, apabila maksimum atau minimum bar sifar dihapuskan, atau apabila bar baru muncul, atau ketika sejarah sedang dimuat.
Setiap zigzag menggunakan dua buffer. Satu buffer untuk maksimum dan satu lagi untuk minimum. Ini membolehkan maksimum dan minimum ditunjukkan pada satu bar. Terdapat dua buffer kosong. Bagi mereka yang ingin, boleh menulis kod tambahan dan memasukkan spesimen keempat kod tersebut. Ini boleh menjadi pengajaran yang baik untuk pemrogram MQL4 yang masih belajar. Atau anda boleh menggunakan buffer kosong untuk tugas lain, sekiranya zigzag dimasukkan ke dalam sistem yang sedang dibangunkan.
Pengiraan dan penggambaran zigzag dari kerangka waktu yang lebih besar dilaksanakan tanpa menggunakan fungsi icustom(). Untuk tujuan automasi, kita boleh mengabaikan buffer indikator. Dalam kes ini, kita dapat mengira zigzag untuk semua kerangka waktu secara serentak dan juga untuk sebarang jumlah simbol, asalkan terdapat cukup memori RAM. Pelaksanaan pengiraan tanpa fungsi icustom() membolehkan kita mencari pola (Gartley atau yang lain) bukan hanya pada kerangka waktu semasa, tetapi pada mana-mana kerangka waktu yang dipilih dan juga pada beberapa kerangka waktu secara serentak.
Parameter
Kebanyakan parameter luar adalah pembolehubah rentetan.
Parameter yang dipisahkan dengan koma ditulis dalam setiap pembolehubah rentetan untuk setiap zigzag. Pemisah parameter adalah koma.
Digit pertama adalah untuk zigzag pertama, yang kedua untuk zigzag kedua dan yang ketiga untuk zigzag ketiga. Dipisahkan dengan koma.
ExtDepth, ExtDeviation dan ExtBackstep adalah parameter standard untuk zigzag.
Jika anda menetapkan ExtDepth=0, maka zigzag yang berkaitan tidak akan dipaparkan.
ExtMaxBar - bilangan bar yang zigzag akan dikira.
GrossPeriod - tempoh carta yang ditentukan dalam minit dari mana data akan diambil untuk pengiraan zigzag. Jika anda menetapkan 0, zigzag akan dikira pada kerangka waktu semasa.
Anda boleh menetapkan nilai berikut: 0-1-5-15-30-60-240-1440-10080-43200.
ExtReCalculate - bilangan ekstrem zigzag yang dikira semula dalam mod masa nyata, bermula dari 0. Ia digunakan untuk zigzag dari kerangka waktu yang lebih besar. Disyorkan untuk tidak mengubah parameter ini.
Zigzag akan dipaparkan dari H1-H4-D1 secara lalai. Zigzag akan dipaparkan bermula dari kerangka waktu 1 minit hingga kerangka waktu harian. Hanya satu zigzag yang digambarkan dengan data yang diambil dari kerangka waktu D1 akan dipaparkan di kerangka waktu harian. Hanya zigzag berdasarkan kerangka waktu yang lebih besar atau semasa yang akan digambarkan.
Contoh dalam gambar: zigzag dari H1 digambarkan dengan warna Aqua, H4 - dengan warna Merah dan D1 - dengan warna Kuning.
