Salah satu keuntungan dari bahasa MQL5 adalah kemampuannya untuk menggunakan indikator multi-mata uang dan Expert Advisors (EA). Untuk informasi lebih lanjut, Anda bisa merujuk pada handler acara tick Multicurrency OnTickMarketWatch di CodeBase MQL5.
Namun, penggunaan konsep yang diajukan dalam skrip ini kadang tidak nyaman. Misalnya, jika terdapat banyak acara, bisa terjadi overflow pada antrian acara.
Berikut adalah catatan dari Referensi MQL5:
Terminal klien menambahkan acara yang muncul ke dalam antrian acara. Jadi acara diproses satu per satu sesuai urutan penerimaannya. Ada pengecualian untuk acara NewTick. Jika antrian sudah memiliki acara tersebut atau acara ini sedang diproses, acara NewTick baru tidak akan dimasukkan ke dalam antrian.
Antrian acara memiliki ukuran yang terbatas. Pada saat overflow antrian, acara lama dihapus tanpa diproses untuk memungkinkan penerimaan acara baru. Oleh karena itu, disarankan untuk menulis handler acara yang efisien, dan tidak disarankan menggunakan loop tak terhingga (kecuali untuk skrip yang hanya menangani acara Start).
Selain itu, kadang-kadang perlu melakukan perhitungan ulang nilai indikator hanya ketika bar baru muncul. Dalam kasus lain, Anda mungkin perlu menonaktifkan trading "on the fly" pada simbol tertentu dalam EA multi-mata uang, mengubah timeframe beberapa simbol, atau hal lainnya.
"Hal lainnya" bisa berupa data eksternal. Panel Kontrol MCM (MultiCurrency Mode) didasarkan pada ide ini.
Oh ya, Panel ini juga dapat digunakan dalam trading satu mata uang.
Fitur Panel Kontrol MCM (versi kontes):
Panel ini memiliki fungsi minimum yang diperlukan untuk menggunakan mode multi-mata uang dalam EA dan indikator:
- Menambahkan/Menghapus simbol untuk trading dan analisis.
- Memungkinkan untuk melacak acara "new tick" dan "new bar" untuk simbol dan periode mana pun.
- Semua pengaturan dapat diubah "on the fly" tanpa perlu merestart EA atau indikator.
- Panel dapat digunakan dengan EA dan indikator kami.
- Juga dapat dimasukkan dalam kode Anda, dan akan dimuat bersamanya.
- Panel ini transparan. Anda tidak perlu menambahkan kode Panel Kontrol MCM ke EA atau indikator Anda.
Dengan menggunakan "Panel Kontrol MCM", Anda dapat menambahkan fitur Anda sendiri. Lihat detail di bawah ini.
Fitur simpan/pulihkan pengaturan Panel Kontrol tidak didukung dalam versi ini.
Peluncuran "Panel Kontrol MCM" dapat dilakukan dengan beberapa cara:
- Menempelkan indikator "iControl panel MCM" ke grafik.
- Menjalankan skrip "scControl panel MCM". Skrip ini memuat indikator "iControl panel MCM".
- Memuat Panel dari EA atau indikator Anda. Lihat "exControl panel MCM" untuk detail lebih lanjut.
Dalam kasus ketiga, Panel akan dimuat bersamaan dengan EA atau indikator kami dan terpasang pada grafik.
EA Anda harus memiliki handler acara OnChartEvent() untuk memproses acara dari Panel Kontrol MCM.
Antarmuka
Antarmuka pengguna sederhana, diimplementasikan sebagai menu. Ukuran dan warna menu dapat dikonfigurasi melalui parameter input.
Berikut tampilannya:

Desain
Panel ini digunakan untuk mengonfigurasi acara untuk EA dan indikator multi-mata uang.
Ukuran dan posisi Panel tergantung pada ukuran grafik dan ukuran font (ditentukan dalam parameter input). Untuk mengosongkan ruang kerja, Panel dapat diminimalkan.

Ukuran Panel dapat diubah dengan mengubah ukuran Font pada parameter input (ukuran Font=10 secara default):

Anda dapat mengatur warna sesuka hati.
Misalnya, skema warna Pink:

Skema EMO:

Penggunaan Mudah
Menu ini intuitif, mudah digunakan.
Tombol "Panel Kontrol MCM" mengandung fitur tambahan (tidak termasuk dalam versi ini):

Dengan menggunakan tombol "Grafik", Anda dapat dengan mudah mengganti simbol dan timeframe saat ini, cukup pilih:

