Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Twitter!
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

RJTX_Matches_Smoothed_Alert - Indikator für den MetaTrader 5

Ansichten:
683
Rating:
(14)
Veröffentlicht:
2019.01.02 08:13
Aktualisiert:
2023.03.29 15:02
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Wirklicher Autor:

Rafael Jimenez Tocino

Der Signalindikator RJTX_Matches_Smoothed bietet Alarme, E-Mails und Push-Benachrichtigungen.

Folgendes wurde geändert, damit der Indikator Alarme, E-Mails und Push-Benachrichtigungen erzeugen kann:

  1. Neu eingeführte Eingabeparameter
    input uint NumberofBar=1;                 // Anzahl von Bars für das Senden der Signale
    input bool SoundON=true;                  // Alerts erlauben
    input uint NumberofAlerts=2;              // Anzahl von Alerts
    input bool EMailON=false;                 // Senden vom E-Mails erlauben
    input bool PushON=false;                  // Senden von Push-Benachrichtigungen erlauben
    


  2. Ergänzt wurden drei neue Funktionen am Ende des Codes des Indikators: BuySignal(), SellSignal() und GetStringTimeframe()
    //+------------------------------------------------------------------+
    //| Funktion der Kaufsignale                                         |
    //+------------------------------------------------------------------+
    void BuySignal(string SignalSirname,      // Indikatorname für E-Mail und Push-Benachrichtigung
                   double &BuyArrow[],        // Indikatorpuffer der Kaufsignale
                   const int Rates_total,     // Aktuelle Anzahl der Bars
                   const int Prev_calculated, // Anzahl der Bars des vorherigen Ticks
                   const double &Close[],     // Schlusskurs
                   const int &Spread[])       // Spread
      {
    //---
       static uint counter=0;
       if(Rates_total!=Prev_calculated) counter=0;
    
       bool BuySignal=false;
       bool SeriesTest=ArrayGetAsSeries(BuyArrow);
       int index,index1;
       if(SeriesTest)
        {
         index=int(NumberofBar);
         index1=index+1;
        }
       else
         {
          index=Rates_total-int(NumberofBar)-1;
          index1=index-1;
         }
       if(!BuyArrow[index1] && BuyArrow[index]) 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]*_Point;
          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);
         }
    
    //---
      }
    //+------------------------------------------------------------------+
    //| Funktion der Verkaufssignale                                     |
    //+------------------------------------------------------------------+
    void SellSignal(string SignalSirname,      // Indikatorname für E-Mail und Push-Benachrichtigung
                    double &SellArrow[],       // Indikatorpuffer für Kaufsignale
                    const int Rates_total,     // Aktuelle Anzahl der Bars
                    const int Prev_calculated, // Anzahl der Bars des vorherigen Ticks
                    const double &Close[],     // Schlusskurs
                    const int &Spread[])       // Spread
      {
    //---
       static uint counter=0;
       if(Rates_total!=Prev_calculated) counter=0;
    
       bool SellSignal=false;
       bool SeriesTest=ArrayGetAsSeries(SellArrow);
       int index,index1;
       if(SeriesTest)
        {
         index=int(NumberofBar);
         index1=index+1;
        }
       else
         {
          index=Rates_total-int(NumberofBar)-1;
          index1=index-1;
         }
       if(!SellArrow[index1] && SellArrow[index]) 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]*_Point;
          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);
         }
    //---
      }
    //+------------------------------------------------------------------+
    //|  Abfrage des Zeitrahmens als Zeichenkette                        |
    //+------------------------------------------------------------------+
    string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
      {
    //----
       return(StringSubstr(EnumToString(timeframe),7,-1));
    //----
      }
    


  3. Ergänzt wurden eine paar Funktionsaufrufe von BuySignal() und SellSignal() im Block von OnCalculate() in der Schleife der Indikatorberechnung.
    //---     
       BuySignal("RJTX_Matches_Smoothed_Alert",BuyBuffer,rates_total,prev_calculated,close,spread);
       SellSignal("RJTX_Matches_Smoothed_Alert",SellBuffer,rates_total,prev_calculated,close,spread);
    //---
    


Dabei sind BuyBuffer und SellBuffer die Namen der Indikatorpuffer zur Speicherung der Kauf- und Verkaufssignale. Als Leer-Wert für die Indikatorpuffer sollte entweder Null oder EMPTY_VALUE festgelegt werden.

Es wird davon ausgegangen, dass nur ein einziger Aufruf der Funktionen BuySignal() und SellSignal() im Block von OnCalculate() des Indikatorcodes verwendet wird.

Der Indikator verwendet die Klassen der Bibliothek SmoothAlgorithms.mqh (kopieren Sie sie in <Terminal_Verzeichnis>\MQL5\Include). Die Arbeit mit diesen Klassen wird ausführlich im Artikel "Bildung von Kursreihenmittelwerten für Zwischenberechnungen ohne zusätzliche Buffer" beschrieben.

Ursprünglich wurde dieser Indikator in MQL4 geschrieben und zuerst veröffentlicht in der Code-Basis am 23.12.2015.


Abb. 1. Der Indikator RJTX_Matches_Smoothed_Alert auf dem Chart

Abb. 1. Der Indikator RJTX_Matches_Smoothed_Alert auf dem Chart


Abb. 2. Der Indikator RJTX_Matches_Smoothed_Alert. Alarmieren

Abb. 2. Der Indikator RJTX_Matches_Smoothed_Alert. Alarmieren

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

HLCrossSigForWPR_HTF HLCrossSigForWPR_HTF

Der Indikator HLCrossSigForWPR mit in den Eingabeparameter bestimmbarem Zeitrahmen.

BestInterval BestInterval

Eine Bibliothek zur Berechnung des besten Handelsintervalls.

RJTX_Matches_Smoothed_Alert_xx RJTX_Matches_Smoothed_Alert_xx

Der Signalindikator RJTX_Matches_Smoothed_Alert bietet Alarme, E-Mails und Push-Benachrichtigungen. Die Eingabevariablen erlauben das Ersetzen der dargestellten Symbole auf dem Chart

VZO VZO

VZO Indikator