Question on IsStopped()?

[Deleted]  

Hi

I try to put a small looping rountine into my EA, below is the testing code

int start()
{
//----

while(IsStopped() == false)
{
Print("1");
Print("2");
Print("3");

Sleep(5000);

}

//----
return(0);
}

My problem is IsStopped is always false even I deactivate the EA from the chart, I still can see the Print() function are running continuously . Even though the MQL4 help topic mentions that the IsStopeed() returns TRUE if the program (an expert or a script) has been commanded to stop its operation, otherwise returns FALSE. But I can't see it work in my testing code.

Anyone knows what could be wrong

Best Regards

Tom

[Deleted]  
well..I cannot imagine that this code causes trouble. I mean, I don't know why you use Sleep()...and an infinite loop in an EA but hey, you might need it. I still cannot reproduce the error you get seeing the Print() function running even though you stopped the expert.
[Deleted]  

Hi Tradegiel

1. The sleep here is try to run the logic that I put inside the while loop in a fix interval, I need it is because EA is run only when there is new tick. For some reason I need to run some logic regularly .

2. Did u mean that when you stopped the EA ( here I mean you press the Expert Advisor button from the top menu bar, the smiley face of the EA becomes a Cross), then, you no longer see the print function running?

Thanks for your helping

Best Regards

Tom

 

"I cannot imagine that this code causes trouble. I mean, I don't know why you use Sleep()..."

...

Sleep() gives processing time to other code..

Endless loop with no Sleep() = 100% cpu, and MT4 "locks up".

Run the code above, omitting the Sleep().

 

phy,

MT4 "locks up"

? is there interrupt hot key combination that terminal can see...?

eg: CTRL-BREAK or CTRL-C

have always wondered... thanks

 

None that I know of. If the X button to close the app doesn't work, kill terminal.exe with TaskManager.

Been there done that.

 

Yes, very un-graceful departure indeed. thanks

[Deleted]  

Hi Phy

If I have to remove the sleep() function inside the while loop, it will run continuously which defeat my purpose to run this loop in a fix interval.. What I don't understand here is the while statement should examine the IsStopped() to decide whether the loop should continue and I expect IsStopped() will return false when I deactivate the EA

Regards

Tom