Mendeteksi Awal Bar Baru di MetaTrader 5 dengan EA

Mike 2025.04.03 20:16 17 0 0
Lampiran

Dalam dunia trading, salah satu tantangan yang dihadapi trader adalah mendeteksi kapan sebuah bar atau candle baru dimulai. Untuk membantu kita dalam hal ini, kita bisa memanfaatkan Expert Advisor (EA) yang kita buat sendiri di MetaTrader 5.

Ketika MetaTrader menerima kutipan baru (disebut "tick"), fungsi penanganan acara OnTick() secara otomatis akan dipanggil. Namun, tidak ada fungsi penanganan acara standar untuk mendeteksi saat bar baru dimulai.

Untuk mendeteksi ini, kita perlu memantau waktu pembukaan dari bar terbaru. Ketika waktu ini berubah, itu menandakan bahwa bar baru telah dimulai, dan kita bisa merespons dan menangani situasi tersebut. Berikut adalah contoh kode yang bisa digunakan, kompatibel dengan baik antara MQL4 dan MQL5:

// Penanganan acara tick standar
   void OnTick()
   {
      // Cek untuk bar baru (kompatibel dengan MQL4 dan MQL5).
         static datetime dtBarraCorrente   = WRONG_VALUE;
                datetime dtBarraPrecedente = dtBarraCorrente;
                         dtBarraCorrente   = iTime( _Symbol, _Period, 0 );
                bool     bEventoBarraNova  = ( dtBarraCorrente != dtBarraPrecedente );

      // Tanggapi peristiwa bar baru dan tangani situasi tersebut.
         if( bEventoBarraNova )
         {
            // Deteksi apakah ini tick pertama yang diterima dan tangani situasinya.
               /* Misalnya, ketika pertama kali diterapkan ke grafik dan
 bar berada di tengah prosesnya dan
 sebenarnya bukan awal dari bar baru. */
               if( dtBarraPrecedente == WRONG_VALUE )
               {
                  // Lakukan sesuatu pada tick pertama atau di tengah bar ...
               }
               else
               {
                  // Lakukan sesuatu ketika bar normal muncul ...
               };

            // Lakukan sesuatu yang independen dari kondisi sebelumnya ...
         }
         else
         {
            // Lakukan sesuatu yang lain ...
         };

      // Lakukan hal lain ...
   };

Pada kode di atas, variabel static menyimpan waktu pembukaan bar, bahkan ketika kita kembali dari fungsi OnTick(). Berbeda dengan variabel lokal biasa, variabel ini mengingat konten datanya dan tidak dilepaskan saat keluar dari fungsi. Ini adalah kunci untuk mendeteksi perubahan waktu pembukaan bar saat ini.

Perlu dicatat juga bahwa ketika EA pertama kali diletakkan di grafik, kode sebelumnya akan bereaksi seolah-olah bar baru saja dibuka. Kondisi ini memerlukan penanganan khusus jika situasinya perlu ditangani secara berbeda.

Jangan lupa, kode sumber untuk semua publikasi CodeBase saya sekarang juga tersedia melalui MetaEditor dalam proyek publik dengan nama "FMIC".

Daftar
Komentar 0