Tester Strategi MetaTrader 5 memungkinkan kita untuk mendapatkan parameter statistik dari sistem trading setelah setiap proses pengujian.
Parameter statistik dapat diperoleh menggunakan fungsi TesterStatistics(), yang dipanggil di dalam fungsi OnTester() dan OnDeinit().
Dengan diperkenalkannya fungsi-fungsi untuk bekerja dengan hasil optimasi (FrameFirst(), FrameFilter(), FrameNext(), FrameInputs(), dan FrameAdd()), trader kini dapat melakukan optimasi visual. Data yang diperlukan kini dapat diproses dan ditampilkan langsung selama optimasi Expert Advisor atau pemecahan masalah matematis.
Kita akan membahas detail contoh visualisasi hasil pengujian Expert Advisor selama optimasi yang dijelaskan dalam artikel "Visualisasi Strategi di Tester MetaTrader 5".
1. Visualisasi Dinamika Saldo Selama Optimasi
1.1. Mengunduh Berkas
Expert Advisor Moving Averages_With_Frames.mq5 harus disalin ke terminal_data_folder\MQL5\Experts.
Berkas-berkas berikut digunakan untuk operasi Expert Advisor:
- FrameGenerator.mqh - Kelas CFrameGenerator untuk menampilkan hasil optimasi;
- SpecialChart.mqh - Kelas CSpecialChart untuk menggambar beberapa grafik saldo;
- SimpleTable.mqh - Kelas CSimpleTable adalah tabel sederhana yang memiliki dua kolom;
- ColorProgressBar.mqh - Kelas CColorProgressBar adalah bar progres dengan dua warna.
Semua berkas tersebut harus disalin ke terminal_data_folder\MQL5\Include.
Program dari Code Base dapat diunduh secara otomatis melalui terminal MetaTrader 5 (tab CodeBase di jendela "Toolbox"). Untuk melakukannya, pilih "Download". Semua kode akan diunduh dan ditempatkan di foldernya masing-masing.

Gambar 1. Mengunduh program CodeBase melalui terminal MetaTrader 5
1.2. Menguji Expert Advisor
Expert Advisor Moving Averages_With_Frames.mq5 harus diluncurkan di Tester Strategi.
Pengaturan tes:

Gambar 2. Pengaturan tes Moving Averages_With_Frames.mq5
Opsi optimasi:

Gambar 3. Parameter optimasi Moving Averages_With_Frames.mq5
Selama optimasi, Expert Advisor menampilkan dinamika saldo dan data statistik dari proses optimasi:

