Kod Mudah untuk Mengesan Bar atau Lilin Baru di MetaTrader 5

Mike 2024.04.05 04:19 34 0 0
Lampiran

Dalam artikel kali ini, kita akan membincangkan satu kod yang sangat berguna untuk mengesan sama ada terdapat Bar Baru atau Lilin Baru dalam platform MetaTrader 5.

Asas kepada kod ini adalah sangat mudah. Pertama, kod ini menyimpan Waktu Bar/Lilin Sebelumnya. Kemudian, ia menambah 60 saat (yang bersamaan dengan 1 minit; anda juga boleh mengubahnya mengikut keperluan) kepada Waktu Bar sebelumnya untuk mendapatkan nilai waktu tutup Bar/Lilin Semasa.

Apabila Waktu Semasa = nilai waktu tutup Bar/Lilin Semasa, ini bermakna satu bar baru telah diterima atau bar semasa telah ditutup.

Dalam kod ini, terdapat satu flag (variabel jenis bool 'NewBarReceived') yang mengelakkan pemanggilan berulang kod ini. Ini bermakna kod ini akan dilaksanakan hanya sekali untuk setiap bar/lilin. Fungsi Comment(); dan playsound("ok.wav"); digunakan untuk memeriksa ketepatan kod ini. Anda boleh membuangnya jika tidak diperlukan.

Flag ini akan diset semula kepada false apabila waktu semasa melebihi waktu tutup bar semasa untuk memeriksa kedatangan bar seterusnya. (Lihat komen untuk maklumat lanjut).

//+------------------------------------------------------------------+//|                                                    New Bar Detect.mq5 |//|                                                    by H A T Lakmal |//|                                           https://t.me/Lakmal846 |//+------------------------------------------------------------------+bool NewBarReceived = false; // Flag untuk kawalan.//+------------------------------------------------------------------+//| Fungsi inisialisasi pakar                                   |//+------------------------------------------------------------------+intOnInit()
  {
//--- buat timer
   EventSetTimer(60);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+//| Fungsi deinisialisasi pakar                                 |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
  {
//--- hancurkan timer
   EventKillTimer();

  }

//+------------------------------------------------------------------+//| Fungsi tick pakar                                             |//+------------------------------------------------------------------+voidOnTick()
  {
   datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1);
   datetime TimeCurrentClose = TimePreviousBar + 60; // Waktu Tutup bar semasa.
   datetime Time_Current = TimeCurrent();

   if(Time_Current == TimeCurrentClose && NewBarReceived == false)
     {
      PlaySound("ok.wav");   // Untuk memeriksa jika berfungsi.
      NewBarReceived = true; // Kemas kini flag untuk elakkan pemanggilan berulang.

      // Kod anda di sini ----- (Lakukan Sesuatu)

     }
   else
      if(Time_Current > TimeCurrentClose)
        {
         NewBarReceived = false; // Reset flag untuk bar seterusnya.

         // Kod anda di sini ----- (Lakukan Sesuatu)

        }

   Comment("\n" +  "\n" +  "Waktu Bar Semasa -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +
           "\n" + "Waktu Tutup Semasa -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +
           "\n" + "Waktu Semasa -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +
           "\n" +"\n" + "Bar Baru Diterima -: " + NewBarReceived); 
           // Untuk memeriksa pengiraan

  }
//+------------------------------------------------------------------+//| Fungsi timer                                                   |//+------------------------------------------------------------------+voidOnTimer()
  {
//---

  }
//+------------------------------------------------------------------+//| Fungsi perdagangan                                                   |//+------------------------------------------------------------------+voidOnTrade()
  {
//---

  }
//+------------------------------------------------------------------+//| Fungsi ChartEvent                                              |//+------------------------------------------------------------------+voidOnChartEvent(constint id,
                  constlong &lparam,
                  constdouble &dparam,
                  conststring &sparam)
  {
//---

  }
//+------------------------------------------------------------------+

 

Senarai
Komen 0