Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
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
Ansichten:
1277
Rating:
(17)
Veröffentlicht:
2017.02.07 15:04
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Der echte Autor:

EarnForex

Dieser Indikator zeigt die Extrema des Trends (maximal und minimal), die wie die Punkte der Unterstützung und des Widerstands verwendet werden können, um zu helfen, den Kanal des laufenden Trends, mit der Abgabe der Alerts, mit der Sendung der Email-Nachrichten und der push-Nachrichten ins Smartphone zu bestimmen.

Es ist ein einfacher Indikator, der eine bestimmte Periode verwendet, um darauf ein Minimum und ein Maximum zu finden und sie mit Punkten zu bezeichnen.

Für die Eingabe der Alerts, Emailnachrichten und push-Nachrichten aufs Smartphon im Code des Indikators wurden die folgenden Änderungen gemacht:

  1. Zu den Eingangsparametern des Indikators wurden neue Eingangsvariable geschrieben
    input uint NumberofBar=1;//Die Nummer der Bar für die Sendung des Signals
    input bool SoundON=true; //Die Erlaubnis der Alerts
    input uint NumberofAlerts=2;//Die Anzahl der Alerts
    input bool EMailON=false; //Die Erlaubnis der Email-Sendung des Signals
    input bool PushON=false; //Die Erlaubnis der Sendung des Signals aufs Handy
    
  2. Es wurden drei neue Funktionen BuySignal(), SellSignal() und GetStringTimeframe() zum Ende des Indikatorscodes hinzugefügt
    //+------------------------------------------------------------------+
    //| Buy signal function                                              |
    //+------------------------------------------------------------------+
    void BuySignal(string SignalSirname,      // Der Text des Indikatorsnamens für die Emailnachrichten und Puch-Signale
                   double &BuyArrow[],        // Der Indikatorpuffer mit Signalen für den Kauf
                   const int Rates_total,     // Die aktuelle Anzahl der Bars
                   const int Prev_calculated, // Die Anzahl der Bars beim vorherigen Tick
                   const double &Close[],     // Der Exit-Preis
                   const int &Spread[])       // Spreed
      {
    //---
       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);
         }
    
    //---
      }
    //+------------------------------------------------------------------+
    //| Sell signal function                                             |
    //+------------------------------------------------------------------+
    void SellSignal(string SignalSirname,      // Der Text des Indikatorsnamens für die Emailnachrichten und Puch-Signale
                    double &SellArrow[],       // Der Indikatorpuffer mit Signalen für den Kauf
                    const int Rates_total,     // Die aktuelle Anzahl der Bars
                    const int Prev_calculated, // Die Anzahl der Bars beim vorherigen Tick
                    const double &Close[],     // Der Exit-Preis
                    const int &Spread[])       // Spreed
      {
    //---
       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);
         }
    //---
      }
    //+------------------------------------------------------------------+
    //|  Die Erhaltung der Timeframe in Form einer Zeile                              |
    //+------------------------------------------------------------------+
    string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
      {
    //----
       return(StringSubstr(EnumToString(timeframe),7,-1));
    //----
      }
    
  3. Zum Block OnCalculate() nach den Loops der Berechnungen des Indikators wurde ein paar Aufrufe zu den Funktionen BuySignal() und SellSignal() hinzugefügt
    //---     
       BuySignal("BeginnerAlert",BuyBuffer,rates_total,prev_calculated,Close,spread);
       SellSignal("BeginnerAlert",SellBuffer,rates_total,prev_calculated,Close,spread);
    //--- 
    

Wo BuyBuffer und SellBuffer — sind die Namen der Indikatorpuffer für die Speicherung der Signale zum Kauf und Verkauf. In Indikatorpuffern als leere Werte müssen entweder Null oder EMPTY_VALUE in Vorhanden sein.

Es wird angenommen, dass im Indikatorscode im Block OnCalculate() nur ein Aufruf zu Funktionen BuySignal() und SellSignal() verwendet wird.

Zum ersten Mal wurde dieser Indikator in MQL4 umgesetzt und in Code Base 03.09.2008. veröffentlicht.

in Abb.1. Der Indikator BeginnerAlert im Chart

in Abb.1. Der Indikator BeginnerAlert im Chart

in Abb.2. Der Indikator BeginnerAlert. Die Eingabe des Alerts

in Abb.2. Der Indikator BeginnerAlert. Die Eingabe des Alerts

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

Exp_i4_DRF_v3 Exp_i4_DRF_v3

Der Experte Exp_i4_DRF_v3 wurde aufgrund der veränderten Farbe des Indikators i4_DRF_v3 gebaut.

FloatPivot_Digit_HTF FloatPivot_Digit_HTF

Der Indikator FloatPivot_Digit_HTF mit der Veränderungsmöglichkeit des Timeframes des Indikators in den Eingangsparametern.

Waddah_Attar_Pivot Waddah_Attar_Pivot

Dieser Indikator zeichnet das Tages-, Wöchentliche- und Monatliche-Pivot mit dem Test in der History.

XFatlXSatlMACD_HTF XFatlXSatlMACD_HTF

Der Indikator XFatlXSatlMACD mit der Veränderungsmöglichkeit des Timeframes des Indikators in den Eingangsparametern.