Laman utama Perdagangan Sistem Siaran

Visualisasi Hasil Pengoptimuman dalam Masa Nyata - EA untuk MetaTrader 5

Lampiran
914.zip (13.48 KB, Muat turun 0 kali)

Penguji Strategi MetaTrader 5 membolehkan kita mendapatkan parameter statistik bagi sistem perdagangan selepas setiap ujian dilakukan.

Parameter statistik ini boleh diperoleh dengan menggunakan TesterStatistics(), yang dipanggil dalam fungsi OnTester() dan OnDeinit().

Dengan pengenalan fungsi untuk bekerja dengan hasil pengoptimuman seperti FrameFirst(), FrameFilter(), FrameNext(), FrameInputs(), dan FrameAdd(), kini para pedagang dapat melakukan pengoptimuman secara visual. Data yang diperlukan kini boleh diproses dan dipaparkan semasa pengoptimuman EA atau penyelesaian masalah matematik.

Kita akan mempertimbangkan butiran mengenai contoh visualisasi hasil ujian EA semasa pengoptimuman yang diterangkan dalam artikel "Visualize a Strategy in the MetaTrader 5 Tester".


1. Visualisasi Dinamik Keseimbangan Semasa Pengoptimuman

1.1. Memuat Turun Fail

EA Moving Averages_With_Frames.mq5 perlu disalin ke dalam folder terminal_data_folder\MQL5\Experts.

Fail-fail berikut digunakan untuk operasi EA:

  • FrameGenerator.mqh - Kelas CFrameGenerator untuk memaparkan hasil pengoptimuman;
  • SpecialChart.mqh - Kelas CSpecialChart untuk melukis beberapa carta keseimbangan;
  • SimpleTable.mqh - Kelas CSimpleTable adalah jadual ringkas dengan dua lajur;
  • ColorProgressBar.mqh - Kelas CColorProgressBar adalah bar kemajuan menggunakan dua warna.

Semua fail ini perlu disalin ke dalam folder terminal_data_folder\MQL5\Include.

Program Code Base boleh dimuat turun secara automatik melalui terminal MetaTrader 5 (tab CodeBase di dalam tetingkap "Toolbox"). Untuk melakukan ini, pilih "Muat Turun". Semua kod akan dimuat turun dan diletakkan dalam folder masing-masing.

Fig. 1. Memuat Turun Program CodeBase melalui terminal MetaTrader 5

Fig. 1. Memuat Turun Program CodeBase melalui terminal MetaTrader 5


1.2. Menguji EA

EA Moving Averages_With_Frames.mq5 perlu dilancarkan dalam Penguji Strategi.

Seting ujian:

Seting ujian Moving Averages_With_Frames.mq5

Fig. 2. Seting ujian Moving Averages_With_Frames.mq5

Pilihan pengoptimuman:

Parameter pengoptimuman Moving Averages_With_Frames.mq5

Fig. 3. Parameter pengoptimuman Moving Averages_With_Frames.mq5


Semasa pengoptimuman, EA memaparkan dinamik keseimbangan dan data statistik laluan pengoptimuman:

Fig. 4. Pengoptimuman Moving Averages_With_Frames.mq5

Fig. 4. Pengoptimuman Moving Averages_With_Frames.mq5

Proses pengoptimuman:




1.3. Prinsip Operasi EA

EA Moving Averages_With_Frames.mq5 dibangunkan berdasarkan Moving Averages.mq5 yang terdapat dalam pakej terminal MetaTrader 5 standard (MQL5\Experts\Examples\Moving Average).

Kod berikut telah ditambah untuk visualisasi hasil:

//--- menghubungkan kod untuk bekerja dengan hasil pengoptimuman
#include <FrameGenerator.mqh>
//--- penjana bingkai
CFrameGenerator fg;
//+------------------------------------------------------------------+
//| Fungsi Tester                                                  |
//+------------------------------------------------------------------+
double OnTester()
  {
//--- masukkan fungsi pengiraan kriteria pengoptimuman anda di sini
   double TesterCritetia=MathAbs(TesterStatistics(STAT_SHARPE_RATIO)*TesterStatistics(STAT_PROFIT));
   TesterCritetia=TesterStatistics(STAT_PROFIT)>0?TesterCritetia:(-TesterCritetia);
//--- memanggil selepas setiap ujian dan menyerahkan kriteria pengoptimuman sebagai parameter
   fg.OnTester(TesterCritetia);
//---
   return(TesterCritetia);
  }
