Se sei un trader e utilizzi MetaTrader 4, probabilmente hai sentito parlare dell'Indicatore di Livello. Questo strumento è fondamentale per monitorare i livelli chiave e ricevere notifiche in tempo reale. Ma come funziona esattamente?
Quando il livello trigLv specificato nelle impostazioni viene superato all'interno della deviazione, l'indicatore invia una notifica push al tuo dispositivo mobile se il parametro di notifica è attivato. Inoltre, emette un avviso se il parametro avviso è abilitato. I livelli di trigLv e deviazione sono evidenziati da linee orizzontali, il cui stile, colore e spessore possono essere personalizzati direttamente nelle impostazioni dell'indicatore.
Questa funzionalità ti permette di aggiungere più copie dell'indicatore con livelli diversi al grafico e ricevere segnali in base alle loro intersezioni. Ricorda che il livello trigLv funziona solo una volta per ogni barra; la riattivazione è possibile solo dopo l'apertura della barra successiva, evitando così attivazioni troppo frequenti ad ogni 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; // usa avviso input bool notification = true; // usa notifiche push input double trigLv = 0.0; // livello di attivazione input int deviation = 30; // deviazione da trigLv in punti input int lineWidth = 1; // spessore della linea input ENUM_LINE_STYLE lineStyle = STYLE_SOLID; // stile della linea input color lineColor = clrMediumSpringGreen; // colore della linea input color inactivityColor = clrLightGray; // colore di inattività CChartObjectHLine lv, dvH, dvL; bool equal(double _v1, double _v2, double _epsilon) { return fabs(_v1 - _v2) <= fabs(_epsilon); } //+------------------------------------------------------------------+ //| Funzione di inizializzazione dell'indicatore personalizzato | //+------------------------------------------------------------------+ 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("Indicatore di Livello. Livello ", lv.Price(0), " è inattivo!"); if (trigLv == 0.0) Alert("Indicatore di Livello. Imposta il parametro \"trigLv\" al valore desiderato!"); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { //lv.Delete(); //dvH.Delete(); //dvL.Delete(); } //+------------------------------------------------------------------+ //| Funzione di iterazione dell'indicatore personalizzato | //+------------------------------------------------------------------+ 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("Indicatore di Livello. Livello ", NormalizeDouble(lv.Price(0), (int)SymbolInfoInteger(NULL, SYMBOL_DIGITS)), " attivato!"); if (notification) SendNotification("Indicatore di Livello. Livello " + (string)NormalizeDouble(lv.Price(0), (int)SymbolInfoInteger(NULL, SYMBOL_DIGITS)) + " attivato!"); } triggered = true; } else triggered = false; return(rates_total); } //+------------------------------------------------------------------+
In sintesi, l'Indicatore di Livello è uno strumento utile per migliorare la tua strategia di trading, offrendoti la possibilità di essere sempre aggiornato sui movimenti del mercato. Non dimenticare di personalizzarlo secondo le tue esigenze per massimizzare i tuoi risultati!
Post correlati
- Indicatori ZigZag Potenziati: Scopri le Nuove Funzionalità per MetaTrader 4
- Indice di Vigorità Relativa (RVI): Guida all'Utilizzo su MetaTrader 5
- Indice di Volatilità Chaikin: Scegli il Giusto Algoritmo di Smussamento per MetaTrader 5
- HP Extrapolator: Scopri Come Ottimizzare le Previsioni con il Filtro Hodrick-Prescott
- Indicatore Donchian Ultimate per MT4: Scopri tutte le Funzionalità