"Events" memungkinkan Anda untuk mengaktifkan/mematikan acara "on the fly" (tanpa merestart EA atau indikator) untuk simbol tertentu dan menentukan event yang dibutuhkan. Acara ini dapat diproses di dalam fungsi OnChartEvent() dari EA atau indikator. Menu simbol hanya berisi simbol yang dipilih dari "Market Watch". Anda dapat menggabungkan acara apa pun, semua akan diproses.
Misalnya, tidak perlu khawatir tentang munculnya tick/bar baru untuk simbol pada timeframe, mesin Panel akan mengirimkan acara:

Berikut adalah "Bantuan":

Pengetahuan dan Implementasinya
Solusi saya dipublikasikan di handler acara tick Multicurrency OnTickMarketWatch, tetapi Panel ini memiliki beberapa fitur tambahan:
- "Panel Kontrol MCM" menyediakan antarmuka, yang tidak diimplementasikan langsung di terminal klien. Ini memungkinkan Anda untuk menggunakan mode multi-mata uang melalui handler acara OnChartEvent(). Fitur lainnya adalah kemungkinan mengubah pengaturan "on the fly".
- Untuk menghasilkan acara untuk handler acara OnChartEvent(), Panel Kontrol MCM menggunakan "agen" sendiri (indikator yang diluncurkan oleh Panel Kontrol MCM pada beberapa simbol), memberikan acara untuk trading multi-mata uang.
- Panel dapat disertakan dalam EA atau indikator.
- Panel Kontrol MCM memberikan kemungkinan baru bagi pengembang MQL5.
- IMHO, Panel ini adalah contoh struktur baru dari EA dan indikator. Saya akan memberikan beberapa contoh nanti.
Informasi tentang acara dan peringatan
Panel ini memiliki status bar untuk menunjukkan acara.
Instalasi Panel Kontrol MCM
Ekstrak file arsip mcm_control_panel.zip ke dalam folder terminal klien. Setelah itu, file-file berikut akan muncul:
- /mql5/experts/exControl panel MCM.mq5 - contoh Expert Advisor;
- /mql5/scripts/scControl panel MCM.mq5 - contoh Skrip;
- /mql5/indicators/iControl panel MCM.mq5 - indikator, mesin utama "Panel Kontrol MCM";
- /mql5/indicators/Spy Control panel MCM.mq5 - indikator, agen "Panel Kontrol MCM"
- /mql5/include/Control panel MCM.mqh - satu set kelas dan fungsi "Panel Kontrol MCM".
Selanjutnya, kompilasi Indikator, Skrip, dan Expert Advisor.
Peluncuran Panel Kontrol MCM
Peluncuran Panel Kontrol MCM dapat dilakukan dengan menempelkan indikator iControl panel MCM.mq5 ke grafik mana pun.
Panel dapat diluncurkan dari Expert Advisor, cukup tempelkan "exControl panel MCM" Expert Advisor ke grafik:

