JBrainTrend1Stop is een krachtige trendindicator die je voorziet van waarschuwingen, e-mails en push-notificaties.
In de nieuwste update van de indicator zijn enkele wijzigingen aangebracht in de code om de waarschuwingen, e-mailberichten en push-notificaties te implementeren:
- Nieuwe invoerparameters toegevoegd:
input uint NumberofBar=1;//Aantal bars voor het signaal input bool SoundON=true; //Waarschuwingen inschakelen input uint NumberofAlerts=2;//Aantal waarschuwingen input bool EMailON=false; //E-mail voor signalen inschakelen input bool PushON=false; //Push-notificaties inschakelen
- Drie nieuwe functies toegevoegd aan het einde van de indicatorcode: BuySignal(), SellSignal() en GetStringTimeframe():
//+------------------------------------------------------------------+
//| Functie voor koop signaal |
//+------------------------------------------------------------------+
void BuySignal(string SignalSirname, // Tekst van de indicatornaam voor e-mail en pushberichten
double &BuyArrow[], // Indicatorbuffer met signalen voor een opwaartse trend
double &SellArrow[], // Indicatorbuffer met signalen voor een neerwaartse trend
const int Rates_total, // Huidig aantal bars
const int Prev_calculated, // Aantal bars op de vorige tick
const double &Close[], // Sluitprijs
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("KOOP signaal \n Ask=",Ask,"\n Bid=",Bid,"\n currtime=",text,"\n Symbool=",Symbol()," Periode=",sPeriod);
if(EMailON) SendMail(SignalSirname+": KOOP signaal waarschuwing","KOOP signaal bij Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbool="+Symbol()+" Periode="+sPeriod);
if(PushON) SendNotification(SignalSirname+": KOOP signaal bij Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbool="+Symbol()+" Periode="+sPeriod);
}
//---
}
//+------------------------------------------------------------------+
//| Functie voor verkoop signaal |
//+------------------------------------------------------------------+
void SellSignal(string SignalSirname, // Tekst van de indicatornaam voor e-mail en pushberichten
double &SellArrow[], // Indicatorbuffer met signalen voor een neerwaartse trend
double &BuyArrow[], // Indicatorbuffer met signalen voor een opwaartse trend
const int Rates_total, // Huidig aantal bars
const int Prev_calculated, // Aantal bars op de vorige tick
const double &Close[], // Sluitprijs
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("VERKOOP signaal \n Ask=",Ask,"\n Bid=",Bid,"\n currtime=",text,"\n Symbool=",Symbol()," Periode=",sPeriod);
if(EMailON) SendMail(SignalSirname+": VERKOOP signaal waarschuwing","VERKOOP signaal bij Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbool="+Symbol()+" Periode="+sPeriod);
if(PushON) SendNotification(SignalSirname+": VERKOOP signaal bij Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbool="+Symbol()+" Periode="+sPeriod);
}
//---
}
//+------------------------------------------------------------------+
//| De tijdseenheid als string krijgen |
//+------------------------------------------------------------------+
string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
{
//----
return(StringSubstr(EnumToString(timeframe),7,-1));
//----
} - Een paar aanroepen van de BuySignal() en SellSignal() functies toegevoegd na de indicatorberekeningen in het OnCalculate() blok:
//---
BuySignal("JBrainTrend1Stop_Alert",BuyStopBuffer,SellStopBuffer,rates_total,prev_calculated,close,spread);
SellSignal("JBrainTrend1Stop_Alert",SellStopBuffer,BuyStopBuffer,rates_total,prev_calculated,close,spread);
//---
Hierbij zijn BuyStopBuffer en SellStopBuffer de namen van de indicatorbuffers voor het opslaan van opwaartse en neerwaartse trendsignalen (stoplijnen voor longs en shorts). Een waarde van nul of EMPTY_VALUE moet aanwezig zijn in de indicatorbuffers als er geen geschikte trend is.
Het is de bedoeling dat er slechts één aanroep van de BuySignal() en SellSignal() functies wordt gebruikt in het OnCalculate() blok van de indicatorcode.
Plaats het gecompileerde bestand van de indicator JMA.mq5 in de map MQL5\Indicators.

Fig.1. JBrainTrend1Stop_Alert indicator op de grafiek

Fig.2. JBrainTrend1Stop_Alert indicator. Waarschuwingen genereren
Reactie 0