Menggunakan Event Handler 'New Bar' untuk Indikator di MetaTrader 5

Mike 2011.01.21 00:22 28 0 0
Lampiran

Dalam dunia trading, penting untuk memiliki alat yang efektif guna mempermudah analisis. Salah satu cara yang menarik adalah dengan menggunakan event handler bernama "New Bar". Konsep dasar dari pendekatan ini sudah dijelaskan dalam artikel tersebut. Di sini, kita akan membahas bagaimana cara menerapkannya dalam indikator dan mengoptimalkan perhitungan hanya saat bar baru muncul. Ini adalah alternatif yang lebih nyaman dibandingkan dengan penggunaan langsung dari fungsi OnCalculate().

Berikut adalah contoh sederhana dari sebuah indikator yang akan mencetak garis ketika bar baru muncul:

//+------------------------------------------------------------------+//|                                            OnNewBarCalculate.mq5 |//|                                            Copyright 2010, Lizar |//|                                                    Lizar@mail.ru |//+------------------------------------------------------------------+#property copyright "Copyright 2010, Lizar"#property link      "Lizar@mail.ru"#property version   "1.00"#property indicator_chart_window#include <OnNewBarCalculate.mqh> // ini adalah rahasia untuk memanggil fungsi OnNewBarCalculate()//+------------------------------------------------------------------+//| Event handler untuk bar baru pada indikator                          |//+------------------------------------------------------------------+int OnNewBarCalculate(constint rates_total,
                constint prev_calculated,
                constdatetime& time[],
                constdouble& open[],
                constdouble& high[],
                constdouble& low[],
                constdouble& close[],
                constlong& tick_volume[],
                constlong& volume[],
                constint& spread[]) {
   //--- di sini Anda dapat menulis kode, mirip dengan OnCalculate();
   //--- tetapi fungsi ini hanya akan dipanggil jika bar baru muncul (bukan setiap tick)

   PrintFormat("Bar baru: %s",TimeToString(TimeCurrent(),TIME_SECONDS));
   //--- nilai kembali dari prev_calculated untuk panggilan berikutnya
   return(rates_total);
}
Daftar
Komentar 0