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
wlxBW5ZoneAlert - Indikator für den MetaTrader 5
- Ansichten:
- 826
- Rating:
- Veröffentlicht:
- 2017.01.09 14:49
- Aktualisiert:
- 2017.09.05 16:05
- Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
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:
- 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("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.2. Der wlxBW5ZoneAlert Indikator Generierung von Benachrichtigungen.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/16121
Der Exp_i-SpectrAnalysis_WPR Expert Advisor basiert auf der Änderung der Richtung des i-SpectrAnalysis_WPR Indikators.
ALMA 2.0Die neueste Version von ALMA.
Handelssystem basierend auf den wlxBW5Zone Indikator Signalen.
StochasticDiffGeglättete Differenz zwischen der Haupt- und Signallinie des Stochastic-Oszillators in Form eines farbigen Histogramms.