Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Indikatoren

DSSBressertSignAlert - Indikator für den MetaTrader 5

Ansichten:
852
Rating:
(15)
Veröffentlicht:
2016.12.22 14:07
Aktualisiert:
2023.03.29 15:00
\MQL5\Include\
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Ein Semaphore-Signalindikator basierend auf dem Algorithmus des DSSBressert Indikators, welcher Alarme, E-Mails und Push-Benachrichtigungen an Smartphone sendet.

Um das Senden von Alarmen, E-Mails und Push-Benachrichtigungen an Smartphone zu implementieren, wurden die folgenden Änderungen im Code des Indikators vorgenommen:

  1. Es wurden neue Inputvariablen in die Eingabeparametern des Indikators hinzugefügt
    input uint NumberofBar=1;//Nummer des Balkens für das Signal
    input bool SoundON=true; //Alarme aktivieren
    input uint NumberofAlerts=2;//Anzahl von Alarmen
    input bool EMailON=false; //Aktivieren das Senden eines Signals per E-Mail
    input bool PushON=false; //Aktivieren das Senden eines Signals an Mobilgerät
    
    
  2. Am Ende des Codes des Indikators wurden drei neue Funktionen hinzugefügt: BuySignal(), SellSignal() und GetStringTimeframe()
    //+------------------------------------------------------------------+
    //| Buy signal function                                              |
    //+------------------------------------------------------------------+
    void BuySignal(string SignalSirname,      // Text des Namens des Indikators für E-Mails und Push-Benachrichtigungen
                   double &BuyArrow[],        // Indikator-Puffer mit Buy-Signalen
                   const int Rates_total,     // die aktuelle Anzahl von Balken
                   const int Prev_calculated, // die Anzahl der Balken auf dem vorherigen Tick
                   const double &Close[],     // Schlusskurs
                   const int &Spread[])       // Spread
      {
    u//---
       static uint counter=0;
       if(Rates_total!=Prev_calculated) counter=0;
    
       bool BuySignal=false;
       bool SeriesTest=ArrayGetAsSeries(BuyArrow);
       int index;
       if(SeriesTest) index=int(NumberofBar);
       else index=Rates_total-int(NumberofBar)-1;
       if(NormalizeDouble(BuyArrow[index],_Digits) && BuyArrow[index]!=EMPTY_VALUE) BuySignal=true;
       if(BuySignal && counter<=NumberofAlerts)
         {
          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(NumberofBar);
          else index=Rates_total-int(NumberofBar)-1;
          double Ask=Close[index];
          double Bid=Close[index];
          SeriesTest=ArrayGetAsSeries(Spread);
          if(SeriesTest) index=int(NumberofBar);
          else index=Rates_total-int(NumberofBar)-1;
          Bid+=Spread[index];
          string sAsk=DoubleToString(Ask,_Digits);
          string sBid=DoubleToString(Bid,_Digits);
          string sPeriod=GetStringTimeframe(ChartPeriod());
          if(SoundON) Alert("BUY signal \n Ask=",Ask,"\n Bid=",Bid,"\n currtime=",text,"\n Symbol=",Symbol()," Period=",sPeriod);
          if(EMailON) SendMail(SignalSirname+": BUY signal alert","BUY signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
          if(PushON) SendNotification(SignalSirname+": BUY signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
         }
    
    u//---
      }
    //+------------------------------------------------------------------+
    //| Sell signal function                                             |
    //+------------------------------------------------------------------+
    void SellSignal(string SignalSirname,      // Text des Namens des Indikators für E-Mails und Push-Benachrichtigungen
                    double &SellArrow[],       // Indikator buffer with sell signals
                    const int Rates_total,     // die aktuelle Anzahl von Balken
                    const int Prev_calculated, // die Anzahl der Balken auf dem vorherigen Tick
                    const double &Close[],     // Schlusskurs
                    const int &Spread[])       // Spread
      {
    u//---
       static uint counter=0;
       if(Rates_total!=Prev_calculated) counter=0;
    
       bool SellSignal=false;
       bool SeriesTest=ArrayGetAsSeries(SellArrow);
       int index;
       if(SeriesTest) index=int(NumberofBar);
       else index=Rates_total-int(NumberofBar)-1;
       if(NormalizeDouble(SellArrow[index],_Digits) && SellArrow[index]!=EMPTY_VALUE) SellSignal=true;
       if(SellSignal && counter<=NumberofAlerts)
         {
          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(NumberofBar);
          else index=Rates_total-int(NumberofBar)-1;
          double Ask=Close[index];
          double Bid=Close[index];
          SeriesTest=ArrayGetAsSeries(Spread);
          if(SeriesTest) index=int(NumberofBar);
          else index=Rates_total-int(NumberofBar)-1;
          Bid+=Spread[index];
          string sAsk=DoubleToString(Ask,_Digits);
          string sBid=DoubleToString(Bid,_Digits);
          string sPeriod=GetStringTimeframe(ChartPeriod());
          if(SoundON) Alert("SELL signal \n Ask=",Ask,"\n Bid=",Bid,"\n currtime=",text,"\n Symbol=",Symbol()," Period=",sPeriod);
          if(EMailON) SendMail(SignalSirname+": SELL signal alert","SELL signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
          if(PushON) SendNotification(SignalSirname+": SELL signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
         }
    u//---
      }
    //+------------------------------------------------------------------+
    //|  Getting the timeframe as a string                               |
    //+------------------------------------------------------------------+
    string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
      {
    //----
       return(StringSubstr(EnumToString(timeframe),7,-1));
    //----
      }
    
    
  3. Es wurden einige Aufrufe der BuySignal() und SellSignal() Funktionen nach den Zyklen der Berechnungen des Indikators im OnCalculate() Block hinzugefügt
    u//---     
       BuySignal("DSSBressertSignAlert",BuyBuffer,rates_total,prev_calculated,close,spread);
       SellSignal("DSSBressertSignAlert",SellBuffer,rates_total,prev_calculated,close,spread);
    u//---
    
    

wobei BuyBuffer und SellBuffer die Namen der Indikator-Puffern für das Speichern von Buy- und Sell-Signalen sind. Als leere Werte sind entweder Nullen oder EMPTY_VALUE in den Indikator-Puffern zu setzen.

Es wird angenommen, dass der Aufruf der BuySignal() und SellSignal() Funktionen im OnCalculate() Block nur einmal im Code des Indikators verwendet wird.

Der Indikator verwendet Klassen der Bibliothek SmoothAlgorithms.mqh (kopieren Sie diese in den Ordner <terminal_data_folder>\MQL5\Include). Die Verwendung der Klassen wurde im Artikel "Bildung von Kursreihenmittelwerten für Zwischenberechnungen ohne zusätzliche Puffer" ausführlich beschrieben.


Abb.1. Der DSSBressertSignAlert Indikator auf dem Chart

Abb.1. Der DSSBressertSignAlert Indikator auf dem Chart

Abb.2. Der DSSBressertSignAlert Indikator. Generierung eines Alarms.

Abb.2. Der DSSBressertSignAlert Indikator. Generierung eines Alarms.

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/16115

CPrice CPrice

Die Instanz der Klasse gibt solche Daten wie Bid, Ask, High, Low, Schlusskurse und Eröffnungskurse der aktuellen oder einer in den Parametern angegebenen Kerze sowie die Eröffnungszeit der Kerze zurück.

Exp_i-SpectrAnalysis_RVI Exp_i-SpectrAnalysis_RVI

Der Exp_i-SpectrAnalysis_RVI EA basiert auf den vom i-SpectrAnalysis_RVI Oszillator generierten Signalen.

BackgroundCandle_PPO_Cloud_HTF BackgroundCandle_PPO_Cloud_HTF

Ein Indikator, der die Kerzen einer größeren Timeframe als farbgefüllte Rechtecke mithilfe von DRAW_FILLING Puffern zeichnet.

Mittelwerte MTF V2 Mittelwerte MTF V2

18 verschiedene Methoden Mittelwerte zu berechnen.