There are a few factors that you have to consider when setting up the Expert Advisor (EA) to run on your MT4 simulator. With proper setup and configuration, the simulated result will yield positive result when run the EA on live account.

Below are some configurations for your consideration.

1) The choice of simulation chart period. The commonly used charting period is 1 minute chart (M1), 5 minutes chart (M5), 15 minutes chart (M15), 1 hour chart (H1), 4 hour chart (H4) and 1 day chart (D1). From my experiences, simulating with M1 period result will produce accurate results from your EA. Any chart time frame greater then 1M, will result in frame stepping by the simulator. The simulator will step thru the time frame and aggregate the closet to your number, which can cause false breakout and unrealistic result.

2) Use fully downloaded M1 result from a data server. Many broker nowadays support client to backwards download data from now to 2002 (at least last 10 years of data). Once full M1 data downloaded, you can use period converter to convert to M5, M15, H1, H4 and D1 database. This will complete the database that is used by simulator when called to run back testing for your EA.

3) Most EA are ready to be used for live and demo trading. However, if you are modifying a EA that is meant for live trading, you need to include below 3lines of code to let it run in back testing mode by the simulator.

line1: static datetime nextRund
line2: if( nextRund > TimeCurrent() ) return(0);
line3: nextRund = TimeCurrent() + 30;

The above codes with delay your program by 30 seconds before it proceed to executed the next program. You cannot use while loop or jump program as it is non static and will stop the moment the program executed the last line of code. The above actually set a static variable and this variable is match with the time in the PC. As this variable is static, it will stay in memory when your program exist and execute again. The 30 is default in terms of seconds. This may be difficult at first, but after some trial and error, you will get use to it and use different time seconds to your advantage.

4) Delay is non static but it can be use to temporarily stop the program while running other function. This is extremely using if you are running multiple EA and executing on a single data server. By setting different delays, your program will execute at different time thus not congesting the order send to your server. This act as multitasking your order and does average your CPU utilisation over time.

The above are some factor to consider. Thank you

Author's Bio: 

I support green products and actively involved in recycling movement. Currently am blogging, affiliate marketing, selling holiday gifts online and trading Forex to earn extra income to support family on top of having a full-time job.

I am currently hosting a Forex review website at and also sharing Forex news, broker, trades and charting information. Last year, I started affiliate marketing and setup which features free tools and tips. My recent involvement is selling holiday gifts which provide world wide delivery at my personal blog