Indikator Teknikal

Zigzag Fibo Oscillator: Indikator Hebat untuk MetaTrader 5
MetaTrader5
Zigzag Fibo Oscillator: Indikator Hebat untuk MetaTrader 5

Pernahkah anda mendengar tentang Zigzag Fibo Oscillator? Ini adalah versi unik dari Zigzag yang dibangunkan berdasarkan algoritma MetaQuotes. Berikut adalah beberapa perbezaan dan peningkatan yang ada: Dua Mod: Zigzag ini mempunyai dua mod iaitu "Oscillator" dan "HighLow". Mod oscillator menunjukkan pergerakan visual ayunan zigzag, walaupun ia bukan oscillator sebenar dan tidak mempunyai julat tetap. Titik Simbol: Dalam mod ini, nilai rendah yang ekstrem menjadi titik simbol, manakala nilai tinggi ekstrem ditunjukkan seperti biasa. Mod HighLow: Mod HighLow menghormati harga ekstrem tinggi dan rendah (seperti Zigzag biasa). Tahap retracement Fibonacci ditambah dan skala tahap ini akan disesuaikan secara dinamik supaya ia tetap kelihatan tetap. Ini penting kerana sukar untuk menyesuaikan carta harga ketika harga boleh berbeza-beza dengan ketara dari semasa ke semasa. Dalam setiap mod, kaki semasa akan dilukis walaupun belum disahkan, dan ia akan menjejaki harga yang ditentukan dalam input. Anda boleh memilih untuk menjejaki harga buka, tutup, tinggi, rendah, harga berat, atau harga tipikal untuk bar semasa. Idea di sebalik kaki semasa yang belum disahkan ini adalah untuk membantu melihat apa yang berlaku secara langsung. Oleh itu, warna kaki semasa akan diaplikasikan dengan teliti. Apabila kaki menaik sedang dalam proses pengesahan, ia akan berwarna biru apabila harga menunjukkan aliran bullish, dan berwarna kelabu untuk setiap divergensi bearish.Apabila kaki menurun sedang dalam proses pengesahan, ia akan berwarna merah apabila harga menunjukkan aliran bearish, dan berwarna kelabu untuk setiap divergensi bullish. Untuk membantu menggambarkan warna trend kaki yang belum disahkan dengan tindakan harga secara langsung, volume juga akan diperiksa. Warna bullish akan mengatasi warna kaki semasa jika terdapat volume bullish yang ketara, begitu juga dengan warna bearish yang akan mengatasi warna kaki semasa jika terdapat volume bearish yang ketara. Versi 1.01 telah dimuat naik. Beberapa pepijat telah dikesan dan diperbaiki. --------------------------------------------------------------------------------------------------------------------- Versi 1.02 telah dimuat naik. Lebih banyak penyesuaian dengan skala, beberapa peningkatan kecil, boleh menyalakan tahap fib, dan penjejakan arah harga yang lebih baik dengan kaki yang belum disahkan dalam mod oscillator.

2025.01.21
Penggunaan Buffer Jam untuk Pengumpulan Data di MetaTrader 5
MetaTrader5
Penggunaan Buffer Jam untuk Pengumpulan Data di MetaTrader 5

