How To Setup Mt4 Expert Advisor Simulation?

May 3, 2023 0 Comments

Normal 0 false false false MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:”Table Normal”; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:””; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:”Times New Roman”; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;}

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

Source http://www.bestforexranking.com