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

Iin_MA_Signal_Alert - Indikator für den MetaTrader 5

Ansichten:
644
Rating:
(11)
Veröffentlicht:
2018.11.05 14:25
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Eigentlicher Autor: Iin Zulkarnainn

Der Signalindikator Iin_MA_Signal bietet Alarme, E-Mails und Push-Benachrichtigungen

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

  1. Neu eingeführte Eingabeparameter
    input uint NumberofBar=1;//Barnummer für das Signal
    input bool SoundON=true; // Aktiviert Alerts
    input uint NumberofAlerts=2;//Anzahl von Alerts
    input bool EMailON=false; // Aktiviert Emails
    input bool PushON=false; // Aktiviert das Senden auf Handys
    
  2. Ergänzt wurden drei neue Funktionen am Ende des Codes des Indikators: BuySignal(), SellSignal() und GetStringTimeframe()
    //+------------------------------------------------------------------+
    //| Funktion der Kaufsignale                                         |
    //+------------------------------------------------------------------+
    void BuySignal(string SignalSirname,      // Text des Indikatornamens für E-Mail und Push-Benachrichtigung
                   double &BuyArrow[],        // Indikatorpuffer mit den Kaufsignalen
                   const int Rates_total,     // aktuelle Anzahl der Bars
                   const int Prev_calculated, // die Anzahl der Bar des vorherigen Ticks
                   const double &Close[],     // Schlusskurs
                   const int &Spread[])       // Spread
      {
    //---
       static uint counter=0;
       TRIX-Indikator, der den Logarithmus der Preise und JMA (Jurik Moving Average) statt des exponentiellen gleitenden Durchschnitt zur Glättung verwendet.
    
       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);
         }
    
    //---
      }
    //+------------------------------------------------------------------+
    //| Funktion der Verkaufssignale                                     |
    //+------------------------------------------------------------------+
    void SellSignal(string SignalSirname,      // Text des Indikatornamens für E-Mail und Push-Benachrichtigung
                    double &SellArrow[],       // Indikatorpuffer mit den Verkaufssignalen
                    const int Rates_total,     // aktuelle Anzahl der Bars
                    const int Prev_calculated, // die Anzahl der Bar des vorherigen Ticks
                    const double &Close[],     // Schlusskurs
                    const int &Spread[])       // Spread
      {
    //---
       static uint counter=0;
       TRIX-Indikator, der den Logarithmus der Preise und JMA (Jurik Moving Average) statt des exponentiellen gleitenden Durchschnitt zur Glättung verwendet.
    
       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);
         }
    //---
      }
    //+------------------------------------------------------------------+
    //|  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("Iin_MA_Signal_Alert",BuyBuffer,rates_total,prev_calculated,close,spread);
       SellSignal("Iin_MA_Signal_Alert",SellBuffer,rates_total,prev_calculated,close,spread);
    //--- 
    

Dabei sind BuyBuffer und SellBuffer die Namen der Indikatorpuffer zur Speicherung der Kauf- und Verkaufssignale. Da die leeren Werte in den Indikatorpuffern entweder Null oder auf EMPTY_VALUE gesetzt werden müssen.

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

Abb. 1. Iin_MA_Signal_Alert auf dem Chart

Abb. 1. Iin_MA_Signal_Alert auf dem Chart


Abb. 2. Iin_MA_Signal_Alert. Alarmieren

Abb. 2. Iin_MA_Signal_Alert. Alarmieren

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

RSI_Candle_Vol RSI_Candle_Vol

Der Indikator RSI_Histogram_Vol in Form von Kerzen

CCI_Candle_Vol CCI_Candle_Vol

Der Indikator CCI_Histogram_Vol in Form von Kerzen

StepMA_3D_v3_HTF StepMA_3D_v3_HTF

Der Indikator StepMA_3D_v3 mit in den Eingabeparameter bestimmbarem Zeitrahmen.

DeMarker_Histogram_Vol DeMarker_Histogram_Vol

Der Oszillator DeMarker dargestellt als Farb-Histogramm mit der Verwendung der Volumina.