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

BrainTrend2SigAlert - Indikator für den MetaTrader 5

Ansichten:
1267
Rating:
(23)
Veröffentlicht:
2017.02.08 15:53
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Der BrainTrend2Sig Semaphor-Signalindikator. Sendet Alerts, E-Mails und Push-Benachrichtigungen an Smartphone.

Für das Senden von Alerts, E-Mails und Push-Benachrichtigungen wurden im Code des Indikators die folgenden Änderungen vorgenommen:

  1. Es wurden neue Eingabevariablen den Eingabeparametern hinzugefügt
    input uint NumberofBar=1;//Balkennummer für das Senden eines Signals
    input bool SoundON=true; //Aktivieren von Alerts
    input uint NumberofAlerts=2;//Anzahl von Alerts
    input bool EMailON=false; //Das Senden des Signals per E-Mail aktivieren
    input bool PushON=false; //Das Senden des Signals an Mobilgeräte aktivieren 
    
  2. Es wurden drei neue Funktionen BuySignal(), SellSignal() und GetStringTimeframe() am Ende des Codes hinzugefügt
    //+------------------------------------------------------------------+
    //| Buy signal function                                              |
    //+------------------------------------------------------------------+
    void BuySignal(string SignalSirname,      // Text des Namens des Indikators für E-Mails und Push-Benachrichtigungen
                   double &BuyArrow[],        // Puffer des Indikators mit Kaufsignalen
                   const int Rates_total,     // aktuelle Anzahl der Balken
                   const int Prev_calculated, // Anzahl der Balken auf dem vorherigen Tick
                   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;
       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,      // Text des Namens des Indikators für E-Mails und Push-Benachrichtigungen
                    double &SellArrow[],       // Puffer des Indikators mit Verkaufssignalen
                    const int Rates_total,     // aktuelle Anzahl der Balken
                    const int Prev_calculated, // Anzahl der Balken auf dem vorherigen Tick
                    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;
       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);
         }
    //---
      }
    //+------------------------------------------------------------------+
    //|  Erhalten der Timeframe als String                              |
    //+------------------------------------------------------------------+
    string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
      {
    //----
       return(StringSubstr(EnumToString(timeframe),7,-1));
    //----
      }
    
  3. Es wurden einige Aufrufe von BuySignal() und SellSignal() in den OnCalculate() Block nach den Berechnungsschleifen hinuzugefügt
    //---
    BuySignal("BrainTrend2SigAlert",BuyBuffer,rates_total,prev_calculated,close,spread);
    SellSignal("BrainTrend2SigAlert",SellBuffer,rates_total,prev_calculated,close,spread);
    //---

Wobei BuyBuffer und SellBuffer Namen der Puffer des Indikators mit Buy- und Sell-Signalen sind. Als leere Werte müssen in den Puffern entweder Nulls oder EMPTY_VALUE setzt werden.

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

Abb.1. Der BrainTrend2SigAlert auf dem Chart

Abb.1. Der BrainTrend2SigAlert auf dem Chart

Abb.2. Der BrainTrend2SigAlert Indikator. Das Senden eines Alerts

Abb.2. Der BrainTrend2SigAlert Indikator. Das Senden eines Alerts

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

MFI_Histogram_Round MFI_Histogram_Round

Ein klassischer MFI Oszillator, realisiert als Historgramm. Der Oszillator rundet seine Werte ab.

AutoFibAutoTrend_OnParabolic AutoFibAutoTrend_OnParabolic

Der Indikator zeichnet einen Preiskanal und Fibonacci-Ebenen auf den letzten Spitzen des parabolischen Zickzacks.

WPR_Histogram_Round WPR_Histogram_Round

Ein klassischer WPR Oszillator, realisiert als Historgramm. Der Oszillator rundet seine Werte ab.

RSI_Histogram_Round_HTF RSI_Histogram_Round_HTF

Der RSI_Histogram_Round Indikator mit der Option, Zeitrahmen in den Eingabeparametern auszuwählen.