Halo para trader! Kali ini kita akan membahas tentang Indikator Level yang bisa digunakan di MetaTrader 5. Indikator ini sangat berguna untuk membantu kita menerima sinyal trading yang lebih akurat.
Ketika level trigLv yang telah ditentukan dalam pengaturan terlampaui dalam batas deviation, indikator ini akan mengirimkan notifikasi push ke perangkat mobile kita jika parameter input notification diaktifkan. Selain itu, indikator ini juga akan memutar suara alert jika parameter alert diaktifkan. Level trigger trigLv dan batas deviation ditandai dengan garis horizontal, yang gaya, warna, dan ketebalannya bisa disesuaikan dalam pengaturan indikator. Desain ini memungkinkan kita untuk menambahkan beberapa salinan indikator dengan level yang berbeda pada grafik dan menerima sinyal ketika level tersebut terinterseksi.
Perlu diingat, level trigLv hanya akan berfungsi sekali dalam satu bar. Pengaktifan kembali hanya mungkin setelah bar berikutnya dibuka. Dengan cara ini, kita bisa menghindari terlalu banyak sinyal yang muncul pada setiap tick.

//+------------------------------------------------------------------+ //| Level Indicator.mq5 | //| Copyright 2022, © Cyberdev | //| https://www.mql5.com/en/users/cyberdev/seller | //+------------------------------------------------------------------+ #property copyright "Copyright 2022, © Cyberdev" #property link "https://www.mql5.com/en/users/cyberdev/seller" #property version "1.00" #property indicator_chart_window #property indicator_plots 0 #include <ChartObjects\ChartObjectsLines.mqh> input bool alert = true; // aktifkan alert input bool notification = true; // aktifkan notifikasi push input double trigLv = 0.0; // level aktivasi input int deviation = 30; // deviasi dari trigLv dalam poin input int lineWidth = 1; // ketebalan garis input ENUM_LINE_STYLE lineStyle = STYLE_SOLID; // gaya garis input color lineColor = clrMediumSpringGreen; // warna garis input color inactivityColor = clrLightGray; // warna tidak aktif CChartObjectHLine lv, dvH, dvL; bool equal(double _v1, double _v2, double _epsilon) { return fabs(_v1 - _v2) <= fabs(_epsilon); } //+------------------------------------------------------------------+ //| Fungsi inisialisasi indikator kustom | //+------------------------------------------------------------------+ int OnInit() { string name; double dv; color color_; name = "alert.lv-"; dv = deviation * SymbolInfoDouble(NULL, SYMBOL_POINT); color_ = (alert || notification) ? lineColor : inactivityColor; for (int n = 0; n <= INT_MAX && !IsStopped(); n++) { if (ObjectFind(0, name + (string)n) != 0) { if (!lv.Create(0, name + (string)n, 0, trigLv)) return INIT_FAILED; lv.Width(lineWidth); lv.Style(lineStyle); lv.Color(color_); dvH.Create(0, "alert.dvH-" + (string)n, 0, trigLv + dv); dvH.Width(1); dvH.Style(STYLE_DOT); dvH.Color(color_); dvL.Create(0, "alert.dvL-" + (string)n, 0, trigLv - dv); dvL.Width(1); dvL.Style(STYLE_DOT); dvL.Color(color_); break; } } if (!alert && !notification) Print("Level Indicator. Level ", lv.Price(0), " tidak aktif!"); if (trigLv == 0.0) Alert("Level Indicator. Atur parameter \"trigLv\" ke nilai yang diinginkan!"); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { //lv.Delete(); //dvH.Delete(); //dvL.Delete(); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[] ) { static bool triggered = false; static datetime time_ = 0; if (!alert && !notification) return rates_total; if (equal(lv.Price(0), close[rates_total - 1], deviation * SymbolInfoDouble(NULL, SYMBOL_POINT))) { if (time_ != time[rates_total - 1]) time_ = time[rates_total - 1]; else return rates_total; if (!triggered) { if (alert) Alert("Level Indicator. Level ", NormalizeDouble(lv.Price(0), (int)SymbolInfoInteger(NULL, SYMBOL_DIGITS)), " terpicu!"); if (notification) SendNotification("Level Indicator. Level " + (string)NormalizeDouble(lv.Price(0), (int)SymbolInfoInteger(NULL, SYMBOL_DIGITS)) + " terpicu!"); } triggered = true; } else triggered = false; return rates_total; } //+------------------------------------------------------------------+
Postingan terkait
- Panduan Lengkap MetaCOT 2 CFTC ToolBox untuk Analisis COT di MT4
- Indikator Open Range Breakout untuk MetaTrader 5: Strategi Trading yang Efektif
- Memprediksi Harga Selanjutnya dengan Jaringan Saraf: Panduan Lengkap untuk Trader
- Master Tools: Alat Indikator untuk MetaTrader 4 yang Harus Dimiliki
- Volume Profile + Range v6.0: Indikator Penting untuk MetaTrader 5