Schau, wie man Roboter kostenlos herunterladen kann

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:
434
Rating:
Stimmen: 13
Veröffentlicht:
2017.01.09 14:49
Aktualisiert:
2017.09.05 16:05

Echter Autor:

Wellx

Ein Flaggensignal Indikator basierend auf den Werten des Accelerator Oszillators und Bill William's Awesome Oszillator, der Benachrichtigungen, Versendung von E-Mails und Push-Benachrichtigungen auf mobilen Geräten unterstützt.

Die folgenden Änderungen der des Indikatorcodes wurden eingebaut, um Benachrichtigungen, e-Mails und Push-Benachrichtigungen zu implementieren:

  1. Eingeführte neue Eingabeparameter
    input uint NumberofBar=1;//Balkennummer für das Signal
    input bool SoundON=true; //Benachrichtigungen einschalten
    input uint NumberofAlerts=2;//Anzahl von Benachrichtigungen
    input bool EMailON=false; //Mailing des Signals einschalten
    input bool PushON=false; //Senden des Signals an mobiles Gerät einschalten
    
    
  2. Drei neue Funktionen am Ende des Indikator-Codes hinzugefügt: BuySignal(), SellSignal() und GetStringTimeframe()
    //+------------------------------------------------------------------+
    //| Kaufsignal Funktion                                              |
    //+------------------------------------------------------------------+
    void BuySignal(string SignalSirname,      // Text des Indikatornamens für Email und Push Nachrichten
                   double &BuyArrow[],        // Indikatorbuffer mit Kaufsignalen
                   const int Rates_total,     // die aktuelle Anzahl von Balken
                   const int Prev_calculated, // die Anzahl von Balken für den vorherigen Tick
                   const double &close,           // Schlusspreis
                   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//---
      }
    //+------------------------------------------------------------------+
    //| Verkaufssignal Funktion                                          |
    //+------------------------------------------------------------------+
    void SellSignal(string SignalSirname,      // Text des Indikatornamens für Email und Push Nachrichten
                    double &SellArrow[],       // Indikatorbuffer mit Verkaufsignalen
                    const int Rates_total,     // die aktuelle Anzahl von Balken
                    const int Prev_calculated, // die Anzahl von Balken für den vorherigen Tick
                    const double &close,           // Schlusspreis
                    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//---
      }
    //+------------------------------------------------------------------+
    //|  TimeFrame als String holen                                      |
    //+------------------------------------------------------------------+
    string GetStringTimeframe(ENUM_TIMEFRAMES TimeFrame)
      {
    //----
       return(StringSubstr(EnumToString(TimeFrame),7,-1));
    //----
      }
    
    
  3. Ein paar Aufrufe der BuySignal() und SellSignal() Funktionen nach den Indikator Berechnungszyklen im OnCalculate() Block hinzugefügt
    u//---     
       BuySignal("wlxBW5ZoneAlert",BuyBuffer,rates_total,prev_calculated,close,spread);
       SellSignal("wlxBW5ZoneAlert",SellBuffer,rates_total,prev_calculated,close,spread);
    u//---
    
    

Wobei BuyBuffer und SellBuffer are the names of the Indikator buffers for storing the buy und sell Signale. Als die leere Werte in den Indikator Puffern muss entweder Null oder EMPTY_VALUE festgelegt werden.

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

Der Indikator verwendet die SmoothAlgorithms.mqh Bibliotheksklassen(müssen in den Ordner terminal_data_folder\MQL5\Include kopiert werden). Die Verwendung von Klassen wurde ausführlich im Artikel "Mitteln von Kursreihen für sofortige Berechnungen ohne zusätzliche Buffer" beschrieben.

Ursprünglich wurde dieser Indikator in MQL4 geschrieben und erstmals veröffentlicht in der Code Base auf mql4.com am 08.03.2008.

Abb.1. Der wlxBW5ZoneAlert Indikator am Chart

Abb.1. Der wlxBW5ZoneAlert Indikator am Chart

Abb.2. Der wlxBW5ZoneAlert Indikator Generierung von Benachrichtigungen.

Abb.2. Der wlxBW5ZoneAlert Indikator Generierung von Benachrichtigungen.

Die Übersetzung aus dem Russischen wurde durch die MetaQuotes Software Corp. ausgeführt
Originalpublikation: https://www.mql5.com/ru/code/16121

Exp_i-SpectrAnalysis_WPR Exp_i-SpectrAnalysis_WPR

Der Exp_i-SpectrAnalysis_WPR Expert Advisor basiert auf der Änderung der Richtung des i-SpectrAnalysis_WPR Indikators.

ALMA 2.0 ALMA 2.0

Die neueste Version von ALMA.

Exp_wlxBW5Zone Exp_wlxBW5Zone

Handelssystem basierend auf den wlxBW5Zone Indikator Signalen.

StochasticDiff StochasticDiff

Geglättete Differenz zwischen der Haupt- und Signallinie des Stochastic-Oszillators in Form eines farbigen Histogramms.