//+------------------------------------------------------------------+
//| Fungsi TesterInit                                              |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
//--- menyediakan carta untuk memaparkan beberapa garis keseimbangan
   fg.OnTesterInit(3); // parameter menetapkan bilangan garis keseimbangan pada carta
  }
//+------------------------------------------------------------------+
//| Fungsi TesterPass                                              |
//+------------------------------------------------------------------+
void OnTesterPass()
  {
//--- mengendalikan hasil ujian yang diperoleh dan memaparkan grafik
   fg.OnTesterPass();
  }
//+------------------------------------------------------------------+
//| Fungsi TesterDeinit                                            |
//+------------------------------------------------------------------+
void OnTesterDeinit()
  {
//--- akhir pengoptimuman
   fg.OnTesterDeinit();
  }
//+------------------------------------------------------------------+
//|  Pengendalian acara Carta                                           |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
//--- melancarkan paparan bingkai selepas akhir pengoptimuman apabila mengklik pada tajuk
   fg.OnChartEvent(id,lparam,dparam,sparam,100); // 100 adalah jeda dalam ms antara tangkapan
  }
//+------------------------------------------------------------------+

Kod ini boleh digunakan dengan cara yang sama dalam mana-mana EA.

Kelas CFrameGenerator digunakan untuk bekerja dengan hasil pengoptimuman. Kelas ini mengandungi kaedah untuk mengendalikan acara Penguji Strategi (OnTester(), OnTesterInit(), OnTesterPass(), OnTesterDeinit()) dan kaedah untuk acara carta (OnChartEvent()). Objek grafik yang digunakan disediakan dalam kaedah OnTesterInit() kelas CFrameGenerator.

Kaedah OnTester() kelas CFrameGenerator dipanggil pada ejen ujian selepas setiap laluan ujian. Kaedah ini menyediakan pengiraan dinamik lengkung keseimbangan berdasarkan hasil perdagangan. Carta lengkung keseimbangan adalah satu array satu dimensi, yang panjangnya bergantung kepada bilangan transaksi yang dilakukan.

Seterusnya, fungsi TesterStatistics() digunakan untuk meminta data statistik (keuntungan bersih, faktor keuntungan, faktor pemulihan, bilangan perdagangan, bilangan transaksi, peratusan pengurangan maksimum, nilai kriteria pengoptimuman khusus) dan bingkai (array data laluan ujian, dalam kes kita) dihasilkan, yang dihantar ke terminal (dari ejen ujian) menggunakan fungsi FrameAdd().

Bingkai diterima dan dikendalikan dalam kaedah OnTesterPass() kelas CFrameGenerator. Operasi membaca bingkai dilakukan oleh fungsi FrameNext(). Permintaan untuk parameter input EA, untuk mana bingkai dihasilkan, dilakukan menggunakan fungsi FrameInputs().

Selepas memperoleh data, ia dipaparkan dan dikemas kini menggunakan kaedah kelas CSimpleTable, CColorProgressBar dan CSpecialChart.

Perlu diingat bahawa pelaksanaan fungsi pengendalian OnTester() dilakukan pada ejen ujian selepas laluan pengoptimuman semasa selesai. Ini membolehkan penggunaan kapasiti rangkaian teragih MQL5 Cloud Network untuk melakukan pengiraan matematik yang kompleks. Untuk ini, letakkan bahagian pengiraan ke dalam pengendali acara OnTester.

Contoh penggunaan pengoptimuman untuk mempercepat pengiraan matematik (transformasi gelombang berterusan bagi fungsi Weierstrass) ditunjukkan dalam topik "Mengurus proses pengoptimuman dalam masa nyata dan memindahkan data besar dari ejen ke MetaTrader 5".


2. Contoh Bekerja dengan Kelas CSimpleTable, CColorProgressBar dan CSpecialChart

Skrip Test_SimpleTable.mq5 dan Test_CSpecialChart.mq5 yang dilampirkan mengandungi contoh bekerja dengan kelas CSimpleTable, CColorProgressBar dan CSpecialChart. Skrip ini perlu disalin ke dalam folder terminal_data_folder\MQL5\Scripts.

Fig. 5. Hasil operasi skrip Test_SimpleTable.mq5

Fig. 5. Hasil operasi skrip Test_SimpleTable.mq5

Fig. 6. Hasil operasi skrip Test_CSpecialChart.mq5

Fig. 6. Hasil operasi skrip Test_CSpecialChart.mq5


Siaran berkaitan

Komen (0)