und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
Elliott_Wave_Oscillator_Sign_Alert - Indikator für den MetaTrader 5
- Ansichten:
- 968
- Rating:
- Veröffentlicht:
- 2017.01.09 14:57
- Aktualisiert:
- 2023.03.29 15:00
- Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Echter Autor:
Ein Flaggensignal Indikator basierend auf dem Algorithmus des Elliott_Wave_Oscillator Indikators, 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:
- 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
- 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)); //---- }
- Ein paar Aufrufe der BuySignal() und SellSignal() Funktionen nach den Indikator Berechnungszyklen im OnCalculate() Block hinzugefügt
u//--- BuySignal("Elliott_Wave_Oscillator_Sign",BuyBuffer,rates_total,prev_calculated,close,spread); SellSignal("Elliott_Wave_Oscillator_Sign",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 ursprüngliche Indikator enthielt bereits einen funktionalen Code zum Generieren von Benachrichtigungen, die als unnötig entfernt wurde.
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 26.04.2016.
Abb.1. Der Elliott_Wave_Oscillator_Sign_Alert Indikator am Chart
Abb.2. Der Elliott_Wave_Oscillator_Sign_Alert Indikator. Generierung von Benachrichtigungen.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/16171
Eleganter und wendiger Vergleich der "doppelten" Werte des "Preises".
XFatlXSatlCloudMACD-Histogramm basierend auf den geglätteten digitalen FATL und SATL Filtern mit farbiger Wolke zwischen ihnen.
Eine einfacher Trendindikator mit Berechnung der Anstiegs und Fallens von Hoch- und Tiefpreisen.
BS_Living_NowDer BS Living Now Indikator zeigt Marktextrema an und ähnelt etwas dem Standardfraktal-Indikator.