Tujuan Indikator ini direka untuk membantu trader dalam mengumpul data bagi tujuan pemodelan. Seperti yang kita tahu, dummies waktu sering digunakan dalam pemodelan ekonomi. Indikator ringkas ini menyediakan setiap jam sebagai vektor buffer binari. Buffer akhir menyimpan waktu itu sendiri. Jika anda mengumpul data dari indikator lain ke dalam format CSV, sebagai contoh menggunakan fungsi CopyBuffer, indikator ini membolehkan anda menambah kolum dummy bagi jam yang sedang dikumpul sebagai data tambahan. Ini adalah kod yang mudah bagi mereka yang mengumpul data, contohnya untuk tujuan pembelajaran mesin, supaya anda mempunyai pembolehubah dummy (buffer 0 hingga 23) atau pembolehubah jam (buffer 24) untuk digunakan dalam pemodelan. Menelusuri Kod Dimulakan dengan mengisytiharkan nombor buffer dan nombor plot sebanyak 25: #property indicator_chart_window #property indicator_buffers 25 #property indicator_plots 25 Pemilihan Buffer Menetapkan label buffer untuk tetingkap data: #property indicator_label1 "Jam 00" #property indicator_label2 "Jam 01" #property indicator_label3 "Jam 02" #property indicator_label4 "Jam 03" #property indicator_label5 "Jam 04" #property indicator_label6 "Jam 05" #property indicator_label7 "Jam 06" #property indicator_label8 "Jam 07" #property indicator_label9 "Jam 08" #property indicator_label10 "Jam 09" #property indicator_label11 "Jam 10" #property indicator_label12 "Jam 11" #property indicator_label13 "Jam 12" #property indicator_label14 "Jam 13" #property indicator_label15 "Jam 14" #property indicator_label16 "Jam 15" #property indicator_label17 "Jam 16" #property indicator_label18 "Jam 17" #property indicator_label19 "Jam 18" #property indicator_label20 "Jam 19" #property indicator_label21 "Jam 20" #property indicator_label22 "Jam 21" #property indicator_label23 "Jam 22" #property indicator_label24 "Jam 23" #property indicator_label25 "Jam" Penyataan Buffer Kemudian, kita isytiharkan buffer dan juga pembolehubah integer untuk jam hari yang akan dikira kemudian. double hourBuffer0[]; double hourBuffer1[]; double hourBuffer2[]; double hourBuffer3[]; double hourBuffer4[]; double hourBuffer5[]; double hourBuffer6[]; double hourBuffer7[]; double hourBuffer8[]; double hourBuffer9[]; double hourBuffer10[]; double hourBuffer11[]; double hourBuffer12[]; double hourBuffer13[]; double hourBuffer14[]; double hourBuffer15[]; double hourBuffer16[]; double hourBuffer17[]; double hourBuffer18[]; double hourBuffer19[]; double hourBuffer20[]; double hourBuffer21[]; double hourBuffer22[]; double hourBuffer23[]; double hourBuffer[]; int bar_hour; Pemindahan Indeks dan Penggambaran Plot Set indeks untuk semua buffer sebagai data, dan matikan penggambaran menggunakan satu gelung (cuba melakukan pengindeksan dengan gelung menyebabkan ralat, jadi ini dilakukan satu persatu; tetapi gelung senang digunakan untuk PlotIndexSetInteger). // Assign buffers to index, hide from chart, show in Data Window SetIndexBuffer(0, hourBuffer0, INDICATOR_DATA); SetIndexBuffer(1, hourBuffer1, INDICATOR_DATA); SetIndexBuffer(2, hourBuffer2, INDICATOR_DATA); SetIndexBuffer(3, hourBuffer3, INDICATOR_DATA); SetIndexBuffer(4, hourBuffer4, INDICATOR_DATA); SetIndexBuffer(5, hourBuffer5, INDICATOR_DATA); SetIndexBuffer(6, hourBuffer6, INDICATOR_DATA); SetIndexBuffer(7, hourBuffer7, INDICATOR_DATA); SetIndexBuffer(8, hourBuffer8, INDICATOR_DATA); SetIndexBuffer(9, hourBuffer9, INDICATOR_DATA); SetIndexBuffer(10, hourBuffer10, INDICATOR_DATA); SetIndexBuffer(11, hourBuffer11, INDICATOR_DATA); SetIndexBuffer(12, hourBuffer12, INDICATOR_DATA); SetIndexBuffer(13, hourBuffer13, INDICATOR_DATA); SetIndexBuffer(14, hourBuffer14, INDICATOR_DATA); SetIndexBuffer(15, hourBuffer15, INDICATOR_DATA); SetIndexBuffer(16, hourBuffer16, INDICATOR_DATA); SetIndexBuffer(17, hourBuffer17, INDICATOR_DATA); SetIndexBuffer(18, hourBuffer18, INDICATOR_DATA); SetIndexBuffer(19, hourBuffer19, INDICATOR_DATA); SetIndexBuffer(20, hourBuffer20, INDICATOR_DATA); SetIndexBuffer(21, hourBuffer21, INDICATOR_DATA); SetIndexBuffer(22, hourBuffer22, INDICATOR_DATA); SetIndexBuffer(23, hourBuffer23, INDICATOR_DATA); SetIndexBuffer(24, hourBuffer, INDICATOR_DATA); for(int i = 0; i < 24; i++) { PlotIndexSetInteger(i, PLOT_DRAW_TYPE, DRAW_NONE); PlotIndexSetInteger(i, PLOT_SHOW_DATA, true); } return(INIT_SUCCEEDED); Fungsi OnCalculate dan Gelung Program Seterusnya kita bergerak ke fungsi OnCalculate: Di sini kita set semua buffer kepada sifar, dan hanya mengubah yang sepadan dengan jam semasa kepada satu. Mungkin ada penjimatan kecekapan di sini, tetapi untuk lain kali. if(rates_total <= 0) return(0); // We'll recalc from the first unprocessed bar int start = (prev_calculated > 0 ? prev_calculated - 1 : 0); for(int i = start; i < rates_total; i++) { // Calculate hour (0..23) for bar i bar_hour = (int)((time[i] % 86400) / 3600); // 1) Set ALL 24 buffers for bar i to 0 hourBuffer0[i] = 0.0; hourBuffer1[i] = 0.0; hourBuffer2[i] = 0.0; hourBuffer3[i] = 0.0; hourBuffer4[i] = 0.0; hourBuffer5[i] = 0.0; hourBuffer6[i] = 0.0; hourBuffer7[i] = 0.0; hourBuffer8[i] = 0.0; hourBuffer9[i] = 0.0; hourBuffer10[i] = 0.0; hourBuffer11[i] = 0.0; hourBuffer12[i] = 0.0; hourBuffer13[i] = 0.0; hourBuffer14[i] = 0.0; hourBuffer15[i] = 0.0; hourBuffer16[i] = 0.0; hourBuffer17[i] = 0.0; hourBuffer18[i] = 0.0; hourBuffer19[i] = 0.0; hourBuffer20[i] = 0.0; hourBuffer21[i] = 0.0; hourBuffer22[i] = 0.0; hourBuffer23[i] = 0.0; hourBuffer[i] = EMPTY_VALUE; // 2) Now set ONLY the matching buffer to 1 switch(bar_hour) { case 0: hourBuffer0[i] = 1.0; hourBuffer[i] = bar_hour; break; case 1: hourBuffer1[i] = 1.0; hourBuffer[i] = bar_hour; break; case 2: hourBuffer2[i] = 1.0; hourBuffer[i] = bar_hour; break; case 3: hourBuffer3[i] = 1.0; hourBuffer[i] = bar_hour; break; case 4: hourBuffer4[i] = 1.0; hourBuffer[i] = bar_hour; break; case 5: hourBuffer5[i] = 1.0; hourBuffer[i] = bar_hour; break; case 6: hourBuffer6[i] = 1.0; hourBuffer[i] = bar_hour; break; case 7: hourBuffer7[i] = 1.0; hourBuffer[i] = bar_hour; break; case 8: hourBuffer8[i] = 1.0; hourBuffer[i] = bar_hour; break; case 9: hourBuffer9[i] = 1.0; hourBuffer[i] = bar_hour; break; case 10: hourBuffer10[i] = 1.0; hourBuffer[i] = bar_hour; break; case 11: hourBuffer11[i] = 1.0; hourBuffer[i] = bar_hour; break; case 12: hourBuffer12[i] = 1.0; hourBuffer[i] = bar_hour; break; case 13: hourBuffer13[i] = 1.0; hourBuffer[i] = bar_hour; break; case 14: hourBuffer14[i] = 1.0; hourBuffer[i] = bar_hour; break; case 15: hourBuffer15[i] = 1.0; hourBuffer[i] = bar_hour; break; case 16: hourBuffer16[i] = 1.0; hourBuffer[i] = bar_hour; break; case 17: hourBuffer17[i] = 1.0; hourBuffer[i] = bar_hour; break; case 18: hourBuffer18[i] = 1.0; hourBuffer[i] = bar_hour; break; case 19: hourBuffer19[i] = 1.0; hourBuffer[i] = bar_hour; break; case 20: hourBuffer20[i] = 1.0; hourBuffer[i] = bar_hour; break; case 21: hourBuffer21[i] = 1.0; hourBuffer[i] = bar_hour; break; case 22: hourBuffer22[i] = 1.0; hourBuffer[i] = bar_hour; break; case 23: hourBuffer23[i] = 1.0; hourBuffer[i] = bar_hour; break; } string localHourText = HourToText(bar_hour); Comment("Jam sekarang ialah: ", localHourText); } // Return number of bars processed return(rates_total); Fungsi untuk Menambah Rasa kepada Komen Dan yang terakhir, program untuk komen: Ini sebenarnya adalah pemeriksaan debugging tetapi saya telah meninggalkan komen ini. string HourToText(int bh) { string TextHour; switch(bh) { case 0: TextHour = "12 am"; // waktu tengah malam dalam format 12 jam break; case 1: TextHour = "1 am"; break; case 2: TextHour = "2 am"; break; case 3: TextHour = "3 am"; break; case 4: TextHour = "4 am"; break; case 5: TextHour = "5 am"; break; case 6: TextHour = "6 am"; break; case 7: TextHour = "7 am"; break; case 8: TextHour = "8 am"; break; case 9: TextHour = "9 am"; break; case 10: TextHour = "10 am"; break; case 11: TextHour = "11 am"; break; case 12: TextHour = "12 pm"; // waktu tengah hari dalam format 12 jam break; case 13: TextHour = "1 pm"; break; case 14: TextHour = "2 pm"; break; case 15: TextHour = "3 pm"; break; case 16: TextHour = "4 pm"; break; case 17: TextHour = "5 pm"; break; case 18: TextHour = "6 pm"; break; case 19: TextHour = "7 pm"; break; case 20: TextHour = "8 pm"; break; case 21: TextHour = "9 pm"; break; case 22: TextHour = "10 pm"; break; case 23: TextHour = "11 pm"; break; default: // Just in case 'bh' is out of range (0..23) TextHour = "Tidak Diketahui"; break; } return TextHour; Perhatikan bahawa ini hanya dipaparkan melalui tetingkap data buat masa ini. Selamat Hari Natal dan Selamat Tahun Baru 2025 kepada semua.

