Halo trader! Kali ini kita akan membahas tentang Indikator Level yang bisa digunakan di MetaTrader 4. Indikator ini sangat berguna dalam membantu kita mengambil keputusan trading yang lebih baik.
Ketika level trigLv yang telah ditentukan dalam pengaturan terlintas dalam batas deviation, indikator ini akan mengirimkan notifikasi push ke perangkat mobile Anda jika parameter notification diaktifkan. Selain itu, indikator ini juga akan memutar suara peringatan jika parameter alert diaktifkan. Level trigLv dan batas deviation ditandai dengan garis horizontal, yang gaya, warna, dan ketebalannya bisa diatur dalam pengaturan indikator. Desain ini memungkinkan Anda untuk menambahkan beberapa salinan indikator dengan level yang berbeda ke dalam grafik dan menerima sinyal saat mereka berpotongan.
Perlu diingat, level trigLv hanya akan bekerja sekali pada satu bar. Pengaktifan ulang hanya mungkin setelah bar berikutnya dibuka. Ini membantu menghindari terjadinya sinyal yang terlalu sering pada setiap tick.

//+------------------------------------------------------------------+ //| LevelIndicator.mq4 | //| 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 strict #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 pengaktifan 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 ketidakaktifan 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("Indikator Level. Level ", lv.Price(0), " tidak aktif!"); if (trigLv == 0.0) Alert("Indikator Level. Setel parameter \"trigLv\" ke nilai yang diinginkan!"); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { //lv.Delete(); //dvH.Delete(); //dvL.Delete(); } //+------------------------------------------------------------------+ //| Fungsi iterasi indikator kustom | //+------------------------------------------------------------------+ 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[0], deviation * SymbolInfoDouble(NULL, SYMBOL_POINT))) { if (time_ != time[0]) time_ = time[0]; else return rates_total; if (!triggered) { if (alert) Alert("Indikator Level. Level ", NormalizeDouble(lv.Price(0), (int)SymbolInfoInteger(NULL, SYMBOL_DIGITS)), " terpicu!"); if (notification) SendNotification("Indikator Level. 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
- Master Tools: Alat Indikator untuk MetaTrader 4 yang Harus Dimiliki
- Indikator Open Range Breakout untuk MetaTrader 5: Strategi Trading yang Efektif
- SupremAutoFibo: Indikator Fibonacci untuk MetaTrader 5
- Tampilkan Tren Saat Ini untuk Semua Time Frame dalam Satu Panel Sederhana di MetaTrader 4