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
iStochKomposterAlert - Indikator für den MetaTrader 5
- Ansichten:
- 959
- Rating:
- Veröffentlicht:
- 2016.10.05 14:13
- Aktualisiert:
- 2016.11.22 07:34
- Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Der echte Autor:
komposter
Der Semaphore Pfeil-Signalindikator unter der Verwendung des Verlassen aus den Überverkaufsbereichen, Überkaufsbereichen des klassischen Stochastik-Oszillators mit der Eingabe der Alerts, der Sendung der Emailnachrichten und der push-Nachrichten aufs Smartphon.
Für die Eingabe der Alerts, Emailnachrichten und push-Nachrichten aufs Smartphon im Code des Indikators wurden die folgenden Änderungen gemacht:
- Zu den Eingangsparametern des Indikators wurden neue Eingangsvariable geschrieben
input uint NumberofBar=1;//Die Nummer der Bar für die Sendung des Signals input bool SoundON=true; //Die Erlaubnis der Alerts input uint NumberofAlerts=2;//Die Anzahl der Alerts input bool EMailON=false; //Die Erlaubnis der Email-Sendung des Signals input bool PushON=false; //Die Erlaubnis der Sendung des Signals aufs Handy
- Es wurden drei neue Funktionen BuySignal(), SellSignal() und GetStringTimeframe() zum Ende des Indikatorscodes hinzugefügt
//+------------------------------------------------------------------+ //| Buy signal function | //+------------------------------------------------------------------+ void BuySignal(string SignalSirname, // Der Text des Indikatorsnamens für die Emailnachrichten und Puch-Signale double &BuyArrow[], // Der Indikatorpuffer mit Signalen für den Kauf const int Rates_total, // Die aktuelle Anzahl der Bars const int Prev_calculated, // Die Anzahl der Bars beim vorherigen Tick const double &Close[], // Der Exit-Preis const int &Spread[]) // Spreed { //--- 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); } //--- } //+------------------------------------------------------------------+ //| Sell signal function | //+------------------------------------------------------------------+ void SellSignal(string SignalSirname, // Der Text des Indikatorsnamens für die Emailnachrichten und Puch-Signale double &SellArrow[], // Der Indikatorpuffer mit Signalen für den Kauf const int Rates_total, // Die aktuelle Anzahl der Bars const int Prev_calculated, // Die Anzahl der Bars beim vorherigen Tick const double &Close[], // Der Exit-Preis const int &Spread[]) // Spreed { //--- 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); } //--- } //+------------------------------------------------------------------+ //| Die Erhaltung der Timeframe in Form eines Zeiles | //+------------------------------------------------------------------+ string GetStringTimeframe(ENUM_TIMEFRAMES timeframe) { //---- return(StringSubstr(EnumToString(timeframe),7,-1)); //---- }
- Zum Block OnCalculate() nach den Loops der Berechnungen des Indikators wurde ein paar Aufrufe zu den Funktionen BuySignal() und SellSignal() hinzugefügt
BuySignal("iWPRSign",BuyBuffer,rates_total,prev_calculated,close,spread); SellSignal("iWPRSign",SellBuffer,rates_total,prev_calculated,close,spread);
Wo BuyBuffer und SellBuffer — sind die Namen der Indikatorpuffer für die Speicherung der Signale zum Kauf und Verkauf. In Indikatorpuffern als leere Werte müssen entweder Null oder EMPTY_VALUE in Vorhanden sein.
Es wird angenommen, dass im Indikatorscode im Block OnCalculate() nur ein Aufruf zu Funktionen BuySignal() und SellSignal() verwendet wird.
in Abb.1. Der Indikator iStochKomposterAlert im Chart
in Abb.2. Der Indikator iStochKomposterAlert. Die Eingabe des Alerts
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/15850
Der EA arbeitet sowohl im normalen Modus mit einer einzigen Position, auch mit im Modus HEDGE mit mehreren offenen Positionen.
Volume_Weighted_MA_CloudDer gleitende Mittelwert Volume_Weighted_MA mit der farbigen Hintergrund-Ausfüllung des Chartsraums.
Der Indikator Volume_Weighted_MA_Cloud mit der Veränderungsmöglichkeit des Timeframes des Indikators in den Eingangsparametern.
Exp_Volume_Weighted_MA_StDevDas Handelssystem, welches aufgrund der Signale des Indikators Volume_Weighted_MA_StDev gebaut wurde.