But I had to start somewhere...
I also came to the conclusion that if I wanted to trust the results of my testing, that means striving for the absolute best testing environment possible, and even the best has to be scrutinized.
After reading around the net on the subject of backtesting, I found a lot of sites and forums suggesting that the default historical data available in MT4 was junk, especially if you're testing a strategy that works on lower timeframes or holds tight stops. It made sense once I thought about it, tick level historical data is very bandwidth intensive to distribute out, and takes a long time to download, so what MetaQuotes does in MT4's history center is provide down to 1M period data and 'tick volume' numbers for the period. If the tick volume period is high, then it randomly makes the price jump around within that period's range as if there were many ticks. It doesn't actually follow the real market ticks and price changes that happened during that time.
So off I went to find proper tick data for my testing, leading me to two sources:
TrueFX has a section of their site where you can download CSVs of tick level data from Integral's generic feed. It only goes back to about 2009 (if I recall correctly) and it's broken up into one file per month, so this method is a bit of a headache, but it's best if your trading on a broker who uses their price feed.
People have been having issues with registering on the TrueFX site, so I'll take advantage of their lazy IT people and post the direct download links:http://truefx.com/dev/data/
Again, you have to combine the files since they are broken up into months.
So first extract the files (they are large once extracted, expect to have about 2-3Gigs per symbol for 2-3 years of data.) Then, from Windows' command prompt we use the copy command to merge the extracted files:
copy USDJPY*.csv USDJPY.csv
This will work since it copies in numerical order (the dates in the file name) with the wildcard (*) in place.
You will end up with one big "USDJPY.csv" file, and if confident things went without a problem, you can delete the old zip and monthly csv files.
The Dukascopy option is a lot easier. Just sign up for a demo and once you're in JForex, there's a history center tab where you can download tick data to CSV. You'll have to set the date range desired, the period to "ticks", and such, but it will product a single file that's ready to be converted to MT4. While easier, this might not be best if you trade with brokers that have vastly different spreads than Dukas.
The next step is taking the monolithic CSV file and turning it into something MetaTrader can use. This part is a bit more complicated and would take up a few posts in itself.. so I'm going to skip writing about it and instead point you in the right direction:
Google "eareview convert-tick-data"
The first result is what you want. I don't want to link there directly since the site is full of affiliate links to commercial EAs.
Basically, you want to follow the steps on that site for the CSV2FXT script.
Lastly, on the subject of tick data, I'd suggest installed a separate instance of MT4 to a different folder for testing use. That way you can mess up all sorts of stuff without botching your regular installation setup. Plus, once setup, you'll be doing most of the backtesting offline (so metatrader doesn't add it's own history to your collected data.)
All this might be boring to some, but it's part of the process, and the difference between bad historical data and tick data could mean overlooking a good strategy or going forward with a bad strategy you think is good.
So moving on...