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
JBrainTrend1Stop_Alert - Indikator für den MetaTrader 5
- Ansichten:
- 894
- Rating:
- Veröffentlicht:
- 2017.02.08 16:30
- Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Der JBrainTrend1Stop Trendindikator. Sendet Alerts, E-Mails und Push-Benachrichtigungen an Smartphone.
Für das Senden von Alerts, E-Mails und Push-Benachrichtigungen wurden im Code des Indikators die folgenden Änderungen vorgenommen:
- Es wurden neue Eingabevariablen den Eingabeparametern hinzugefügt
input uint NumberofBar=1;//Balkennummer für das Senden eines Signals input bool SoundON=true; //Aktivieren von Alerts input uint NumberofAlerts=2;//Anzahl von Alerts input bool EMailON=false; //Das Senden des Signals per E-Mail aktivieren input bool PushON=false; //Das Senden des Signals an Mobilgeräte aktivieren
- Es wurden drei neue Funktionen BuySignal(), SellSignal() und GetStringTimeframe() am Ende des Codes hinzugefügt//+------------------------------------------------------------------+
//| Buy signal function |
//+------------------------------------------------------------------+
void BuySignal(string SignalSirname, // Text des Namens des Indikators für E-Mails und Push-Benachrichtigungen
double &BuyArrow[], // Puffer des Indikators mit Signalen für ein Aufwärtstrend
double &SellArrow[], // Puffer des Indikators mit Signalen für ein Abwärtstrend
const int Rates_total, // aktuelle Anzahl der Balken
const int Prev_calculated, // Anzahl der Balken auf dem vorherigen Tick
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,index1;
if(SeriesTest)
{
index=int(NumberofBar);
index1=index+1;
}
else
{
index=Rates_total-int(NumberofBar)-1;
index1=index-1;
}
if(SellArrow[index1] && SellArrow[index1]!=EMPTY_VALUE && BuyArrow[index] && 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+=_Point*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, // Text des Namens des Indikators für E-Mails und Push-Benachrichtigungen
double &SellArrow[], // Puffer des Indikators mit Signalen für ein Abwärtstrend
double &BuyArrow[], // Puffer des Indikators mit Signalen für ein Aufwärtstrend
const int Rates_total, // aktuelle Anzahl der Balken
const int Prev_calculated, // Anzahl der Balken auf dem vorherigen Tick
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,index1;
if(SeriesTest)
{
index=int(NumberofBar);
index1=index+1;
}
else
{
index=Rates_total-int(NumberofBar)-1;
index1=index-1;
}
if(BuyArrow[index1] && BuyArrow[index1]!=EMPTY_VALUE && SellArrow[index] && 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+=_Point*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);
}
//---
}
//+------------------------------------------------------------------+
//| Erhalten der Timeframe als String |
//+------------------------------------------------------------------+
string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
{
//----
return(StringSubstr(EnumToString(timeframe),7,-1));
//----
} - Es wurden einige Aufrufe von BuySignal() und SellSignal() in den OnCalculate() Block nach den Berechnungsschleifen hinuzugefügt //---
BuySignal("JBrainTrend1Stop_Alert",BuyStopBuffer,SellStopBuffer,rates_total,prev_calculated,close,spread);
SellSignal("JBrainTrend1Stop_Alert",SellStopBuffer,BuyStopBuffer,rates_total,prev_calculated,close,spread);
//---
wobei BuyStopBuffer und SellStopBuffer - Namen der Puffer des Indikators für das Speichern von Signalen der Ab- und Aufwärtssignalen sind (Stop Ebenen für Long- und Short-Positionen). Als leere Werte müssen in den Puffern entweder Nulls oder EMPTY_VALUE stehen.
Es wird angenommen, dass der Aufruf der BuySignal() und SellSignal() Funktionen im OnCalculate() Block nur einmal im Code des Indikators verwendet wird.
Der Indikator benötigt die kompilierte Datei JMA.mq5. Kopieren Sie sie in den Ordner MQL5\Indicators.
Abb.1. Der JBrainTrend1Stop_Alert Indikator auf dem Chart
Abb.2. Der JBrainTrend1Stop_Alert Indikator auf dem Chart. Das Senden eines Alerts
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/16895
Das Exp_JBrainTrend1Stop_ReOpen Handelssystem basierend auf der Änderung der Farbe des JBrainTrend1Stop Indikators mit dem Hinzufügen von Positionen in Trendrichtung.
DoubleUp с изгибомBasiert auf dem Vergleich von den zwei Indikatoren: iCCI und iMACD.
Der XMA_BBxATR_Cloud Indikator mit der Option, Zeitrahmen in den Eingabeparametern auszuwählen.
VR---SETKA---3VR---SETKA---3 - ein Expert Advisor für MetaTrader 5. Die Fortsetzung von VR---SETKA. Der EA basiert auf dem Martingale Grundsatz. Gitter. Martingale. Nur für Hedgekonten.