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

Waddah_Attar_Trend_Alert - Indikator für den MetaTrader 5

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

Wirklicher Autor: Eng. Waddah Attar

Der Waddah_Attar_Trend Indikator. 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
    //---- Eingabevariablen für Alerts 
    input uint NumberofBar=1;                    //Das Senden des Signals an Mobilgeräte aktivieren
    input bool SoundON=true;                     //Alerts aktivieren
    input uint NumberofAlerts=2;                 //Anzahl der 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 &ColorArray[],// Farbindex-Puffer
    int ColorIndex,// Farbenindex im Farben-Index-Puffer für das Senden des Signals
    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(ColorArray);
    int index,index1;
    if(SeriesTest)
    {
    index=int(NumberofBar);
    index1=index+1;
    }
    else
    {
    index=Rates_total-int(NumberofBar)-1;
    index1=index-1;
    }
    if(ColorArray[index1]!=ColorIndex && ColorArray[index]==ColorIndex) 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+=_Point*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 &ColorArray[], // Farbindex-Puffer
    int ColorIndex, // Farbindex-Puffer für das Senden des Signals
    const int Rates_total, // aktuelle Anzahl der Balken
    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(ColorArray);
    int index,index1;
    if(SeriesTest)
    {
    index=int(NumberofBar);
    index1=index+1;
    }
    else
    {
    index=Rates_total-int(NumberofBar)-1;
    index1=index-1;
    }
    if(ColorArray[index1]!=ColorIndex && ColorArray[index]==ColorIndex) 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+=_Point*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("Waddah_Attar_Trend_Alert",ColorIndBuffer,0,rates_total,prev_calculated,close,spread);
    SellSignal("Waddah_Attar_Trend_Alert",ColorIndBuffer,1,rates_total,prev_calculated,close,spread);
    //---

Wobei: ColorIndBuffer - Name des Index-Puffers für das Speichern der Farbe der Linie als Index, 0 und 1 - Farbennummern im Index-Puffer.

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 die Klassen der Bibliothek SmoothAlgorithms.mqh (kopieren Sie diese nach <terminal_data_folder>\MQL5\Include). Die Klassen wurden im Artikel "Bildung von Kursreihenmittelwerten für Zwischenberechnungen ohne zusätzliche Puffer" ausführlich beschrieben.

Abb.1. Der Waddah_Attar_Trend_Alert Indikator auf dem Chart

Abb.1. Der Waddah_Attar_Trend_Alert Indikator auf dem Chart

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

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

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

Exp_ReOpenPositions Exp_ReOpenPositions

Der Expert Advisor erhöht das Volumen einer offenen Position, wenn der Gewinn in Punkten vom letzten Trade den in den Eingabeparametern des Experten festgelegten Limit übersteigt.

Exp_TralingStop Exp_TralingStop

Der Expert Advisor verschiebt den Stop Loss Level vom aktuellen Preis um den in den Einstellungen festgelegten Abstand.

EMA CROSS EMA CROSS

Kreuzung zweier iMA.

Fibo iSAR Fibo iSAR

Der Expert Advisor verwendet die Fibonacci Levels und den iSAR Indikator (Parabolic Stop and Reverse system). Trading anhand BuyLimit und SellLimit Ordern.