That's hard to read, but are you updating tickCount?
if( inside==1 && Low[1]>=Low[2] && High[1]<=High[2] ){
while( inside_once_fired < snooze ){
PlaySound(inside_once_alarm);
inside_once_fired++;
while(GetTickCount() < tickCount + 1000) {}
}
}
hope this looks better
while( inside_once_fired < snooze ){
PlaySound(inside_once_alarm);
inside_once_fired++;
while(GetTickCount() < tickCount + 1000) {}
}
}
hope this looks better
You keep referencing it later to see if that amount of time has passed. but you never "reset the timer"
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
the code below suppose to sound the alarm once an inside bar is formed and suppose to sound it 5 times, but it only sounds it once, can someone please look at it and suggest a fix.
thanks a lot
//+------------------------------------------------------------------+
//| alerts.mq4 |
//| Copyright © 2007, MetaQuotes Software Corp. |
//| https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property indicator_chart_window
//---- input parameters
extern int inside=1;//1 once inside, 2 twice inside, else unArmed.
extern int out_direction=2; //1 out_up, -1 out_down, 0 either, else unArmed.
int snooze = 5;
int inside_once_fired = 0;
string inside_once_alarm = "insideOnce.wav";
int inside_twice_fired = 0;
string inside_twice_alarm = "insideTwice.wav";
string out_up_alert = "outUp.wav";
int out_up_fired = 0;
string out_down_alert = "outDown.wav";
int out_down_fired = 0;
string out_bar = "outBar.wav";
int out_fired = 0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int tickCount = GetTickCount();
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return (-1);
if(counted_bars > 0) counted_bars--; //last bar recounted
int i;
int shift = Bars - counted_bars - 1; // initially 2408, then 1, once closed it becomes 2, once a tick is received it turns 1
Comment(inside_once_fired+" "+shift);
if(shift >= 2){
for(i = shift; i > 1; i--)
{
if( inside==1 && Low[1]>=Low[2] && High[1]<=High[2] ){while( inside_once_fired < snooze ){PlaySound(inside_once_alarm); inside_once_fired++; while(GetTickCount() < tickCount + 1000) {}} }
else if( inside==2 && Low[1]>=Low[2] && High[1]<=High[2] && Low[2]>=Low[3] && High[2]<=High[3] ){while( inside_twice_fired < snooze ){ PlaySound(inside_twice_alarm); inside_twice_fired++; while(GetTickCount() < tickCount + 1000) {}} }
}
}
else if(shift == 1){
if(out_direction == 1 && Low[0] < Low[1] && Bid > High[1])while( out_up_fired < snooze ){PlaySound(out_up_alert);out_up_fired++; while(GetTickCount() < tickCount + 1000) {}}
else if( out_direction == -1 && High[0] < High[1] && Bid < Low[1]) while( out_down_fired < snooze ){PlaySound(out_down_alert);out_down_fired++; while(GetTickCount() < tickCount + 1000) {}}
else if( out_direction == 0 && ( (Low[0] < Low[1] && Bid > High[1])|| (High[0] > High[1] && Bid < Low[1]))) while( out_fired < snooze ){PlaySound(out_bar);out_fired++; while(GetTickCount() < tickCount + 1000) {}}
}
//----
return(0);
}
//+------------------------------------------------------------------+