bool alerted=false; //alerted is set to false
if(IsNewBar()) alerted=false; //alerted is still set to false
if(!alerted) //This will always be true
alerted=true; //alerted is set to true, but next tick will be set to false again
return(rates_total);
}
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Hi,
I try to learn some coding. I try to make a TDI indicator with different alerts. Als I want that those alerts only will be send and the beginning of a new candle.
When for example there is an TDI crossover red over green (scalping alert) I got an alert and everything works fine.
But when I have another chart with the same indicator but on this chart I've got an crossover red over green alert (scalping alert) AND another alert for example green over red and yellow (active alert) (seperate alerts) then the alert repeats itself over and over again.
So when a chart has only 1 alert, it doesn't repeat.
datetime now;
bool alerted = false;
if (IsNewBar()) alerted = false;
if (!alerted)
if (Scalping_Alert)
{
int whichBar=1;
if (alertsOnCurrent) whichBar = 0;
if (!Gyppy_3_over_15_filter)
if (MaBuf[whichBar]>MbBuf[whichBar]&& MaBuf[whichBar+1]<MbBuf[whichBar+1])
{
doAlert(whichBar,"Scalping Alert Long");
}
if (MaBuf[whichBar]<MbBuf[whichBar]&& MaBuf[whichBar+1]>MbBuf[whichBar+1])
{
doAlert(whichBar,"Scalping Alert Short");
}
if (Gyppy_3_over_15_filter)
if (MaBuf[whichBar]>MbBuf[whichBar]&&(ema3>ema15) && MaBuf[whichBar+1]<MbBuf[whichBar+1])
{
doAlert(whichBar,"Scalping Alert Long");
}
if (MaBuf[whichBar]<MbBuf[whichBar]&&(ema3<ema15) && MaBuf[whichBar+1]>MbBuf[whichBar+1])
{
doAlert(whichBar,"Scalping Alert Short");
}
}
if (Active_Alert)
{
int whichBar=1;
if (alertsOnCurrent) whichBar = 0;
if (!Gyppy_3_over_15_filter)
if (MaBuf[whichBar]>MbBuf[whichBar]&&MbBuf[whichBar]>MdZone[whichBar] && MaBuf[whichBar+1]<MbBuf[whichBar+1])
{
doAlert(whichBar,"Active Alert Long");
}
if (MaBuf[whichBar]<MbBuf[whichBar]&&MbBuf[whichBar]<MdZone[whichBar] && MaBuf[whichBar+1]>MbBuf[whichBar+1])
{
doAlert(whichBar,"Active Alert Short");
}
if (Gyppy_3_over_15_filter)
if (MaBuf[whichBar]>MbBuf[whichBar]&&MbBuf[whichBar]>MdZone[whichBar]&&(ema3>ema15) && MaBuf[whichBar+1]<MbBuf[whichBar+1])
{
doAlert(whichBar,"Active Alert Long");
}
if (MaBuf[whichBar]<MbBuf[whichBar]&&MbBuf[whichBar]<MdZone[whichBar]&&(ema3<ema15) && MaBuf[whichBar+1]>MbBuf[whichBar+1])
{
doAlert(whichBar,"Active Alert Short");
}
}
alerted = true;
return(rates_total);
}