MetaTrader4
Mendeteksi Awal Bar atau Lilin Baru di MetaTrader 4
Bagi Anda yang menggunakan Expert Advisor (EA), saat ada kutipan tick baru yang masuk, terminal MetaTrader akan memanggil fungsi penanganan event default OnTick(). Namun, sayangnya, tidak ada fungsi penanganan event default untuk mendeteksi saat bar (lilin) baru mulai atau dibuka.Untuk mendeteksi ini, Anda perlu memantau waktu pembukaan dari bar terbaru yang ada. Ketika waktu ini berubah, itu menandakan bahwa bar baru telah dimulai, dan Anda bisa mengambil tindakan sesuai dengan itu. Berikut adalah contoh kode yang kompatibel dengan MQL4 dan MQL5 yang menunjukkan cara untuk melakukannya:// Penanganan event tick default
void OnTick()
{
// Cek apakah ada bar baru (kompatibel dengan MQL4 dan MQL5).
static datetime dtBarCurrent = WRONG_VALUE;
datetime dtBarPrevious = dtBarCurrent;
dtBarCurrent = iTime( _Symbol, _Period, 0 );
bool bNewBarEvent = ( dtBarCurrent != dtBarPrevious );
// Tanggapi event bar baru dan tangani sesuai.
if( bNewBarEvent )
{
// Deteksi apakah ini adalah tick pertama yang diterima dan tangani.
/* Misalnya, ketika pertama kali ditempelkan pada chart dan
bar berada di tengah-tengah progresnya dan
sebenarnya ini bukan merupakan awal dari bar baru. */
if( dtBarPrevious == WRONG_VALUE )
{
// Lakukan sesuatu pada tick pertama atau di tengah bar ...
}
else
{
// Lakukan sesuatu ketika bar normal dimulai ...
};
// Lakukan sesuatu terlepas dari kondisi di atas ...
}
else
{
// Lakukan sesuatu yang lain ...
};
// Lakukan hal lain ...
};Dalam kode di atas, variabel statis digunakan untuk menyimpan waktu pembukaan bar, bahkan saat kembali dari fungsi OnTick(). Berbeda dengan variabel lokal biasa, variabel statis ini mengingat konten datanya dan tidak akan dilepaskan saat keluar dari fungsi. Ini adalah kunci untuk mendeteksi perubahan waktu pembukaan dari bar saat ini.Penting juga untuk dicatat bahwa ketika EA pertama kali diletakkan di chart, kode di atas akan bereaksi seolah-olah bar baru telah dibuka. Kondisi ini memerlukan penanganan khusus jika situasi perlu ditangani dengan cara yang berbeda.Perlu diingat, semua kode sumber dari publikasi CodeBase saya kini juga tersedia di tab "Proyek Publik" di MetaEditor dengan nama "FMIC".
2022.04.24