How exactly does recalculation work in Back Testing?

 
After reading the article on Modes of Modeling ('Strategy Tester: Modes of Modeling during Testing') there's still several things which are not clear. Could somebody from the metatrader team explain please whether this is the expected behaviour of the tester:

I have the following problem - I am back-testing a EA on GBPUSD, H1 and H4 for the period:

01.Oct.2006-01.Jan.2007

I wait 10-15 minutes, check recalculate, run the test again and I get different results. Quite different. Why? I tried this with both Control Points and Every tick.

How can my test for Oct-Dec 2006 be affected by what happened on the market in February 2007?!? In the last 10 minutes?!?

Next question - some guy in another thread on this forum suggested that we need to get the data before the test, make sure Recalculate is OFF, then disconnect from the server (how? unplug your network cable?) and then test. That means that the tester will try to download new data from the server even when recalculate is OFF??? Well that's... bad. I thought writing programs which don't do what you tell them to do but what they "think" is best for you is a trade mark of Microsoft. .. How can this be a useful "feature"? It generates results which will be completely meaningless after about 15 minutes and does not inspire any confidence in the overall value of back-testing. Running the same EA on the same dates should produce the same result. Every time. Otherwise it's useless.

To summarize, my questions are:
1. Why doing a recalculate on a period which is way back in the past (e.g. my period of Oct-Dec 2006) can be affected by current market conditions when doing Every Tick and Ctrl.Pts testing and if it is not - please explain why selecting recalculate produces diferent results.
2. Also please explain whether it is true that you need to disconnect from the server if you want to get re-producable results when testing. And if yes - why is this considered a good feature.

thanks
4x4ever

P.S. I am using RSI(3) on the current tick which a pretty volatile indicator, but nevertheless it should generate the same results for the same input data. Because it does not it makes me think that either the input data is different (which is what I suggested above) or perhaps there is rounding errors in the implementation of the iRSI function or of the fractal interpolation code of the Tester.. .? I don't mind uploading my EA code here if you'd like to test, but it's sevral files (main EA file plus libraries) so wasn't sure if it's a good idea. Let me know if you need it.
 