2024.12.25
Indikator Jalur Fibonacci Bollinger untuk MetaTrader 5
MetaTrader5
Indikator Jalur Fibonacci Bollinger untuk MetaTrader 5

Indikator Jalur Fibonacci Bollinger ini merupakan hasil penukaran dari Pine Script (oleh Rashad) kepada bahasa MQL5. Ia menggabungkan kekuatan Jalur Bollinger dengan tahap Fibonacci untuk membantu peniaga mengenal pasti zon sokongan dan rintangan yang dinamik dengan lebih berkesan. Ciri-Ciri: Secara automatik mengira tahap Fibonacci pada Jalur Bollinger. Memberikan perspektif unik untuk perdagangan breakout dan pembalikan. Sepenuhnya serasi dengan MetaTrader 5. Indikator ini sangat sesuai untuk peniaga yang mencari alat analisis teknikal yang lebih baik. Muat turun dan uji hari ini! Berikut adalah kod pine script: study(shorttitle="FBB", title="Jalur Fibonacci Bollinger", overlay=true) length = input(200, minval=1) src = input(hlc3, title="Sumber") mult = input(3.0, minval=0.001, maxval=50) basis = vwma(src, length) dev = mult * stdev(src, length) upper_1= basis + (0.236*dev) upper_2= basis + (0.382*dev) upper_3= basis + (0.5*dev) upper_4= basis + (0.618*dev) upper_5= basis + (0.764*dev) upper_6= basis + (1*dev) lower_1= basis - (0.236*dev) lower_2= basis - (0.382*dev) lower_3= basis - (0.5*dev) lower_4= basis - (0.618*dev) lower_5= basis - (0.764*dev) lower_6= basis - (1*dev) plot(basis, color=fuchsia, linewidth=2) p1 = plot(upper_1, color=white, linewidth=1, title="0.236") p2 = plot(upper_2, color=white, linewidth=1, title="0.382") p3 = plot(upper_3, color=white, linewidth=1, title="0.5") p4 = plot(upper_4, color=white, linewidth=1, title="0.618") p5 = plot(upper_5, color=white, linewidth=1, title="0.764") p6 = plot(upper_6, color=red, linewidth=2, title="1") p13 = plot(lower_1, color=white, linewidth=1, title="0.236") p14 = plot(lower_2, color=white, linewidth=1, title="0.382") p15 = plot(lower_3, color=white, linewidth=1, title="0.5") p16 = plot(lower_4, color=white, linewidth=1, title="0.618") p17 = plot(lower_5, color=white, linewidth=1, title="0.764") p18 = plot(lower_6, color=green, linewidth=2, title="1") Contoh MQL5:

2024.12.04
Menggunakan Kalendar Ekonomi untuk Backtesting Strategi Trading di MetaTrader 5
MetaTrader5
Menggunakan Kalendar Ekonomi untuk Backtesting Strategi Trading di MetaTrader 5

Untuk memendekkan cerita, kalendar ekonomi terbina dalam MetaTrader 5 tidak diselaraskan sepenuhnya dengan petikan sejarah. Petikan ditandakan dengan cap waktu mengikut zon waktu yang berkuat kuasa di pelayan pada masa pembentukan setiap bar yang berkaitan. Setelah bar terbentuk, ia akan tetap tidak berubah, termasuk cap waktunya. Sebaliknya, kalendar ekonomi memberikan maklumat tentang acara (masa lalu, masa kini, dan masa depan) yang terikat dengan zon waktu semasa pelayan. Oleh kerana banyak broker mengikuti jadual zon waktu tertentu, termasuk menghidupkan dan mematikan mod penjimatan siang, cap waktu acara sejarah mungkin teralih satu jam berbanding dengan bar yang berkaitan, kira-kira setengah tahun. Lebih daripada itu, broker kadangkala mengubah zon waktu lebih radikal daripada sekadar menukar DST (Daylight Saving Time). Petikan sejarah mungkin kelihatan teralih beberapa jam ke kiri atau kanan berbanding dengan waktu acara ekonomi yang asalnya berlaku, tetapi kini dilaporkan oleh kalendar dalam zon waktu pelayan yang telah dikemas kini. Memandangkan berita datang dari pelbagai negara dengan jadual DST mereka sendiri dan pelayan anda boleh terletak di kawasan dengan jadual yang berbeza, waktu pengeluaran berita boleh kelihatan "melompat" ke belakang dan ke depan di carta dengan cara yang lebih pelik (contohnya, selama beberapa minggu di musim bunga dan musim luruh). Semua ini mungkin tidak kelihatan penting dalam talian, tetapi bagaimana jika kita ingin menguji strategi yang berasaskan berita? Ya, anda boleh mengatakan bahawa kalendar tidak disokong dalam penguji MetaTrader secara native, tetapi ramai trader suka berdagang berdasarkan berita dan mereka yang tidak seharusnya mengikuti berita untuk menjauhkan diri dari pasaran sebelum ia menjadi huru-hara semasa berita. Oleh itu, backtesting dengan kalendar adalah penting. Itulah sebabnya adalah sangat logik untuk mengeksport kalendar ke penyimpanan luaran (fail, pangkalan data) dan kemudian mengimpornya ke penguji. Salah satu alat pengarkiban untuk pengalaman kalendar dalam penguji telah diperkenalkan dalam buku algotrading. Di sini kita berhadapan dengan masalah desinkronisasi petikan sejarah dengan acara sejarah. Untuk memudahkan, masalah ini ditinggalkan tanpa penyelesaian dalam buku tersebut. Kini ia telah diselesaikan terima kasih kepada versi lanjutan CalendarCache.mqh dan indikator yang dipamerkan CalendarMonitorCachedTZ.mq5. Ini adalah versi yang sedikit diubah suai dari CalendarMonitorCached.mq5 dari buku. Indikator ini memantau acara berita dan mengemas kini secara dinamik jadual di carta dengan beberapa acara yang lalu dan akan datang. Semua kerja yang berkaitan dengan pembetulan waktu dilakukan secara belakang tabir - dalam perpustakaan awam lain TimeServerDST.mqh. Untuk pemahaman yang lebih baik tentang bagaimana pembetulan waktu berfungsi, anda boleh menggunakan skrip CalendarCSVForDates.mq5 dan membandingkan fail CSV dengan dan tanpa pembetulan secara berdampingan. Inilah cara perpustakaan disematkan dalam kod sumber kedua-dua program - skrip dan indikator ini. #include <TimeServerDST.mqh> // termasuk sebelum cache kalendar membolehkan sokongan pembetulan zon waktu #include <MQL5Book/CalendarFilterCached.mqh> #include <MQL5Book/CalendarCache.mqh> Seperti dalam indikator asal, terdapat input string CalendarCacheFile, di mana anda boleh memberikan nama fail kalendar untuk penulisan atau bacaan. Apabila indikator dilampirkan pada carta dalam talian dengan CalendarCacheFile yang kosong, ia berfungsi dengan kalendar terbina dalam secara langsung. Apabila indikator dilaksanakan dengan nama tertentu dalam CalendarCacheFile dan fail tidak wujud, indikator mengeksport rekod kalendar ke dalam fail cache (mencipta fail) dan keluar. Ini adalah tahap di mana cap waktu perlu/dapat diperbetulkan (lihat FixCachedTimesBySymbolHistory di bawah). Apabila indikator dilaksanakan dengan nama fail cache yang sedia ada dalam CalendarCacheFile, ia memuatkan cache dan berfungsi dengan salinan ini dengan cara yang sama seperti dengan kalendar terbina dalam. Ini sangat berguna untuk penguji. Sila, jangan lupa bahawa penguji memerlukan untuk menentukan fail tambahan, dalam kes kami - fail kalendar dalam talian yang disediakan, dalam arahan #property tester_file ATAU anda perlu meletakkan fail kalendar ke dalam folder umum C:/Users/<User>/AppData/Roaming/MetaQuotes/Terminal/Common/. Sudah tentu, cache juga boleh dimuatkan ke dalam EA semasa backtests dan pengoptimuman. Input string FixCachedTimesBySymbolHistory diproses dengan cara berikut. Jika ia kosong, indikator menyimpan cache tanpa pembetulan waktu. Untuk membolehkan pembetulan waktu semasa eksport, anda perlu menentukan simbol yang akan digunakan untuk pengesanan empirikal zon waktu sejarah pelayan. Ia berfungsi berdasarkan sejarah petikan H1, lebih baik "XAUUSD" atau "EURUSD". Dengan bantuan input ini, hanya beberapa baris ditambahkan ke dalam versi baru indikator:          if(StringLen(FixCachedTimesBySymbolHistory))             cache[].adjustTZonHistory(FixCachedTimesBySymbolHistory, true); Metod adjustTZonHistory diperkenalkan khusus dalam kelas CalendarCache untuk pembetulan cap waktu dan pelaksanaannya menggunakan dalaman TimeServerDST.mqh. Metod ini hanya perlu dipanggil dalam talian (bukan dalam penguji). Biasanya metod ini perlu dipanggil pada objek cache yang diisi dari kalendar terbina dalam, sejurus selepas pengisian. Jika tidak, jika cache dimuat dari fail kalendar, atau jika metod sudah dipanggil sebelum ini, kandungan cache mungkin sudah diperbetulkan. Kemudian anda akan menerapkan pembetulan pada pembetulan dan mendapatkan cap waktu yang salah. Parameter kedua (true) mengarahkan metod untuk menulis sempadan perubahan yang diterapkan ke dalam log. Sesuatu seperti ini: Pembetulan waktu bermula pada 2021.07.19 00:30:00 2021.07.19 00:30:00: 148786 -10800 bezanya=-3600 2021.11.08 01:50:00: 135918 -7200 OK 2022.03.14 04:30:00: 161085 -10800 bezanya=-3600 2022.11.07 04:00:00: 165962 -7200 OK 2023.03.13 01:50:00: 168500 -10800 bezanya=-3600 2023.11.06 01:50:00: 169270 -7200 OK 2024.03.11 01:50:00: 181258 -10800 bezanya=-3600 2024.11.04 02:30:00: 208469 -7200 OK Setiap baris mengandungi waktu dan ID acara di mana ketidakcocokan baru dikesan, offset waktu pelayan pada acara, dan perbezaan yang perlu diterapkan pada semua cap waktu berikutnya untuk menghapuskan bias dalam waktu pelayan pada saat penyimpanan kalendar. Fail mqh yang dilampirkan (CalendarFilter.mqh, CalendarCache.mqh, QuickSortStructT(Ref).mqh) mengandungi pembetulan dan penambahbaikan berbanding versi asal mereka dari buku. Kemas kini 11.11.2024 - pembetulan kecil dan kemas kini dalam CalendarFilter.mqh, CalendarCache.mqh; 22.11.2024 - pembetulan kecil dan penambahbaikan dalam CalendarCache.mqh.