Sebagai contoh untuk multi-mata uang, saya menulis Expert Advisor MultiTrend. Indikator ini menggambarkan tren USD, berdasarkan analisis 4 pasangan mata uang:
Berikut adalah kodenya:
//+------------------------------------------------------------------+ //| MultiTrend.mq5 | //| Copyright 2010, Lizar | //| https://www.mql5.com/ru/users/Lizar | //+------------------------------------------------------------------+ #define VERSION "1.00 Build 2 (09 Dec 2010)" #property copyright "Copyright 2010, Lizar" #property link "https://www.mql5.com/ru/users/Lizar" #property version VERSION #property description "Expert Advisor ini menggunakan Panel Kontrol MCM" input color bg_color=Gray; // Warna menu input color font_color=Gainsboro; // Warna teks input color select_color=Yellow; // Warna teks terpilih input int font_size=10; // Ukuran font #include <Control panel MCM.mqh> //<--- Include file //+------------------------------------------------------------------+ //| Fungsi inisialisasi Expert | //+------------------------------------------------------------------+ int OnInit() { //--- Inisialisasi Panel Kontrol MCM. //--- Tidak perlu mengatur warna, jika tidak ditentukan, warna default akan digunakan. InitControlPanelMCM(bg_color,font_color,select_color,font_size); //--- return(0); } //+------------------------------------------------------------------+ //| Fungsi deinisialisasi Expert | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { DeinitControlPanelMCM(); //<--- Deinisialisasi Panel Kontrol MCM } //+------------------------------------------------------------------+ //| Handler acara OnChartEvent. | //| Lihat Referensi MQL5 untuk detail lebih lanjut. | //| Dapat digunakan dengan Panel Kontrol MCM untuk trading multi-mata uang | //+------------------------------------------------------------------+ void OnChartEvent(const int id, // pengenal acara: // jika id-CHARTEVENT_CUSTOM==0 - acara inisialisasi (ketika prev_calculated==0) const long& lparam, // timeframe const double& dparam, // harga const string& sparam // nama simbol ) { if(id>=CHARTEVENT_CUSTOM) { Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=", id-CHARTEVENT_CUSTOM, ": ",sparam," ",EventDescription(lparam)," harga=",dparam); } } //+------------------------------------------------------------------+
Parameter OnChartEvent().
Panel Kontrol menghasilkan acara khusus. Acara ini dapat diproses dalam Expert Advisor atau indikator menggunakan handler acara OnChartEvent().
Parameter input:
- id - id acara:
jika id-CHARTEVENT_CUSTOM !=0 - sama dengan indeks simbol di jendela "Market Watch"; - lparam - bendera acara. Lihat enumerasi ENUM_CHART_EVENT_SYMBOL dalam Control panel MCM.mqh.
- dparam - harga tick atau harga pembukaan bar baru pada beberapa timeframe.
- sparam - nama simbol
Daftar acara yang didukung di Panel Kontrol MCM
Dengan menggunakan parameter lparam, Panel Kontrol dapat mengirimkan hingga 64 acara khusus yang berbeda pada simbol. Dalam versi ini, acara yang didukung adalah:
- Acara "Inisialisasi" (Initialization);
- Acara "New tick" (tick);
- Acara "New bar" pada grafik M1 (M1);
- Acara "New bar" pada grafik M2 (M2);
- Acara "New bar" pada grafik M3 (M3);
- Acara "New bar" pada grafik M4 (M4);
- Acara "New bar" pada grafik M5 (M5);
- Acara "New bar" pada grafik M6 (M6);
- Acara "New bar" pada grafik M10 (M10);
- Acara "New bar" pada grafik M12 (M12);
- Acara "New bar" pada grafik M15 (M15);
- Acara "New bar" pada grafik M20 (M20);
- Acara "New bar" pada grafik M30 (M30);
- Acara "New bar" pada grafik H1 (H1);
- Acara "New bar" pada grafik H2 (H2);
- Acara "New bar" pada grafik H3 (H3);
- Acara "New bar" pada grafik H4 (H4);
- Acara "New bar" pada grafik H6 (H6);
- Acara "New bar" pada grafik H8 (H8);
- Acara "New bar" pada grafik H12 (H12);
- Acara "New bar" pada grafik harian D1);
- Acara "New bar" pada grafik mingguan (W1);
- Acara "New bar" pada grafik bulanan (MN1);
Deskripsi acara yang dikembalikan oleh EventDescription() disajikan dalam tanda kurung (Inisialisasi, tick, Mxx, dll). Fungsi EventDescription dapat ditemukan dalam Control panel MCM.mqh (mengikuti enumerasi ENUM_CHART_EVENT_SYMBOL).
Acara "Inisialisasi" dihasilkan ketika prev_calculated=0, dan dapat digunakan untuk mempersiapkan data, contohnya, Anda dapat menghitung ulang nilai indikator.
Pengaturan Acara
Untuk mengatur acara yang dibutuhkan, klik tombol "Events", pilih simbol dan jenis acara. Acara yang dipilih ditampilkan dalam warna kuning (atau warna yang dipilih dalam parameter input indikator). Anda dapat memilih satu atau lebih acara, semuanya dapat diproses oleh EA multi-mata uang kami. Untuk menerapkan perubahan, klik tombol "Enable/Disable events".
Proses yang sama dapat dilakukan untuk semua simbol yang diperlukan.

Berikut adalah log dari tab "Experts":

Postingan terkait
- RRS Impulse: EA Unggulan untuk Trading MetaTrader 4
- MQL5 Wizard: Menggunakan Sinyal Trading Berbasis Morning/Evening Stars dan RSI untuk MetaTrader 5
- MQL5 Wizard: Membuat EA dengan Sinyal Trading Berdasarkan Pola Morning/Evening Stars dan Stochastic
- MQL5 Wizard: Mengoptimalkan Sinyal Perdagangan dengan Morning/Evening Stars dan MFI
- MQL5 Wizard: Membuat Expert Advisor dengan Pola Candlestick 3 Black Crows/3 White Soldiers dan RSI