Laman utama Perdagangan Sistem Siaran

Kod Mudah untuk Mengesan Bar atau Lilin Baru di MetaTrader 5

Lampiran
49018.zip (977 bytes, Muat turun 3 kali)

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                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- buat timer
   EventSetTimer(60);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Fungsi deinisialisasi pakar                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- hancurkan timer
   EventKillTimer();

  }

//+------------------------------------------------------------------+
//| Fungsi tick pakar                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   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                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---

  }
//+------------------------------------------------------------------+
//| Fungsi perdagangan                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//---

  }
//+------------------------------------------------------------------+
//| Fungsi ChartEvent                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---

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

 

Siaran berkaitan

Komen (0)