2024.11.11
Tandakan Harga Extrem dengan Indikator MetaTrader 5
MetaTrader5
Tandakan Harga Extrem dengan Indikator MetaTrader 5

Hai trader! Hari ini saya ingin berkongsi tentang satu indikator yang dapat membantu kita menandakan harga ekstrem dengan lebih berkesan. Indikator ini akan memaparkan garis-garis yang menunjukkan tahap tertinggi dan terendah dalam satu tempoh yang ditetapkan. Selain menggunakan harga tertinggi dan terendah (OHLC), indikator ini juga mengambil kira harga bida dan harga tawar dari setiap bar. Indikator ini dilengkapi dengan ciri yang membolehkan kita mengehadkan pemprosesan kepada bilangan bar tertentu. Ini sangat berguna untuk memastikan kita hanya melihat data yang relevan dan tidak terpengaruh oleh kebisingan yang tidak perlu. Satu lagi kelebihan indikator ini adalah ia tidak akan melukis garis pada kawasan yang mengalami pecahan struktur (contohnya, apabila harga melepasi tahap tinggi atau rendah yang sebelumnya). Garis-garis ini akan hilang ketika berlaku keadaan tersebut, dan hanya akan dipaparkan pada kawasan sokongan dan rintangan yang sebenar. Anda boleh mengawal ciri ini melalui input yang tersedia. Jika anda mahu, indikator ini juga boleh memaparkan garis pada harga ekstrem serta menunjukkan kecenderungan garis ketika pasaran sedang naik atau turun. ---------------------------------------------------- Apa yang Baru dalam Versi 2.0 Pengoptimuman telah dilakukan di mana hanya tick dari bar semasa akan diambil kira, menjadikan indikator ini lebih lancar digunakan pada kerangka waktu yang lebih tinggi. Buffer yang tidak diperlukan telah dibuang untuk meningkatkan prestasi.

2024.11.09
Indikator Hammer: Panduan Lengkap untuk MetaTrader 5
MetaTrader5
Indikator Hammer: Panduan Lengkap untuk MetaTrader 5

Indikator Hammer merupakan alat yang sangat berguna untuk mengenal pasti formasi candlestick, khususnya hammer hijau dan merah serta inverted hammer pada carta MetaTrader 5. Ia direka untuk menonjolkan titik-titik potensi pembalikan harga dengan menganalisis struktur candlestick pada setiap bar. Biasanya, hammer dicirikan oleh badan yang kecil dan ekor bawah yang panjang, menunjukkan tekanan beli yang mungkin berlaku selepas aliran menurun. Sebaliknya, inverted hammer mempunyai ekor atas yang panjang dan boleh menandakan kemungkinan pembalikan selepas aliran menaik. Indikator ini mengira saiz dan nisbah ekor serta badan candlestick untuk mengesan corak-corak ini, menggunakan tiga parameter utama yang boleh disesuaikan: MaxRatioShortWick: Menetapkan nisbah maksimum untuk ekor pendek berbanding dengan candlestick penuh, menyaring corak dengan ekor atas yang minimum. MinRatioLongWick: Mendefinisikan nisbah minimum untuk ekor panjang, memastikan bahawa corak yang dikesan mempunyai panjang ekor yang ketara berbanding dengan badan candlestick. MinCandleSize: Menentukan saiz minimum candlestick yang diperlukan untuk layak sebagai corak hammer atau inverted hammer. Setelah corak dikesan, indikator akan memaparkan anak panah dalam warna tertentu (hijau atau merah) pada carta, diletakkan berhampiran harga tertinggi atau terendah candlestick, bergantung kepada arah corak tersebut. Fungsi dalam kod ini mengendalikan penciptaan dan penempatan objek grafik ini, serta membersihkan objek tersebut apabila indikator dibuang dari carta. Indikator ini amat sesuai untuk pedagang yang ingin mengesan kemungkinan pembalikan, dan parameternya boleh disesuaikan untuk keadaan pasaran dan rangka masa yang berbeza. Ia adalah alat yang serba boleh yang dapat melengkapi pelbagai strategi trading dengan memberikan isyarat visual awal untuk perubahan harga yang berpotensi.

2024.10.31
Tanda Hari dan Minggu pada MetaTrader 5: Panduan Lengkap untuk Trader
MetaTrader5
Tanda Hari dan Minggu pada MetaTrader 5: Panduan Lengkap untuk Trader

Indikator WeekDays memaparkan Tanda Hari, Minggu Dalam Tahun, Hari Dalam Tahun, atau Indeks Bar di Data Window, dan secara pilihan juga boleh dipaparkan dalam label di carta.Seperti biasa, maklumat dalam Data Window dikemas kini secara dinamik mengikut pergerakan tetikus: nama hari akan sentiasa dikemas kini dengan segera di lajur kiri, manakala kandungan lajur kanan ditentukan oleh tetapan, khususnya input WholePart dan FractionalPart. Setiap daripada mereka membolehkan pengguna memilih salah satu entiti untuk dipaparkan: Tanda Hari, Minggu Dalam Tahun, Hari Dalam Tahun, Indeks Bar, atau Tiada.WholePart - pemilih untuk nombor di hadapan titik perpuluhan;FractionalPart - pemilih untuk nombor selepas titik perpuluhan;Dua sifat yang dipilih (nombor integer) digabungkan menjadi satu nilai titik perpuluhan untuk setiap bar dan disimpan dalam buffer indikator. Sudah tentu, buffer ini tidak dipaparkan di carta kerana gaya DRAW_NONE, kerana nilainya adalah sintetik.Contohnya, pada tangkapan skrin di bawah, nama hari adalah Selasa, dan buffer yang mengandungi Week.DoY (Indeks Hari Dalam Tahun) menunjukkan nilai 44.302, yang mana 44 adalah minggu ke-44 dan 302 adalah hari ke-302 dalam tahun tersebut.Input lain membolehkan pengguna menentukan sama ada untuk ShowLabels di carta, jenis FontName, FontSize, dan FontColor yang digunakan, serta Padding dari tepi atas/bawah, cara untuk Align mereka (atas/tengah/bawah), dan sudut RotationAngle pilihan untuk penjajaran tengah.Secara lalai, clrNONE untuk FontColor bermaksud warna terbalik untuk latar belakang carta semasa.

2024.10.29
AutoFibo: Indikator Fibonacci Automatik untuk MetaTrader 5
MetaTrader5
AutoFibo: Indikator Fibonacci Automatik untuk MetaTrader 5

Ciri-Ciri: Paras Fibonacci Automatik: Indikator ini secara dinamik melukis garis pembetulan Fibonacci berdasarkan tinggi dan rendah terkini ZigZag, memberikan pandangan jelas tentang potensi titik pembalikan. Pilihan Fibonacci Dinamik dan Statik: Pengguna boleh memilih antara paras pembetulan Fibonacci dinamik dan statik. Paras dinamik dikemas kini secara berterusan berdasarkan titik ZigZag terkini, manakala paras statik kekal tetap pada tinggi atau rendah yang signifikan sebelum ini. Penampilan Boleh Disesuaikan: Anda boleh mengubah warna, gaya, dan lebar garis Fibonacci untuk kedua-dua paras dinamik dan statik, membolehkan visualisasi yang diperibadikan sesuai dengan latar belakang dan gaya carta yang berbeza. Dioptimumkan untuk MetaTrader 5: Indikator ini memanfaatkan sepenuhnya pengendalian objek grafik MT5, menawarkan pengalaman carta yang lancar dan efisien. Parameter: Tetapan ZigZag (ExtDepth, ExtDeviation, ExtBackstep): Sesuaikan kepekaan corak ZigZag untuk menangkap lebih banyak atau kurang ayunan harga. Tetapan Fibonacci Dinamik: Kustomisasi warna, gaya garis, dan lebar garis pembetulan Fibonacci dinamik. Tetapan Fibonacci Statik: Sesuaikan penampilan garis Fibonacci statik berdasarkan tinggi/rendah ZigZag kedua yang paling terkini. Bagaimana Menggunakan: Indikator AutoFibo adalah ideal untuk strategi perdagangan mengikuti trend dan pembalikan. Dengan meletakkan paras Fibonacci pada corak ZigZag, ia membolehkan pedagang menilai dengan visual paras pembetulan dan potensi titik masuk/keluar. Indikator ini boleh digunakan pada pelbagai jangka masa, menjadikannya serbaguna untuk perdagangan intraday dan jangka panjang.

2024.10.25
PTB: Indikator Hebat untuk MetaTrader 5 yang Perlu Anda Tahu
MetaTrader5
PTB: Indikator Hebat untuk MetaTrader 5 yang Perlu Anda Tahu

Penerangan Indikator: PTB.mq5 Gambaran Keseluruhan: Indikator PTB.mq5 direka khas untuk platform dagangan MetaTrader 5. Ia menghitung dan memaparkan tahap tertinggi dan terendah jangka pendek serta jangka panjang, serta tahap pemulihan Fibonacci berdasarkan ekstrem ini. Ciri-Ciri: - Tinggi dan Rendah Jangka Pendek: Indikator ini mengira harga tertinggi dan terendah dalam tempoh yang ditentukan oleh pengguna, membantu trader mengenal pasti tahap sokongan dan rintangan segera. - Tinggi dan Rendah Jangka Panjang: Ia juga mengira harga tertinggi dan terendah dalam jangka masa yang lebih panjang, memberikan pandangan tentang tren pasaran yang lebih luas. - Tahap Fibonacci: Indikator ini memplot tahap pemulihan Fibonacci yang penting (23.6%, 38.2%, 50%, 61.8%, dan 78.6%) berdasarkan tinggi dan rendah jangka panjang, yang sering digunakan oleh trader untuk mengenal pasti titik pembalikan yang berpotensi dalam pasaran. Parameter Input: - shortLength: Bilangan lilin yang diambil kira untuk mengira tinggi dan rendah jangka pendek. - longLength: Bilangan lilin yang diambil kira untuk mengira tinggi dan rendah jangka panjang. Perwakilan Visual: - Indikator ini menggunakan warna dan lebar yang berbeza untuk garis-garis yang dipaparkan:   - Tinggi Pendek: Merah (lebar: 3)   - Rendah Pendek: Biru (lebar: 3)   - Tinggi Panjang: Hijau (lebar: 3)   - Rendah Panjang: Oren (lebar: 3)   - Tahap Fibonacci:        - 78.6%: Ungu (lebar: 1)     - 23.6%: Aqua (lebar: 1)     - 38.2%: Kuning (lebar: 1)     - 61.8%: Coklat (lebar: 1)     - 50%: Putih (lebar: 3) Logik Pengiraan: - Indikator ini mengulangi data harga untuk mengira nilai tertinggi dan terendah untuk kedua-dua tempoh jangka pendek dan jangka panjang. - Ia kemudian mengira tahap Fibonacci berdasarkan perbezaan antara tinggi dan rendah jangka panjang.

2024.09.22
Panduan Menggunakan ChartObjectsCopyPaste untuk MetaTrader 5
MetaTrader5
Panduan Menggunakan ChartObjectsCopyPaste untuk MetaTrader 5

Adakah anda pernah merasa perlukan untuk menyalin dan menampal objek grafik antara carta yang dibuka? Saya yakin ramai di antara kita pernah mengalaminya. Malangnya, MetaTrader tidak menyediakan fungsi "Salin & Tampal" untuk objek. Satu-satunya cara untuk mencapai kesan yang lebih kurang sama adalah melalui templat (fail tpl). Tetapi templat menyimpan semua keadaan carta, termasuk indikator, tetapan dan banyak perkara lain yang mungkin tidak relevan untuk proses penggandaan yang diperlukan. Oleh sebab itu, saya telah membangunkan indikator ChartObjectsCopyPaste.mq5. Ia membolehkan anda menyalin objek yang dipilih ke papan klip, daripada mana anda boleh menampalnya ke carta lain. Tanpa syarat tambahan. Indikator ini berdasarkan satu lagi indikator yang diterbitkan dalam buku algotrading - ObjectGroupEdit.mq5. Sila ikuti pautan tersebut untuk mengetahui lebih lanjut mengenai semua kelas yang terlibat (ObjectMonitor, MapArray dan lain-lain) yang berfungsi di belakang tabir. Indikator ini tidak mempunyai buffer. Ia perlu dipasang pada sekurang-kurangnya 2 carta: carta sumber dari mana anda ingin menyalin objek, dan carta sasaran di mana anda merancang untuk menampalnya. Semasa berjalan pada carta, indikator ini mengesan objek grafik yang sedia ada dan membuat catatan tentang objek yang dipilih. Perintah "Salin & Tampal" yang Biasa Seperti biasa, perintah "Salin & Tampal" berfungsi dalam pasangan: Tekan kekunci Ctrl+Q untuk menyalin semua objek yang dipilih ke dalam papan klip Windows sebagai teks (anda boleh menyimpannya dan melihatnya dalam mana-mana penyunting teks, berikut adalah contoh di bawah). Di carta sasaran, tekan Ctrl+J untuk menampal semua objek dari papan klip. Kenapa Ctrl+Q/Ctrl+J? Ini adalah dua kombinasi kekunci yang dipilih secara sukarela dari yang sangat sedikit. Ini kerana MetaTrader menyekat dan tidak meneruskan banyak kekunci pintas kepada program MQL. Khususnya, ini berlaku untuk Ctrl+C/Ctrl+V/Ctrl+Ins/Shift+Ins yang tidak berfungsi dalam konteks ini. Oleh kerana kod sumber tersedia, anda boleh menukar kekunci pintas kepada kombinasi lain. Kerana indikator ini menggunakan DLL sistem untuk mengakses papan klip Windows, anda perlu membenarkan import DLL dalam dialog Properties, pada tab Dependencies. Disebabkan oleh fakta bahawa Codebase tidak membenarkan import DLL, kod yang berkaitan dengan papan klip dibungkus dalam arahan pemproses pra bersyarat #ifdef DLL_LINK, jadi sila nyahkomentari baris #define DLL_LINK sebelum kompilasi. Jika tidak, anda akan melihat bagaimana fungsi papan klip akan menunjukkan amaran sebagai respons kepada penekanan kekunci, dan tiada tindakan sebenar akan dilakukan! Input adalah: MakeAllSelectable - bendera untuk menjadikan semua objek boleh dipilih (yang biasanya tidak benar untuk objek yang dibuat secara programatik); LogDetails - bendera untuk mengeluarkan semua sifat objek yang dipindahkan ke dalam log; Indikator ini tidak memeriksa jika objek yang ditampal sepadan dengan carta sasaran yang sebenar, seperti simbol, julat harga, bilangan subtingkap, dsb. - anda perlu melakukannya sendiri. Berikut adalah contoh teks papan klip dengan 2 objek: OBJ_VLINE       H1 Garis Menegak 5578   0       0 enum ENUM_OBJECT_PROPERTY_INTEGER 0       OBJPROP_COLOR   55295 1       OBJPROP_STYLE   2 2       OBJPROP_WIDTH   1 3       OBJPROP_BACK    0 4       OBJPROP_SELECTED        1 7       OBJPROP_TYPE    0 8       OBJPROP_TIME    1726739940 10       OBJPROP_SELECTABLE      1 11       OBJPROP_CREATETIME      1726847009 12       OBJPROP_TIMEFRAMES      2097151 200     OBJPROP_LEVELS  0 207     OBJPROP_ZORDER  0 208     OBJPROP_HIDDEN  0 1032    OBJPROP_RAY     1 enum ENUM_OBJECT_PROPERTY_DOUBLE 9       OBJPROP_PRICE   1.11449 enum ENUM_OBJECT_PROPERTY_STRING 5       OBJPROP_NAME    H1 Garis Menegak 5578 6       OBJPROP_TEXT     206     OBJPROP_TOOLTIP OBJ_CHANNEL     H1 Saluran Seimbang 40885    5       1 enum ENUM_OBJECT_PROPERTY_INTEGER 0       OBJPROP_COLOR   255 1       OBJPROP_STYLE   0 2       OBJPROP_WIDTH   1 3       OBJPROP_BACK    0 4       OBJPROP_SELECTED        1 7       OBJPROP_TYPE    5 8       OBJPROP_TIME    1726758000 8       OBJPROP_TIME.1  1726797600 8       OBJPROP_TIME.2  1726758000 10      OBJPROP_SELECTABLE      1 11      OBJPROP_CREATETIME      1726847883 12      OBJPROP_TIMEFRAMES      2097151 200     OBJPROP_LEVELS  0 207     OBJPROP_ZORDER  0 208     OBJPROP_HIDDEN  0 1003    OBJPROP_RAY_LEFT        0 1004    OBJPROP_RAY_RIGHT       0 1031    OBJPROP_FILL    0 enum ENUM_OBJECT_PROPERTY_DOUBLE 9       OBJPROP_PRICE   -28.113879003558715 9       OBJPROP_PRICE.1 -21.708185053380777 9       OBJPROP_PRICE.2 -48.04270462633452 enum ENUM_OBJECT_PROPERTY_STRING 5       OBJPROP_NAME    H1 Saluran Seimbang 40885 6       OBJPROP_TEXT     206     OBJPROP_TOOLTIP Dan berikut adalah objek-objek ini yang telah ditampal pada carta:

2024.09.21
Pertama Sebelumnya 4 5 6 7 8 9 10 11 12 13 14 Seterusnya Terakhir