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
- Ansichten:
- 840
- Rating:
- Veröffentlicht:
- 2018.11.09 07:47
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Wirklicher Autor:
Paul Stringer
Der Indikator definiert die Harami-Muster und bietet Hinweise, E-Mails und Push-Benachrichtigungen
Folgendes wurde geändert, damit der Indikator Alarme, E-Mails un Push-Benachrichtigungen erzeugen kann:
- 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
- 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; 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]*_Point; 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; 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]*_Point; 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)); //---- }
- Ergänzt wurden eine paar Funktionsaufrufe von BuySignal() und SellSignal() im Block von OnCalculate() in der Schleife der Indikatorberechnung.
//--- BuySignal("Harami_Alert",BuyBuffer,rates_total,prev_calculated,close,spread); SellSignal("Harami_Alert",SellBuffer,rates_total,prev_calculated,close,spread); //---
Dabei sind BuyBuffer und SellBuffer die Namen der Indikatorpuffer zur Speicherung der Kauf- und Verkaufssignale. Als Leer-Wert für die Indikatorpuffer sollte entweder Null oder EMPTY_VALUE festgelegt werden.
Es wird davon ausgegangen, dass nur ein einziger Aufruf der Funktionen BuySignal() und SellSignal() im Block von OnCalculate() des Indikatorcodes verwendet wird.
Ursprünglich wurde der Indikator in MQL4 geschrieben und als Erstes in der Code Base am 14.06.2016 veröffentlicht.
Abb. 1. Der Indikator Harami_Alert auf dem Chart
Abb. 2. Harami_Alert. Alarmieren
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/22403

Der Indikator WPR_Histogram_Vol mit in den Eingabeparameter bestimmbarem Zeitrahmen.

Der Indikator kennzeichnet die Kerzen, die den TimeZonePivots-Kanal durchbrechen.

Williams’ Percent Range Oszillator dargestellt als farbiges Histogramm unter Verwendung der Volumina

Drei unabhängige Handelssysteme mit den Indikatoren BrainTrend_V2, AbsolutelyNoLagLWMA und X2MACandle innerhalb eines einzigen EA mit der Möglichkeit, das Volumen eines bevorstehenden Handels in Abhängigkeit von den Ergebnissen der vorherigen Positionen für dieses Handelssystem zu ändern.