I don't know. I would write the software for this job myself, using Java (I use Netbeans as IDE on an Ubuntu Linux computer). It is not that hard if you already have some experience in using IB's API.
Step 1: connect to IB
Step 2: get a list of all contract codes for the Dow futures contracts, including expired contracts.
Step 3: for each contract download the entire historical data and save to file.
Step 4: get a list of all contract codes for the S&P 500 futures contracts, including expired contracts.
Step 5: for each contract download the entire historical data and save to file.
Step 6. disconnect from IB.
I'm not sure if the download for one contract can be done in one step, or that the amount of data is too much and that it has to be split up in a few separate downloads.
This is what I ended up doing. Thanks for justifying it for me