4x4ever, I 'll try to help you.
Recalculating means that wil be make new fxt-file on the period and symbol you will back test. What version of MetaTrader are you using? Please , put the sources if possible.
Use a screenshots to describe any problem , very desirable. Correct my English on nessesary (I write without translation's soft).

Disconnecting from server before back-testing is not required.
 
If you ran a backtest on a timeframe on specific pair, just don't recalculate again, and you should be fine. You can check the fxt files, which the backtester uses in mt4/tester/history. These files will be the same until recalculated again. Offline mode gives you better protection against unwanted data, it is easier to use a different MT4 for offline backtesting, since you can close out possible data interferences this way. (Compile fxt files in an online terminal, and copying the fxt files to the offline one)
Note: compiling/recompiling the fxt file takes account/spread/swap data from real time market as default, which usually results in difference in the fxt file.

Otherwise make sure, your EA is well written, doesn't contain int, double misuses.

And I recommend using tick data, not simulated ticks from M1 data. Write to forexzap<at>gmail<dot>com if you are interested in this different topic.
 
Hi Rosh, Zap

For starters - here's a screen shot showing the tester recalculating periods, even though the "Recalculate" check-box is off. I assume that when it says "Collecting M..." - that's exactly what's happening? Recalculation? If not - please tell me what is the tester doing when it displays this message.




Second problem, which I just discovered - and this is more of a Tester UI problem but it's still pretty nasty in my opinion - the Tester changes the dates on you!!! I was running the tests for you guys, so that I can upload the reports to prove that the tester gives different results for the same period. I ran two reports ofr the period 2006.10.01 to 2007.01.01. Look at the screen shot below - all I did was change the Model from Control points to Every Tick - and look, the dates are changed from October to November and from Jan to Feb!!! I repeat: I did not touch the dates, as soon as I changed the Model the dates were also changed. This actually could be why I was getting very different results - if the Tester was silently changing my date periods and I wasn't paying attention it could be why. But the Tester shouldn't be doing this - silently changing the dates on you. I think every software QA will qualify this as a bug.



I attached the sources to this post, I will upload the reports in a few moments. Please email me or skype me if you need additional info about the expert, I'll be more than glad to provide whatever you need so we can solve this...
ilisten_to_jack at shaw dot ca, skype: forever4x
 
4x4ever:
Hi Rosh, Zap

For starters - here's a screen shot showing the tester recalculating periods, even though the "Recalculate" check-box is off. I assume that when it says "Collecting M..." - that's exactly what's happening? Recalculation? If not - please tell me what is the tester doing when it displays this message.




You have chosen type of modelling Every Tick - therefore the terminal tries подгрузить the latest data. Other question - whether it is necessary to do it if the period of testing is deeply in history. What algorithm here to use - it is difficult to tell.
 
Rosh! Come on! What's so difficult tell?? The tested period is H1 and the date range selected is one month and a half ago from today! What impact does today's tick data have on modelling the ticks for January? It happened appoximately 35 days * 24 hours = 840 H1 periods ago! The article on data modelling says that it will try to use the next 12 periods for interpolating the ticks within the candle. And that's 12 "least" periods (which means M1 in my case). Not 800 and not hours.

MT4 is an excellent platform, in many aspects probably the best one around but this is a very serious issue. You can't have the tester silently do random unlogical things (unlogical in my opinion of course but I think most EA programmers will agree with me that getting reproduce-able results in your testing is very important). If I record certain settings for my EA and I test and I record the result and then after a couple of hours I go back and test with the same parameters and I don't get the same results - I freak out. (s uma shoju). I start thinking that I accidentally changed something in my EA and introduced a bug, or that I somehow changed the input params or did not record them properly or something like that. And I waste time trying to find where did I screw up. When in fact I did not screw up - the tester gave me new fresh DIFFERENT data (thank you Tester, just what I needed - new fresh data from February for my October test...). Or chaneged the date period in the UI.

I don't know if you are associated with the company which created the Meta Trader, Rosh, and if you could have any say regarding which bugs are fixed and how fast. I hope you are and I hope that you agree that inconsistencies in the Tester should be fixed as soon as possible. The Tester is one of the best parts of MT4. Actually "not one of the best" - it is THE BEST. No other platform comes close (v podmiotki ne goditsia) to MT4 in terms of testing features. But all these little bugs and inconsistencies undermine people's confidence in the Tester. And without the tester and the EA's MT4 is just another nice looking graphical software for tech. analysis, like hundreds of other similar softwares available from various brokers. I am telling you - because of all this crap I am paranoid now - I open every tab and every window and check all settings twice before I hit that Start button. And still I am not sure I can trust the result. I really hope these issues are resolved as soon as possible, hopefully in the next patch...
 
4x4ever:
Rosh! Come on! What's so difficult tell?? The tested period is H1 and the date range selected is one month and a half ago from today! What impact does today's tick data have on modelling the ticks for January? It happened appoximately 35 days * 24 hours = 840 H1 periods ago! The article on data modelling says that it will try to use the next 12 periods for interpolating the ticks within the candle. And that's 12 "least" periods (which means M1 in my case). Not 800 and not hours.

This situation will be soon corrected.
 
4x4ever:


I don't know if you are associated with the company which created the Meta Trader, Rosh, and if you could have any say regarding which bugs are fixed and how fast.

Yes, I'm working in MetaQuotes Software now.
 
"На всякий пожарный" сообщаю мое мыло rosh at metaquotes to4ka ru :)
Best regards.
 
Rosh:
This situation will be soon corrected.

Rosh wrote:

"На всякий пожарный" сообщаю мое мыло rosh at metaquotes to4ka ru :)
Best regards.

Thanks! This is the best reply I could hope for!

Also - please correct the problem with UI changing the From-To date periods when other setings are changed. I actually posted a new thread with suggestions for fixes in the Tester, please take a look. And thx for "mylo" :)
 
Unfortunately, it's impossible. Values of From-To date periods gets form fxt-file you made sooner. Be close.
Reason: