Penulis Asli:
EarnForex
Indikator BeginnerAlert ini sangat berguna untuk para trader, karena menunjukkan titik ekstrem trend (maksimum dan minimum) yang bisa dijadikan sebagai level support dan resistance. Dengan menggunakan indikator ini, kita bisa dengan mudah menentukan channel dari trend yang sedang berjalan. Selain itu, indikator ini dilengkapi dengan fitur notifikasi, yang akan mengirimkan email dan push-notifikasi ke perangkat mobile kita.
Indikator ini cukup sederhana, menggunakan periode tertentu untuk menemukan titik maksimum dan minimum, yang kemudian ditandai dengan titik-titik.
Berikut adalah beberapa perubahan yang dilakukan pada kode indikator untuk mengimplementasikan fitur notifikasi, pengiriman email, dan push-notifikasi:
- Menambahkan parameter input baru dalam kode indikator:
- Menambahkan tiga fungsi baru di akhir kode indikator: BuySignal(), SellSignal(), dan GetStringTimeframe():
- Menambahkan beberapa panggilan ke fungsi BuySignal() dan SellSignal() setelah siklus perhitungan indikator dalam blok OnCalculate():
input uint JumlahBar=1;//Jumlah bar untuk sinyal input bool SuaraAktif=true; //Aktifkan notifikasi suara input uint JumlahNotifikasi=2;//Jumlah notifikasi input bool EmailAktif=false; //Aktifkan pengiriman email input bool PushAktif=false; //Aktifkan pengiriman notifikasi ke perangkat mobile
//+------------------------------------------------------------------+ //| Fungsi sinyal beli | //+------------------------------------------------------------------+ void BuySignal(string NamaSinyal, // Nama indikator untuk email dan notifikasi double &BuyArrow[], // buffer indikator dengan sinyal beli const int TotalBar, // jumlah bar saat ini const int Prev_hitung, // jumlah bar pada tick sebelumnya const double &Close[], // harga penutupan const int &Spread[]) // spread { //--- static uint counter=0; if(TotalBar!=Prev_hitung) counter=0; bool BuySignal=false; bool SeriesTest=ArrayGetAsSeries(BuyArrow); int index; if(SeriesTest) index=int(JumlahBar); else index=TotalBar-int(JumlahBar)-1; if(NormalizeDouble(BuyArrow[index],_Digits) && BuyArrow[index]!=EMPTY_VALUE) BuySignal=true; if(BuySignal && counter<=JumlahNotifikasi) { counter++; MqlDateTime tm; TimeToStruct(TimeCurrent(),tm); string text=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min); SeriesTest=ArrayGetAsSeries(Close); if(SeriesTest) index=int(JumlahBar); else index=TotalBar-int(JumlahBar)-1; double Ask=Close[index]; double Bid=Close[index]; SeriesTest=ArrayGetAsSeries(Spread); if(SeriesTest) index=int(JumlahBar); else index=TotalBar-int(JumlahBar)-1; Bid+=Spread[index]; string sAsk=DoubleToString(Ask,_Digits); string sBid=DoubleToString(Bid,_Digits); string sPeriod=GetStringTimeframe(ChartPeriod()); if(SuaraAktif) Alert("Sinyal BUY \n Ask=",Ask,"\n Bid=",Bid,"\n waktu saat ini=",text,"\n Simbol=",Symbol()," Periode=",sPeriod); if(EmailAktif) SendMail(NamaSinyal+": Notifikasi sinyal BUY","Sinyal BUY di Ask="+sAsk+", Bid="+sBid+", Tanggal="+text+" Simbol="+Symbol()+" Periode="+sPeriod); if(PushAktif) SendNotification(NamaSinyal+": Sinyal BUY di Ask="+sAsk+", Bid="+sBid+", Tanggal="+text+" Simbol="+Symbol()+" Periode="+sPeriod); } //--- } //+------------------------------------------------------------------+ //| Fungsi sinyal jual | //+------------------------------------------------------------------+ void SellSignal(string NamaSinyal, // Nama indikator untuk email dan notifikasi double &SellArrow[], // buffer indikator dengan sinyal jual const int TotalBar, // jumlah bar saat ini const int Prev_hitung, // jumlah bar pada tick sebelumnya const double &Close[], // harga penutupan const int &Spread[]) // spread { //--- static uint counter=0; if(TotalBar!=Prev_hitung) counter=0; bool SellSignal=false; bool SeriesTest=ArrayGetAsSeries(SellArrow); int index; if(SeriesTest) index=int(JumlahBar); else index=TotalBar-int(JumlahBar)-1; if(NormalizeDouble(SellArrow[index],_Digits) && SellArrow[index]!=EMPTY_VALUE) SellSignal=true; if(SellSignal && counter<=JumlahNotifikasi) { counter++; MqlDateTime tm; TimeToStruct(TimeCurrent(),tm); string text=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min); SeriesTest=ArrayGetAsSeries(Close); if(SeriesTest) index=int(JumlahBar); else index=TotalBar-int(JumlahBar)-1; double Ask=Close[index]; double Bid=Close[index]; SeriesTest=ArrayGetAsSeries(Spread); if(SeriesTest) index=int(JumlahBar); else index=TotalBar-int(JumlahBar)-1; Bid+=Spread[index]; string sAsk=DoubleToString(Ask,_Digits); string sBid=DoubleToString(Bid,_Digits); string sPeriod=GetStringTimeframe(ChartPeriod()); if(SuaraAktif) Alert("Sinyal SELL \n Ask=",Ask,"\n Bid=",Bid,"\n waktu saat ini=",text,"\n Simbol=",Symbol()," Periode=",sPeriod); if(EmailAktif) SendMail(NamaSinyal+": Notifikasi sinyal SELL","Sinyal SELL di Ask="+sAsk+", Bid="+sBid+", Tanggal="+text+" Simbol="+Symbol()+" Periode="+sPeriod); if(PushAktif) SendNotification(NamaSinyal+": Sinyal SELL di Ask="+sAsk+", Bid="+sBid+", Tanggal="+text+" Simbol="+Symbol()+" Periode="+sPeriod); } //--- } //+------------------------------------------------------------------+ //| Mendapatkan timeframe dalam bentuk string | //+------------------------------------------------------------------+ string GetStringTimeframe(ENUM_TIMEFRAMES timeframe) { //---- return(StringSubstr(EnumToString(timeframe),7,-1)); //---- }
//--- BuySignal("BeginnerAlert",BuyBuffer,total_bar,prev_calculated,Close,spread); SellSignal("BeginnerAlert",SellBuffer,total_bar,prev_calculated,Close,spread); //---
Di mana BuyBuffer dan SellBuffer adalah nama buffer indikator untuk menyimpan sinyal beli dan jual. Karena nilai kosong dalam buffer indikator baik nol atau EMPTY_VALUE harus diatur.
Diperkirakan hanya satu panggilan ke fungsi BuySignal() dan SellSignal() yang akan digunakan dalam blok OnCalculate() dari kode indikator.
Awalnya, indikator ini ditulis dalam MQL4 dan pertama kali diterbitkan di Code Base pada 03.09.2008.

Gambar 1. Indikator BeginnerAlert di chart
Gambar 2. Indikator BeginnerAlert Menghasilkan notifikasi.
Postingan terkait
- Panduan Lengkap MetaCOT 2 CFTC ToolBox untuk Analisis COT di MT4
- Indikator Alerts pada New Bar untuk MetaTrader 4: Panduan Lengkap
- Indikator Open Range Breakout untuk MetaTrader 5: Strategi Trading yang Efektif
- Master Tools: Alat Indikator untuk MetaTrader 4 yang Harus Dimiliki
- Volume Profile + Range v6.0: Indikator Penting untuk MetaTrader 5