Gambar 4. Optimasi Moving Averages_With_Frames.mq5
Proses optimasi:
1.3. Prinsip Operasi Expert Advisor
Expert Advisor Moving Averages_With_Frames.mq5 dibuat berdasarkan Moving Averages.mq5 yang termasuk dalam paket standar terminal MetaTrader 5 (MQL5\Experts\Examples\Moving Average).
Kode berikut telah ditambahkan untuk visualisasi hasil:
//--- menghubungkan kode untuk bekerja dengan hasil optimasi #include <FrameGenerator.mqh> //--- generator frame CFrameGenerator fg; //+------------------------------------------------------------------+ //| Fungsi Tester | //+------------------------------------------------------------------+ double OnTester() { //--- masukkan fungsi perhitungan kriteria optimasi anda di sini double TesterCritetia=MathAbs(TesterStatistics(STAT_SHARPE_RATIO)*TesterStatistics(STAT_PROFIT)); TesterCritetia=TesterStatistics(STAT_PROFIT)>0?TesterCritetia:(-TesterCritetia); //--- memanggil setelah setiap tes dan mengirimkan kriteria optimasi sebagai parameter fg.OnTester(TesterCritetia); //--- return(TesterCritetia); } //+------------------------------------------------------------------+ //| Fungsi TesterInit | //+------------------------------------------------------------------+ void OnTesterInit() { //--- mempersiapkan grafik untuk menampilkan beberapa garis saldo fg.OnTesterInit(3); // parameter mengatur jumlah garis saldo pada grafik } //+------------------------------------------------------------------+ //| Fungsi TesterPass | //+------------------------------------------------------------------+ void OnTesterPass() { //--- menangani hasil tes yang diperoleh dan menampilkan grafik fg.OnTesterPass(); } //+------------------------------------------------------------------+ //| Fungsi TesterDeinit | //+------------------------------------------------------------------+ void OnTesterDeinit() { //--- akhir optimasi fg.OnTesterDeinit(); } //+------------------------------------------------------------------+ //| Penanganan peristiwa Grafik | //+------------------------------------------------------------------+ void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) { //--- meluncurkan tampilan frame setelah akhir optimasi ketika mengklik pada header fg.OnChartEvent(id,lparam,dparam,sparam,100); // 100 adalah jeda dalam ms antara gambar } //+------------------------------------------------------------------+
kode ini dapat digunakan dengan cara yang sama di Expert Advisor mana pun.
Kelas CFrameGenerator digunakan untuk bekerja dengan hasil optimasi. Kelas ini berisi metode untuk menangani peristiwa Tester Strategi (OnTester(), OnTesterInit(), OnTesterPass(), OnTesterDeinit()) dan metode untuk peristiwa grafik (OnChartEvent()). Objek grafik yang digunakan dipersiapkan dalam metode OnTesterInit() dari kelas CFrameGenerator.
Metode OnTester() dari kelas CFrameGenerator dipanggil pada agen tes setelah setiap proses tes. Metode ini menyediakan perhitungan dinamika kurva saldo berdasarkan hasil trading. Grafik kurva saldo adalah array satu dimensi, yang panjangnya tergantung pada jumlah transaksi yang dilakukan.
Kemudian, fungsi TesterStatistics() digunakan untuk meminta data statistik (laba bersih, faktor laba, faktor pemulihan, jumlah perdagangan, jumlah transaksi, persentase drawdown maksimum, dan nilai kriteria optimasi khusus) dan sebuah frame (array data proses tes, dalam kasus ini) dihasilkan, yang dikirim ke terminal (dari agen tes) menggunakan fungsi FrameAdd().
Frame diterima dan ditangani dalam metode OnTesterPass() dari kelas CFrameGenerator. Operasi pembacaan frame dilakukan oleh fungsi FrameNext(). Permintaan untuk parameter input Expert Advisor, untuk mana frame telah dihasilkan, dilakukan menggunakan fungsi FrameInputs().
Setelah memperoleh data, data tersebut ditampilkan dan diperbarui menggunakan metode kelas CSimpleTable, CColorProgressBar, dan CSpecialChart.
Perlu dicatat bahwa eksekusi fungsi penanganan OnTester() dilakukan pada agen tes setelah proses optimasi saat ini selesai. Ini memungkinkan penggunaan kapasitas jaringan terdistribusi MQL5 Cloud Network untuk melakukan perhitungan matematis yang kompleks. Untuk melakukannya, letakkan bagian perhitungan ke dalam penangan acara OnTester.
Contoh penggunaan optimasi untuk mempercepat perhitungan matematis (transformasi wavelet kontinu dari fungsi Weierstrass) ditunjukkan dalam topik "Mengelola proses optimasi secara real-time dan mentransfer data besar dari agen ke MetaTrader 5".
2. Contoh Penggunaan Kelas CSimpleTable, CColorProgressBar, dan CSpecialChart
Skrip Test_SimpleTable.mq5 dan Test_CSpecialChart.mq5 yang terlampir mengandung contoh penggunaan kelas CSimpleTable, CColorProgressBar, dan CSpecialChart. Skrip ini harus disalin ke terminal_data_folder\MQL5\Scripts.

Gambar 5. Hasil operasi skrip Test_SimpleTable.mq5

Gambar 6. Hasil operasi skrip Test_CSpecialChart.mq5
Postingan terkait
- MQL5 Wizard: Membuat EA dengan Sinyal Trading Berdasarkan Pola Morning/Evening Stars dan Stochastic
- RRS Impulse: EA Unggulan untuk Trading MetaTrader 4
- MQL5 Wizard: Mengoptimalkan Sinyal Perdagangan dengan Morning/Evening Stars dan MFI
- MQL5 Wizard: Membuat EA dengan Sinyal Trading Hammer/Hanging Man dan MFI
- MQL5 Wizard: Menggunakan Sinyal Trading Berbasis Morning/Evening Stars dan RSI untuk MetaTrader 5